2011-10-02 9 views
5

Fa GWT 2.4 supporto questo 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! 
    } 
}); 

?

Il problema è che non riesco a farlo funzionare. Non è ancora supportato o ho bisogno di aggiungere qualche annotazione magica da qualche parte. Tutto funziona bene quando uso i tipi concreti, ma non funziona se uso quelli di base.

Cosa ne pensi?

risposta

10

fisso con @ExtraTypes:

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

grazie, mi ha salvato un sacco di tempo - è stato sempre pila strano eccezioni di overflow. Previsto inserire l'annotazione dei tipi extra nella classe proxy di base (ciò ha causato le eccezioni di overflow dello stack) ... –