Use erasure to handle wildcard types in RfValidator. Restore FindRequest to 2.4 parameterization. Patch by: bobv Review by: rchandia Review at http://gwt-code-reviews.appspot.com/1467814 git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10428 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java b/user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java index c7332dc..188f383 100644 --- a/user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java +++ b/user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java
@@ -62,6 +62,12 @@ if (state.types.isAssignable(x, state.entityProxyType) || state.types.isAssignable(x, state.valueProxyType)) { // FooProxy -> FooDomain + /* + * TODO(bobv): This if statement should be widened to baseProxy to support + * heterogenous collections of any proxy type. The BaseProxy interface + * would also need to be annotated with an @ProxyFor mapping. This can be + * done once RFIV is removed, since it only allows homogenous collections. + */ TypeElement domainType = state.getClientToDomainMap().get(state.types.asElement(x)); if (domainType == null) { return defaultAction(x, state); @@ -120,10 +126,7 @@ @Override public TypeMirror visitWildcard(WildcardType x, State state) { // Convert <? extends FooProxy> to FooDomain - if (x.getExtendsBound() != null) { - return x.getExtendsBound().accept(this, state); - } - return defaultAction(x, state); + return state.types.erasure(x).accept(this, state); } /**
diff --git a/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java b/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java index e9e5d08..9d47dd1 100644 --- a/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java +++ b/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java
@@ -105,7 +105,7 @@ @Override public Boolean visitWildcard(WildcardType t, State state) { // Allow List<? extends FooProxy> - return t.getExtendsBound() != null && t.getExtendsBound().accept(this, state); + return state.types.erasure(t).accept(this, state); } @Override
diff --git a/user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java b/user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java index f073734..676005f 100644 --- a/user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java +++ b/user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java
@@ -102,10 +102,7 @@ @Override public TypeMirror visitWildcard(WildcardType x, State state) { - if (x.getExtendsBound() != null) { - return x.getExtendsBound().accept(this, state); - } - return state.objectType; + return state.types.erasure(x).accept(this, state); } @Override
diff --git a/user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java b/user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java index 1fcb1c4..5061b7f 100644 --- a/user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java +++ b/user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java
@@ -31,5 +31,5 @@ /** * Use the implicit lookup in passing EntityProxy types to service methods. */ - Request<EntityProxy> find(EntityProxyId<? extends EntityProxy> proxy); + Request<EntityProxy> find(EntityProxyId<?> proxy); } \ No newline at end of file