Reviewers: cromwellian,
Description:
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.
Please review this at http://gwt-code-reviews.appspot.com/944801/show
Affected files:
M
user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
M user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
Index:
user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
===================================================================
---
user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
(revision 8912)
+++
user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
(working copy)
@@ -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() + "}";
}
Index:
user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
===================================================================
--- user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
(revision 8912)
+++ user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
(working copy)
@@ -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