Additional fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=36362 to addres...
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 28 Jun 2011 15:56:23 +0000 (15:56 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 28 Jun 2011 15:56:23 +0000 (15:56 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1140693 13f79535-47bb-0310-9956-ffa450edef68

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

index 6ddfbc6..075a6df 100644 (file)
@@ -3675,7 +3675,8 @@ class Generator {
                 out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
                 out.print(" ");
             }
-            out.print(JspUtil.makeJavaIdentifier(attrInfos[i].getName()));
+            out.print(JspUtil.makeJavaIdentifier(
+                    attrInfos[i].getName(), false));
             out.println(";");
         }
         out.println();
@@ -3683,7 +3684,7 @@ class Generator {
         // Define attribute getter and setter methods
         for (int i = 0; i < attrInfos.length; i++) {
             String javaName =
-                JspUtil.makeJavaIdentifier(attrInfos[i].getName());
+                JspUtil.makeJavaIdentifier(attrInfos[i].getName(), false);
 
             // getter method
             out.printin("public ");
index d7b171f..0fd2b88 100644 (file)
@@ -804,15 +804,29 @@ public class JspUtil {
      * @return Legal Java identifier corresponding to the given identifier
      */
     public static final String makeJavaIdentifier(String identifier) {
+        return makeJavaIdentifier(identifier, true);
+    }
+    
+    /**
+     * Converts the given identifier to a legal Java identifier.
+     * 
+     * @param identifier
+     *            Identifier to convert
+     * 
+     * @return Legal Java identifier corresponding to the given identifier
+     */
+    public static final String makeJavaIdentifier(String identifier,
+            boolean periodToUnderscore) {
         StringBuilder modifiedIdentifier = new StringBuilder(identifier.length());
         if (!Character.isJavaIdentifierStart(identifier.charAt(0))) {
             modifiedIdentifier.append('_');
         }
         for (int i = 0; i < identifier.length(); i++) {
             char ch = identifier.charAt(i);
-            if (Character.isJavaIdentifierPart(ch) && ch != '_') {
+            if (Character.isJavaIdentifierPart(ch) &&
+                    (ch != '_' || !periodToUnderscore)) {
                 modifiedIdentifier.append(ch);
-            } else if (ch == '.') {
+            } else if (ch == '.' && periodToUnderscore) {
                 modifiedIdentifier.append('_');
             } else {
                 modifiedIdentifier.append(mangleChar(ch));