Prevent an AutoBean property named "property" from causing a compilation error.
Patch by: bobv
Review by: rjrjr

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


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10481 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/web/bindery/autobean/gwt/rebind/AutoBeanFactoryGenerator.java b/user/src/com/google/web/bindery/autobean/gwt/rebind/AutoBeanFactoryGenerator.java
index 0ec39b4..02554ab 100644
--- a/user/src/com/google/web/bindery/autobean/gwt/rebind/AutoBeanFactoryGenerator.java
+++ b/user/src/com/google/web/bindery/autobean/gwt/rebind/AutoBeanFactoryGenerator.java
@@ -231,8 +231,9 @@
           String castType;
           if (returnType.isPrimitive() != null) {
             castType = returnType.isPrimitive().getQualifiedBoxedSourceName();
-            // Boolean toReturn = getOrReify("foo");
-            sw.println("%s toReturn = getOrReify(\"%s\");", castType, method.getPropertyName());
+            // Boolean toReturn = Other.this.getOrReify("foo");
+            sw.println("%s toReturn = %s.this.getOrReify(\"%s\");", castType, type
+                .getSimpleSourceName(), method.getPropertyName());
             // return toReturn == null ? false : toReturn;
             sw.println("return toReturn == null ? %s : toReturn;", returnType.isPrimitive()
                 .getUninitializedFieldExpression());
@@ -241,17 +242,19 @@
             sw.println("return data.isNull(\"%1$s\") ? null : data.get(\"%1$s\");", method
                 .getPropertyName());
           } else {
-            // return (ReturnType) values.getOrReify(\"foo\");
+            // return (ReturnType) Outer.this.getOrReify(\"foo\");
             castType = ModelUtils.getQualifiedBaseSourceName(returnType);
-            sw.println("return (%s) getOrReify(\"%s\");", castType, method.getPropertyName());
+            sw.println("return (%s) %s.this.getOrReify(\"%s\");", castType, type
+                .getSimpleSourceName(), method.getPropertyName());
           }
         }
           break;
         case SET:
         case SET_BUILDER: {
           JParameter param = jmethod.getParameters()[0];
-          // setProperty("foo", parameter);
-          sw.println("setProperty(\"%s\", %s);", method.getPropertyName(), param.getName());
+          // Other.this.setProperty("foo", parameter);
+          sw.println("%s.this.setProperty(\"%s\", %s);", type.getSimpleSourceName(), method
+              .getPropertyName(), param.getName());
           if (JBeanMethod.SET_BUILDER.equals(method.getAction())) {
             sw.println("return this;");
           }
diff --git a/user/test/com/google/web/bindery/autobean/gwt/client/AutoBeanTest.java b/user/test/com/google/web/bindery/autobean/gwt/client/AutoBeanTest.java
index 3124590..a551cc1 100644
--- a/user/test/com/google/web/bindery/autobean/gwt/client/AutoBeanTest.java
+++ b/user/test/com/google/web/bindery/autobean/gwt/client/AutoBeanTest.java
@@ -15,14 +15,14 @@
  */
 package com.google.web.bindery.autobean.gwt.client;
 
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.junit.client.GWTTestCase;
 import com.google.web.bindery.autobean.shared.AutoBean;
 import com.google.web.bindery.autobean.shared.AutoBeanFactory;
 import com.google.web.bindery.autobean.shared.AutoBeanFactory.Category;
 import com.google.web.bindery.autobean.shared.AutoBeanUtils;
 import com.google.web.bindery.autobean.shared.AutoBeanVisitor;
 import com.google.web.bindery.autobean.shared.AutoBeanVisitor.ParameterizationVisitor;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.junit.client.GWTTestCase;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -42,6 +42,7 @@
     public static Object seen;
 
     public static <T> T __intercept(AutoBean<HasCall> bean, T value) {
+      assertNotNull(bean);
       seen = value;
       return value;
     }
@@ -129,10 +130,15 @@
   interface Intf {
     int getInt();
 
+    String getProperty();
+
     String getString();
 
     void setInt(int number);
 
+    // Avoid name conflicts in AbstractAutoBean
+    void setProperty(String value);
+
     void setString(String value);
   }
 
@@ -150,6 +156,7 @@
 
   static class RealIntf implements Intf {
     int i;
+    String property;
     String string;
 
     @Override
@@ -161,6 +168,11 @@
       return i;
     }
 
+    @Override
+    public String getProperty() {
+      return property;
+    }
+
     public String getString() {
       return string;
     }
@@ -174,6 +186,11 @@
       this.i = number;
     }
 
+    @Override
+    public void setProperty(String value) {
+      this.property = value;
+    }
+
     public void setString(String value) {
       this.string = value;
     }
@@ -473,7 +490,7 @@
         if ("int".equals(propertyName)) {
           assertEquals(42, value);
           assertEquals(int.class, ctx.getType());
-        } else if ("string".equals(propertyName)) {
+        } else if ("string".equals(propertyName) || "property".equals(propertyName)) {
           assertNull(value);
           assertEquals(String.class, ctx.getType());
         } else if ("get".equals(propertyName) || "has".equals(propertyName)