Revision: 10533
Author:   [email protected]
Date:     Tue Aug 16 10:08:37 2011
Log:      Don't generate bad code for bad field names

Review at http://gwt-code-reviews.appspot.com/1528803

Review by: [email protected]
http://code.google.com/p/google-web-toolkit/source/detail?r=10533

Modified:
 /trunk/user/src/com/google/gwt/uibinder/rebind/FieldManager.java

=======================================
--- /trunk/user/src/com/google/gwt/uibinder/rebind/FieldManager.java Mon Aug 1 13:27:49 2011 +++ /trunk/user/src/com/google/gwt/uibinder/rebind/FieldManager.java Tue Aug 16 10:08:37 2011
@@ -21,8 +21,8 @@
 import com.google.gwt.core.ext.typeinfo.JType;
 import com.google.gwt.core.ext.typeinfo.TypeOracle;
 import com.google.gwt.uibinder.rebind.model.ImplicitCssResource;
-import com.google.gwt.uibinder.rebind.model.OwnerField;
 import com.google.gwt.uibinder.rebind.model.OwnerClass;
+import com.google.gwt.uibinder.rebind.model.OwnerField;

 import java.util.Arrays;
 import java.util.Collection;
@@ -31,6 +31,7 @@
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.Map;
+import java.util.regex.Pattern;

 /**
* This class handles all {@link FieldWriter} instances created for the current
@@ -53,6 +54,9 @@
     }
   };

+  private static final Pattern JAVA_IDENTIFIER =
+      Pattern.compile("[\\p{L}_$][\\p{L}\\p{N}_$]*");
+
   public static String getFieldBuilder(String fieldName) {
     return String.format("build_%s()", fieldName);
   }
@@ -60,8 +64,8 @@
   public static String getFieldGetter(String fieldName) {
     return String.format("get_%s()", fieldName);
   }
-
   private final TypeOracle types;
+
   private final MortalLogger logger;

   /**
@@ -342,6 +346,12 @@
       field.write(writer);
     }
   }
+
+ private void ensureValidity(String fieldName) throws UnableToCompleteException {
+    if (!JAVA_IDENTIFIER.matcher(fieldName).matches()) {
+      logger.die("Illegal field name \"%s\"", fieldName);
+    }
+  }

   /**
    * Gets the number of times a getter for the given field is called.
@@ -357,6 +367,7 @@

   private FieldWriter registerField(String fieldName, FieldWriter field)
       throws UnableToCompleteException {
+    ensureValidity(fieldName);
     requireUnique(fieldName);
     fieldsMap.put(fieldName, field);

@@ -368,7 +379,7 @@

     return field;
   }
-
+
private void requireUnique(String fieldName) throws UnableToCompleteException {
     if (fieldsMap.containsKey(fieldName)) {
       logger.die(DUPLICATE_FIELD_ERROR, fieldName);

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to