Reviewers: rdayal, NotBobV,
Message:
OK, I think I nailed it.
I still have some issues with RF, but they're unrelated to this.
Note that it's only about proxies. Generics on RequestContext need a
similar treatment but there's another issue for them.
My use cases:
1.
@ProxyFor(...)
interface FooProxy extends EntityProxy {
BarProxy getBar();
}
@ProxyFor(...)
interface ExtendedFooProxy extends FooProxy {
@Override
ExtendedBarProxy getBar();
}
2.
interface Item<X extends Enum<X> & Intf> {
X getIntf();
// other properties
}
@ProxyFor(...)
interface FooItemProxy extends ValueProxy, Item<FooEnum> {
}
3. Using the Item and FooItemProxy above:
interface Container<T extends Item> {
// I could very well use Item & ValueProxy if needed
List<T> getItems();
// other properties
}
@ProxyFor(...)
interface FooContainerProxy extends ValueProxy, Container<FooItemProxy>
{
}
Description:
Fix for issue 5926 (at last!)
This CL fixes a couple things:
- overrides with co-variant return type, as reported initially in issue
5926
- support for generics in proxies, which can lead to the above (e.g. if
you override a method to set a @PropertyName on it), but also has its
own set of issues (type variables in getter's return type –used as the
property type– have to be "resolved" against the actual interface
parameterization)
Please review this at http://gwt-code-reviews.appspot.com/1594804/
Affected files:
requestfactory/build.xml
M
user/src/com/google/web/bindery/autobean/vm/impl/BeanPropertyContext.java
M
user/src/com/google/web/bindery/autobean/vm/impl/GetterPropertyContext.java
M
user/src/com/google/web/bindery/autobean/vm/impl/MethodPropertyContext.java
M user/src/com/google/web/bindery/autobean/vm/impl/ProxyAutoBean.java
M user/src/com/google/web/bindery/requestfactory/apt/ProxyScanner.java
M
user/src/com/google/web/bindery/requestfactory/apt/RequestContextScanner.java
M
user/src/com/google/web/bindery/requestfactory/apt/RequestFactoryScanner.java
M user/src/com/google/web/bindery/requestfactory/apt/ScannerBase.java
M
user/test/com/google/web/bindery/requestfactory/gwt/RequestFactorySuite.java
A
user/test/com/google/web/bindery/requestfactory/gwt/client/RequestFactoryGenericsTest.java
A
user/test/com/google/web/bindery/requestfactory/server/RequestFactoryGenericsJreTest.java
M
user/test/com/google/web/bindery/requestfactory/vm/RequestFactoryJreSuite.java
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors