Rolled back previous patch due to failing RequestFactory tests.

Patch by: amitmanjhi


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8911 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java b/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
index 61aa07c..9c4f0ea 100644
--- a/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
+++ b/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
@@ -221,14 +221,12 @@
     return packageName + "." + implName;
   }
 
-  private String asInnerImplClass(String className, JClassType outerClass) {
-    if (outerClass.isParameterized() != null) {
-      // outerClass is of form List<EmployeeProxy>
-      outerClass = outerClass.isParameterized().getTypeArgs()[0];
+  private String asInnerImplClass(String className, JClassType outerClassName) {
+    if (outerClassName.isParameterized() != null) {
+      // outerClassName is of form List<EmployeeProxy>
+      outerClassName = outerClassName.isParameterized().getTypeArgs()[0];
     }
-    // outerClass is of the form <P extends EmployeeProxy>
-    outerClass = decodeToBaseType(outerClass);
-    className = outerClass.getQualifiedSourceName() + "Impl." + className;
+    className = outerClassName.getQualifiedSourceName() + "Impl." + className;
     return className;
   }
 
@@ -340,14 +338,14 @@
       // handle publicProxyType = List<EmployeeProxy>
       publicProxyType = publicProxyType.isParameterized().getTypeArgs()[0];
     }
-    // deal with stuff like Request<T extends FooProxy>
-    publicProxyType = decodeToBaseType(publicProxyType);
-
     // don't generate proxies for the EntityProxy impl itself
     if (!publicProxyType.isAssignableTo(entityProxyType)
         || publicProxyType.equals(entityProxyType)) {
       return;
     }
+    if (publicProxyType.isTypeParameter() != null) {
+      return;
+    }
     if (generatedProxyTypes.contains(publicProxyType)) {
       return;
     }
@@ -935,12 +933,8 @@
 
       sw.println(getMethodDeclaration(method) + " {");
       sw.indent();
-      /*
-       * ugly cast to get around generics, if method signature is like
-       * com.google.gwt.requestfactory.shared.TestFooPolymorphicRequest::echo
-       */
-      sw.println("return (" + method.getReturnType().getQualifiedBinaryName()
-          + ") new " + requestClassName + "(factory" + extraArgs + ") {");
+      sw.println("return new " + requestClassName + "(factory" + extraArgs
+          + ") {");
       sw.indent();
       String requestDataName = RequestData.class.getSimpleName();
       sw.println("public " + requestDataName + " getRequestData() {");
@@ -1057,8 +1051,7 @@
       }
 
       if (classType != null && classType.isAssignableTo(entityProxyType)) {
-        // classType is of the form <P extends EmployeeProxy>
-        sb.append("((" + decodeToBaseType(classType).getQualifiedBinaryName() + "Impl" + ")");
+        sb.append("((" + classType.getQualifiedBinaryName() + "Impl" + ")");
       }
       sb.append(parameter.getName());
       if (classType != null && classType.isAssignableTo(entityProxyType)) {
@@ -1377,6 +1370,8 @@
   @SuppressWarnings("unchecked")
   private void validateProxyType(JClassType entityProxyType,
       TypeOracle typeOracle) throws DiagnosticException {
+    // deal with stuff like Request<T extends FooProxy>
+    entityProxyType = decodeToBaseType(entityProxyType);
     // skip validating base interface
     if (this.entityProxyType.equals(entityProxyType)) {
       return;
diff --git a/user/test/com/google/gwt/requestfactory/RequestFactorySuite.java b/user/test/com/google/gwt/requestfactory/RequestFactorySuite.java
index 940e29b..488d585 100644
--- a/user/test/com/google/gwt/requestfactory/RequestFactorySuite.java
+++ b/user/test/com/google/gwt/requestfactory/RequestFactorySuite.java
@@ -19,7 +19,6 @@
 import com.google.gwt.requestfactory.client.EditorTest;
 import com.google.gwt.requestfactory.client.FindServiceTest;
 import com.google.gwt.requestfactory.client.RequestFactoryExceptionHandlerTest;
-import com.google.gwt.requestfactory.client.RequestFactoryPolymorphicTest;
 import com.google.gwt.requestfactory.client.RequestFactoryStringTest;
 import com.google.gwt.requestfactory.client.RequestFactoryTest;
 import com.google.gwt.requestfactory.client.impl.DeltaValueStoreJsonImplTest;
@@ -41,7 +40,6 @@
     suite.addTestSuite(ValueStoreJsonImplTest.class);
     suite.addTestSuite(DeltaValueStoreJsonImplTest.class);
     suite.addTestSuite(RequestFactoryTest.class);
-    suite.addTestSuite(RequestFactoryPolymorphicTest.class);
     suite.addTestSuite(RequestFactoryStringTest.class);
     suite.addTestSuite(RequestFactoryExceptionHandlerTest.class);
     suite.addTestSuite(FindServiceTest.class);