Reviewers: rjrjr, bobv,

Description:
Issue 6076: EditorDelegate's getPath wrong when subeditor referenced
with dotted @Path annotation

http://code.google.com/p/google-web-toolkit/issues/detail?id=6076

AbstractEditorDriverGenerator incorrectly used getPropertyName instead
of getDeclaredPath to generate the subdelegate's path.

Please review this at http://gwt-code-reviews.appspot.com/1364801/

Affected files:
  M user/src/com/google/gwt/editor/rebind/AbstractEditorDriverGenerator.java
  M user/test/com/google/gwt/editor/client/SimpleBeanEditorTest.java
  M user/test/com/google/gwt/editor/client/impl/DelegateMapTest.java


Index: user/src/com/google/gwt/editor/rebind/AbstractEditorDriverGenerator.java diff --git a/user/src/com/google/gwt/editor/rebind/AbstractEditorDriverGenerator.java b/user/src/com/google/gwt/editor/rebind/AbstractEditorDriverGenerator.java index fdb0427f797ca5d013ec2f3668e437b4e0c1bee2..e0c8b23e8a10c0b6d871af50cf134c9a260b86f0 100644 --- a/user/src/com/google/gwt/editor/rebind/AbstractEditorDriverGenerator.java +++ b/user/src/com/google/gwt/editor/rebind/AbstractEditorDriverGenerator.java @@ -175,7 +175,7 @@ public abstract class AbstractEditorDriverGenerator extends Generator {
           sw.indent();
sw.println("%s = new %s();", delegateFields.get(d), subDelegateType);
           sw.println("addSubDelegate(%s, appendPath(\"%s\"), editor.%s);",
-              delegateFields.get(d), d.getPropertyName(),
+              delegateFields.get(d), d.getDeclaredPath(),
               d.getSimpleExpression());
           sw.outdent();
           sw.println("}");
Index: user/test/com/google/gwt/editor/client/SimpleBeanEditorTest.java
diff --git a/user/test/com/google/gwt/editor/client/SimpleBeanEditorTest.java b/user/test/com/google/gwt/editor/client/SimpleBeanEditorTest.java index 66d7c9ff84c0074dfaef1d4a13d56b4e06b875b0..da3ae169978b6d2c610fa0b72ef10ea3bb80db4c 100644
--- a/user/test/com/google/gwt/editor/client/SimpleBeanEditorTest.java
+++ b/user/test/com/google/gwt/editor/client/SimpleBeanEditorTest.java
@@ -142,6 +142,16 @@ public class SimpleBeanEditorTest extends GWTTestCase {
       SimpleBeanEditorDriver<Person, PersonEditorWithLeafAddressEditor> {
   }

+  class PersonEditorWithManagerNameWithDelegate implements Editor<Person> {
+    @Path("manager.name")
+ SimpleEditorWithDelegate<String> managerName = new SimpleEditorWithDelegate<String>(
+        UNINITIALIZED);
+  }
+
+  interface PersonEditorWithManagerNameWithDelegateDriver extends
+ SimpleBeanEditorDriver<Person, PersonEditorWithManagerNameWithDelegate> {
+  }
+
   class PersonEditorWithMultipleBindings implements Editor<Person> {
     @Editor.Path("address")
     AddressEditorPartOne one = new AddressEditorPartOne();
@@ -217,6 +227,20 @@ public class SimpleBeanEditorTest extends GWTTestCase {
       SimpleBeanEditorDriver<PersonWithList, PersonWithListEditor> {
   }

+  class SimpleEditorWithDelegate<T> extends SimpleEditor<T> implements
+      HasEditorDelegate<T> {
+    EditorDelegate<T> delegate;
+
+    public SimpleEditorWithDelegate(T value) {
+      super(value);
+    }
+
+    @Override
+    public void setDelegate(EditorDelegate<T> delegate) {
+      this.delegate = delegate;
+    }
+  }
+
   class ValueAwareAddressEditor extends AddressEditor implements
       ValueAwareEditor<Address> {
     int flushCalled;
@@ -321,6 +345,15 @@ public class SimpleBeanEditorTest extends GWTTestCase {
     assertEquals("Should see this", person.getName());
   }

+  public void testDelegatePath() {
+ PersonEditorWithManagerNameWithDelegate editor = new PersonEditorWithManagerNameWithDelegate(); + PersonEditorWithManagerNameWithDelegateDriver driver = GWT.create(PersonEditorWithManagerNameWithDelegateDriver.class);
+    driver.initialize(editor);
+    driver.edit(person);
+
+    assertEquals("manager.name", editor.managerName.delegate.getPath());
+  }
+
   public void testEditorWithNullSubEditor() {
     PersonEditor editor = new PersonEditor();
     editor.addressEditor = null;
Index: user/test/com/google/gwt/editor/client/impl/DelegateMapTest.java
diff --git a/user/test/com/google/gwt/editor/client/impl/DelegateMapTest.java b/user/test/com/google/gwt/editor/client/impl/DelegateMapTest.java index 7391e0544b9a10c9da8063b837fc69b75e9137c2..3b43c2115639505ecdc753e61cc3847183e13779 100644
--- a/user/test/com/google/gwt/editor/client/impl/DelegateMapTest.java
+++ b/user/test/com/google/gwt/editor/client/impl/DelegateMapTest.java
@@ -19,6 +19,8 @@ import com.google.gwt.core.client.GWT;
 import com.google.gwt.editor.client.Address;
 import com.google.gwt.editor.client.AddressEditor;
 import com.google.gwt.editor.client.Editor;
+import com.google.gwt.editor.client.EditorDelegate;
+import com.google.gwt.editor.client.HasEditorDelegate;
 import com.google.gwt.editor.client.IsEditor;
 import com.google.gwt.editor.client.Person;
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;
@@ -46,13 +48,27 @@ public class DelegateMapTest extends GWTTestCase {
     AddressCoEditorView addressEditor = new AddressCoEditorView();
     SimpleEditor<String> name = SimpleEditor.of("uninitialized");
     @Path("manager.name")
-    SimpleEditor<String> managerName = SimpleEditor.of("uninitialized");
+ SimpleEditorWithDelegate<String> managerName = new SimpleEditorWithDelegate<String>(
+        "uninitialized");
   }

   interface PersonEditorWithCoAddressEditorViewDriver extends
       SimpleBeanEditorDriver<Person, PersonEditorWithCoAddressEditorView> {
   }

+  class SimpleEditorWithDelegate<T> extends SimpleEditor<T> implements
+      HasEditorDelegate<T> {
+    EditorDelegate<T> delegate;
+
+    public SimpleEditorWithDelegate(T value) {
+      super(value);
+    }
+
+    public void setDelegate(EditorDelegate<T> delegate) {
+      this.delegate = delegate;
+    }
+  }
+
   @Override
   public String getModuleName() {
     return "com.google.gwt.editor.Editor";
@@ -85,6 +101,7 @@ public class DelegateMapTest extends GWTTestCase {
     map = DelegateMap.of(driver, DelegateMap.IDENTITY);
   }

+  @SuppressWarnings("unchecked")
   public void test() {
     // Test by-object
     assertEquals(Arrays.asList(editor), editors(map, person));
@@ -97,6 +114,7 @@ public class DelegateMapTest extends GWTTestCase {
     assertEquals(
Arrays.asList(editor.addressEditor.addressEditor, editor.addressEditor),
         editors(map, "address"));
+ assertEquals(Arrays.asList(editor.managerName), editors(map, "manager.name"));
   }

   public void testSimplePath() {


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

Reply via email to