You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by lu...@apache.org on 2003/03/29 00:15:46 UTC

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Compiler.java Generator.java TagFileProcessor.java

luehe       2003/03/28 15:15:46

  Modified:    jasper2/src/share/org/apache/jasper/compiler Compiler.java
                        Generator.java TagFileProcessor.java
  Log:
  Implemented latest JSP 2.0 spec changes regarding dynamic attributes
  in Tag Files:
  
  - Dynamic attributes are exposed in a Map named for the value of the
    "dynamic-attributes" tag-directive attribute
  
  - The Map contains each dynamic attribute name as the key and the
    dynamic attribute value as the corresponding value.  Only dynamic
    attributes with no uri are to be present in the Map; all other
    dynamic attributes are ignored.
  
  Revision  Changes    Path
  1.62      +1 -0      jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java
  
  Index: Compiler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -r1.61 -r1.62
  --- Compiler.java	28 Mar 2003 02:13:02 -0000	1.61
  +++ Compiler.java	28 Mar 2003 23:15:45 -0000	1.62
  @@ -196,6 +196,7 @@
           throws Exception
       {
           long t1=System.currentTimeMillis();
  +
   	// Setup page info area
   	pageInfo = new PageInfo(new BeanRepository(ctxt.getClassLoader(),
   						   errDispatcher));
  
  
  
  1.177     +18 -22    jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.176
  retrieving revision 1.177
  diff -u -r1.176 -r1.177
  --- Generator.java	24 Mar 2003 17:35:26 -0000	1.176
  +++ Generator.java	28 Mar 2003 23:15:45 -0000	1.177
  @@ -2880,7 +2880,7 @@
               gen.compileTagHandlerPoolList(page);
           }
   	if (gen.ctxt.isTagFile()) {
  -	    TagInfo tagInfo = gen.ctxt.getTagInfo();
  +	    JasperTagInfo tagInfo = (JasperTagInfo) gen.ctxt.getTagInfo();
   	    gen.generateTagHandlerPreamble(tagInfo, page);
   
   	    if (gen.ctxt.isPrototypeMode()) {
  @@ -2913,7 +2913,8 @@
       /*
        * Generates tag handler preamble.
        */
  -    private void generateTagHandlerPreamble(TagInfo tagInfo, Node.Nodes tag )
  +    private void generateTagHandlerPreamble(JasperTagInfo tagInfo,
  +					    Node.Nodes tag )
           throws JasperException 
       {
   
  @@ -3063,7 +3064,7 @@
   	        throws JasperException {
   
   	if (tagInfo.hasDynamicAttributes()) {
  -	    out.printil("private java.util.HashMap dynamicAttrs = new java.util.HashMap();");
  +	    out.printil("private java.util.HashMap _jspx_dynamic_attrs = new java.util.HashMap();");
   	}
   
   	// Declare attributes
  @@ -3218,15 +3219,13 @@
       public void generateSetDynamicAttribute() {
           out.printil("public void setDynamicAttribute(String uri, String localName, Object value) throws javax.servlet.jsp.JspException {");
   	out.pushIndent();
  -	out.printil("if (uri != null)");
  -	out.pushIndent();
  -	// XXX Specification still needs to clarify what the variable name
  -	// looks like. Assume <uri>_<localName> for now.
  -	out.printil("dynamicAttrs.put(uri + \"_\" + localName, value);");
  -	out.popIndent();
  -	out.printil("else");
  +	/* 
  +	 * According to the spec, only dynamic attributes with no uri are to
  +	 * be present in the Map; all other dynamic attributes are ignored.
  +	 */
  +	out.printil("if (uri == null)");
   	out.pushIndent();
  -	out.printil("dynamicAttrs.put(localName, value);");
  +	out.printil("_jspx_dynamic_attrs.put(localName, value);");
   	out.popIndent();
   	out.popIndent();
   	out.printil("}");
  @@ -3237,7 +3236,7 @@
        * Also, if the tag accepts dynamic attributes, a page-scoped variable
        * is made available for each dynamic attribute that was passed in.
        */
  -    private void generatePageScopedVariables(TagInfo tagInfo) {
  +    private void generatePageScopedVariables(JasperTagInfo tagInfo) {
   
   	// "normal" attributes
   	TagAttributeInfo[] attrInfos = tagInfo.getAttributes();
  @@ -3253,14 +3252,11 @@
   	    out.popIndent();
   	}
   
  -	// dynamic attributes
  +	// Expose the Map containing dynamic attributes as a page-scoped var
   	if (tagInfo.hasDynamicAttributes()) {
  -	    out.printil("for (java.util.Iterator i = dynamicAttrs.entrySet().iterator(); i.hasNext(); ) {");
  -	    out.pushIndent();
  -	    out.printil("java.util.Map.Entry e = (java.util.Map.Entry) i.next();");
  -	    out.printil("pageContext.setAttribute((String) e.getKey(), e.getValue());");
  -	    out.popIndent();
  -	    out.printil("}");
  +	    out.printin("pageContext.setAttribute(\"");
  +	    out.print(tagInfo.getDynamicAttributesMapName());
  +	    out.print("\", _jspx_dynamic_attrs);");
   	}
       }
   
  
  
  
  1.47      +5 -6      jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagFileProcessor.java
  
  Index: TagFileProcessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagFileProcessor.java,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- TagFileProcessor.java	28 Mar 2003 02:13:02 -0000	1.46
  +++ TagFileProcessor.java	28 Mar 2003 23:15:45 -0000	1.47
  @@ -134,7 +134,7 @@
           private String displayName = null;
           private String smallIcon = null;
           private String largeIcon = null;
  -        private boolean dynamicAttrs = false;
  +        private String dynamicAttrs;
           
           private Vector attributeVector;
           private Vector variableVector;
  @@ -164,8 +164,7 @@
                   err.jspError(n, "jsp.error.tagdirective.badbodycontent",
                                bodycontent);
               }
  -            dynamicAttrs = JspUtil.booleanValue(
  -	                    n.getAttributeValue("dynamic-attributes"));
  +            dynamicAttrs = n.getAttributeValue("dynamic-attributes");
               smallIcon = n.getAttributeValue("small-icon");
               largeIcon = n.getAttributeValue("large-icon");
               description = n.getAttributeValue("description");
  @@ -303,7 +302,7 @@
                   = new TagAttributeInfo[attributeVector.size()];
               attributeVector.copyInto(tagAttributeInfo);
   
  -            return new TagInfo(name,
  +            return new JasperTagInfo(name,
   			       tagClassName,
   			       bodycontent,
   			       description,
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org