Fix code-generation error in ProxyCreator when an RPC async method returns a Request object.
Add a test for this use-case.
Patch by: bobv
Review by: mmendez (TBR)
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2222 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java b/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
index 3372e3d..8d35f8a 100644
--- a/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
+++ b/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
@@ -305,10 +305,6 @@
}
w.println();
- if (asyncReturnType != JPrimitiveType.VOID) {
- w.print("return ");
- }
-
w.println("String payload = " + streamWriterName + ".toString();");
w.println("boolean toss2 = isStatsAvailable() && stats(\""
@@ -316,6 +312,10 @@
+ getProxySimpleName() + "." + syncMethod.getName()
+ "\", getRequestId()));");
+ if (asyncReturnType != JPrimitiveType.VOID) {
+ w.print("return ");
+ }
+
// Call the doInvoke method to actually send the request.
w.print("doInvoke(");
JType returnType = syncMethod.getReturnType();
diff --git a/user/test/com/google/gwt/user/client/rpc/RemoteServiceServletTest.java b/user/test/com/google/gwt/user/client/rpc/RemoteServiceServletTest.java
index 354c86f..05bec77 100644
--- a/user/test/com/google/gwt/user/client/rpc/RemoteServiceServletTest.java
+++ b/user/test/com/google/gwt/user/client/rpc/RemoteServiceServletTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Google Inc.
+ * Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
@@ -16,6 +16,7 @@
package com.google.gwt.user.client.rpc;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.http.client.Request;
import com.google.gwt.junit.client.GWTTestCase;
/**
@@ -33,6 +34,7 @@
*/
public class RemoteServiceServletTest extends GWTTestCase {
private static final int TEST_DELAY = Integer.MAX_VALUE;
+ private Request req;
private static RemoteServiceServletTestServiceAsync getAsyncService() {
RemoteServiceServletTestServiceAsync service = (RemoteServiceServletTestServiceAsync) GWT.create(RemoteServiceServletTestService.class);
@@ -52,15 +54,17 @@
delayTestFinish(TEST_DELAY);
- service.test(new AsyncCallback() {
+ req = service.test(new AsyncCallback<Object>() {
public void onFailure(Throwable caught) {
TestSetValidator.rethrowException(caught);
}
public void onSuccess(Object result) {
+ assertTrue(!req.isPending());
finishTest();
}
});
+ assertTrue(req.isPending());
}
}
diff --git a/user/test/com/google/gwt/user/client/rpc/RemoteServiceServletTestServiceAsync.java b/user/test/com/google/gwt/user/client/rpc/RemoteServiceServletTestServiceAsync.java
index 82e166d..0576df3 100644
--- a/user/test/com/google/gwt/user/client/rpc/RemoteServiceServletTestServiceAsync.java
+++ b/user/test/com/google/gwt/user/client/rpc/RemoteServiceServletTestServiceAsync.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2007 Google Inc.
+ * Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
@@ -15,9 +15,11 @@
*/
package com.google.gwt.user.client.rpc;
+import com.google.gwt.http.client.Request;
+
/**
* TODO: document me.
*/
public interface RemoteServiceServletTestServiceAsync {
- void test(AsyncCallback callback);
+ Request test(AsyncCallback callback);
}