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