- Better impl of JSP id consumer: actually this was implemented for regular custom...
authorremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 31 Oct 2006 21:47:45 +0000 (21:47 +0000)
committerremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 31 Oct 2006 21:47:45 +0000 (21:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@469669 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/jasper/compiler/Generator.java
java/org/apache/jasper/compiler/Node.java

index 457188e..9a2dc1c 100644 (file)
@@ -35,7 +35,6 @@ import java.util.Vector;
 
 import javax.el.MethodExpression;
 import javax.el.ValueExpression;
-import javax.servlet.jsp.tagext.JspIdConsumer;
 import javax.servlet.jsp.tagext.TagAttributeInfo;
 import javax.servlet.jsp.tagext.TagInfo;
 import javax.servlet.jsp.tagext.TagVariableInfo;
@@ -2152,7 +2151,7 @@ class Generator {
             out.print(" ");
             out.print(tagHandlerVar);
             out.print(" = ");
-            if (isPoolingEnabled && !(JspIdConsumer.class.isAssignableFrom(tagHandlerClass))) {
+            if (isPoolingEnabled && !(n.implementsJspIdConsumer())) {
                 out.print("(");
                 out.print(tagHandlerClassName);
                 out.print(") ");
@@ -2306,7 +2305,7 @@ class Generator {
                     .println(".doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {");
             out.pushIndent();
             if (!n.implementsTryCatchFinally()) {
-                if (isPoolingEnabled && !(JspIdConsumer.class.isAssignableFrom(n.getTagHandlerClass()))) {
+                if (isPoolingEnabled && !(n.implementsJspIdConsumer())) {
                     out.printin(n.getTagHandlerPoolName());
                     out.print(".reuse(");
                     out.print(tagHandlerVar);
@@ -2434,6 +2433,14 @@ class Generator {
             
             generateSetters(n, tagHandlerVar, handlerInfo, true);
 
+            // JspIdConsumer (after context has been set)
+            if (n.implementsJspIdConsumer()) {
+                out.printin(tagHandlerVar);
+                out.print(".setJspId(\"");
+                out.print(createJspId());
+                out.println("\");");
+            }
+
             // Set the body
             if (findJspBody(n) == null) {
                 /*
@@ -2926,14 +2933,6 @@ class Generator {
                 TagHandlerInfo handlerInfo, boolean simpleTag)
                 throws JasperException {
 
-            // Set the id of the tag
-            if (JspIdConsumer.class.isAssignableFrom(n.getTagHandlerClass())) {
-                out.printin(tagHandlerVar);
-                out.print(".setJspId(\"");
-                out.print(n.getId());
-                out.println("\");");
-            }
-            
             // Set context
             if (simpleTag) {
                 // Generate alias map
index 6c54089..f80a271 100644 (file)
@@ -1354,8 +1354,6 @@ abstract class Node implements TagConstants {
      */
     public static class CustomTag extends Node {
 
-        private static int id = 0;
-        
         private String uri;
 
         private String prefix;
@@ -1626,10 +1624,6 @@ abstract class Node implements TagConstants {
             return this.numCount;
         }
 
-        public String getId() {
-            return "_" + (++id);
-        }
-        
         public void setScriptingVars(Vector vec, int scope) {
             switch (scope) {
             case VariableInfo.AT_BEGIN: