Revision: 8915
Author: [email protected]
Date: Fri Oct  1 09:16:52 2010
Log: Fixes an NPE when setting an entity parameter to null. The NPE occurs in generated code because we try to get the entity in wire format.

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

http://code.google.com/p/google-web-toolkit/source/detail?r=8915

Modified:
/trunk/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java /trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java

=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java Thu Sep 30 18:35:57 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java Fri Oct 1 09:16:52 2010
@@ -1041,22 +1041,25 @@
       if (sb.length() > 0) {
         sb.append(", ");
       }
-      JClassType classType = parameter.getType().isClassOrInterface();
-
       JType paramType = parameter.getType();
+      JClassType classType = paramType.isClassOrInterface();
+      String paramName = parameter.getName();
+
       if (paramType.getQualifiedSourceName().equals(
           EntityProxyId.class.getName())) {
-        sb.append("factory.getWireFormat(" + parameter.getName() + ")");
+        sb.append("factory.getWireFormat(" + paramName + ")");
         continue;
       }

       if (classType != null && classType.isAssignableTo(entityProxyType)) {
+        sb.append(paramName + " == null ? null : ");
sb.append("((" + classType.getQualifiedBinaryName() + "Impl" + ")");
-      }
-      sb.append(parameter.getName());
-      if (classType != null && classType.isAssignableTo(entityProxyType)) {
+        sb.append(paramName);
         sb.append(").wireFormatId()");
-      }
+        continue;
+      }
+
+      sb.append(paramName);
     }
     return "new Object[] {" + sb.toString() + "}";
   }
=======================================
--- /trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java Thu Sep 30 12:36:38 2010 +++ /trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java Fri Oct 1 09:16:52 2010
@@ -499,7 +499,7 @@
   /**
    * Test that a null value can be sent in a request.
    */
-  public void disabledTestNullSimpleFooRequest() {
+  public void testNullSimpleFooRequest() {
     delayTestFinish(5000);
final Request<Void> fooReq = req.simpleFooRequest().receiveNullSimpleFoo(null);
     fooReq.fire(new Receiver<Void>() {

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

Reply via email to