Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=36362
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 23 Jun 2011 15:51:55 +0000 (15:51 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 23 Jun 2011 15:51:55 +0000 (15:51 +0000)
Handle the case where tag file attributes (which can use any valid XML name) have a name which is not a Java identifier.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1138950 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/jasper/compiler/Generator.java
webapps/docs/changelog.xml

index 998dcca..6ddfbc6 100644 (file)
@@ -3675,13 +3675,16 @@ class Generator {
                 out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
                 out.print(" ");
             }
-            out.print(attrInfos[i].getName());
+            out.print(JspUtil.makeJavaIdentifier(attrInfos[i].getName()));
             out.println(";");
         }
         out.println();
 
         // Define attribute getter and setter methods
         for (int i = 0; i < attrInfos.length; i++) {
+            String javaName =
+                JspUtil.makeJavaIdentifier(attrInfos[i].getName());
+
             // getter method
             out.printin("public ");
             if (attrInfos[i].isFragment()) {
@@ -3694,7 +3697,7 @@ class Generator {
             out.println(" {");
             out.pushIndent();
             out.printin("return this.");
-            out.print(attrInfos[i].getName());
+            out.print(javaName);
             out.println(";");
             out.popIndent();
             out.printil("}");
@@ -3710,20 +3713,20 @@ class Generator {
                 out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
                 out.print(" ");
             }
-            out.print(attrInfos[i].getName());
+            out.print(javaName);
             out.println(") {");
             out.pushIndent();
             out.printin("this.");
-            out.print(attrInfos[i].getName());
+            out.print(javaName);
             out.print(" = ");
-            out.print(attrInfos[i].getName());
+            out.print(javaName);
             out.println(";");
             if (ctxt.isTagFile()) {
                 // Tag files should also set jspContext attributes
                 out.printin("jspContext.setAttribute(\"");
                 out.print(attrInfos[i].getName());
                 out.print("\", ");
-                out.print(attrInfos[i].getName());
+                out.print(javaName);
                 out.println(");");
             }
             out.popIndent();
index b064305..d64e56b 100644 (file)
         If you later downgrade from 7.0.17 or later to 7.0.16 or earlier, you
         must empty the work directory as part of the downgrade process. (markt)
       </fix>
+      <fix>
+        <bug>36362</bug>: Handle the case where tag file attributes (which can
+        use any valid XML name) have a name which is a Java identifier. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Cluster">