Полиморфизм RequestFactory GWT 2.4.0

Поддерживает ли GWT 2.4 этот случай:

@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!
    }
});

?

Проблема в том, что я не могу заставить его работать. Либо он еще не поддерживается, либо мне нужно где-то добавить магическую аннотацию. Все работает нормально, когда я использую конкретные типы, но не работает, если я использую базовые.

Что вы думаете?


person Andrey Agibalov    schedule 02.10.2011    source источник


Ответы (1)


Исправлено с помощью @ExtraTypes:

@Service(ArticleBase.class)
@ExtraTypes({MyChild1Proxy.class, MyChild2Proxy.class})
public interface MyBaseRequest extends RequestContext {
    Request<MyBaseProxy> getStuff(); // MyChild1 here
}
person Andrey Agibalov    schedule 02.10.2011
comment
спасибо, сэкономил мне много времени - получались странные исключения переполнения стека. Ожидается, что аннотация дополнительных типов будет помещена в базовый прокси-класс (это вызвало исключения переполнения стека)... - person Michael Wiles; 10.01.2012