2011-10-02 17 views
5

¿Tiene GWT 2.4 ayuda este caso:GWT 2.4.0 RequestFactory polimorfismo

@Entity class MyBase {...} 
@Entity class MyChild1 extends MyBase {...} 
@Entity class MyChild2 extends MyBase {...} 
... 
@ProxyFor(MyBase.class) class MyBaseProxy extends EntityProxy {...} 
@ProxyFor(MyChild1.class) class MyChild1Proxy extends MyBaseProxy {...} 
@ProxyFor(MyChild2.class) class MyChild2Proxy extends MyBaseProxy {...} 
... 
@Service(ArticleBase.class) 
public interface MyBaseRequest extends RequestContext { 
    Request<MyBaseProxy> getStuff(); // MyChild1 here 
} 
... 
Request<MyBaseProxy> getStuffRequest = request.getStuff(); 
getStuffRequest.fire(new Receiver<MyBaseProxy>() { 
    @Override 
    public void onSuccess(MyBaseProxy proxy) { 
     button.setText(((MyChild1Proxy)proxy).getQwerty()); // HERE! 
    } 
}); 

?

El problema es que no puedo hacer que funcione. Todavía no es compatible o necesito agregar alguna anotación mágica en alguna parte. Todo funciona bien cuando uso tipos concretos, pero no funciona si uso los básicos.

¿Qué opinas?

Respuesta

10

fijo con @ExtraTypes:

@Service(ArticleBase.class) 
@ExtraTypes({MyChild1Proxy.class, MyChild2Proxy.class}) 
public interface MyBaseRequest extends RequestContext { 
    Request<MyBaseProxy> getStuff(); // MyChild1 here 
} 
+0

gracias, me salvó un montón de tiempo - era conseguir excepciones de desbordamiento de pila raro. Se espera que coloque la anotación de tipos adicionales en la clase de proxy base (esto provocó las excepciones de desbordamiento de la pila) ... –