GWT RequestFactory — добавление пользовательских методов в прокси-классы?

Можно ли добавить метод в прокси-класс GWT RequestFactory? Допустим, у меня есть это:

@ProxyFor(value = MyEntity.class)
interface MyEntityProxy extends EntityProxy {
  String getData(); // got it on server side
}

GetData() поддерживается на стороне сервера, это нормально. Что, если я хочу добавить такой метод:

@ProxyFor(value = MyEntity.class)
interface MyEntityProxy extends EntityProxy {
  String getData(); // got it on server side
  String getDataAndAppendQwerty(); // want this one on client side
}

Я хочу вручную реализовать getDataAndAppendQwerty(). Это 100% клиентский код, и вопрос только в том, где я должен поместить реализацию.


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


Ответы (2)


Ответом будет категории AutoBean, но они (пока) не появился в RequestFactory.

person Thomas Broyer    schedule 02.11.2011
comment
Или нам просто ждать поддержки Java 8? - person Konstantin Milyutin; 14.01.2015
comment
Нет обновления. И я не уверен, как методы по умолчанию работают с AutoBean и RequestFactory; почти уверен, что они просто взорвутся; может попробовать GWT 2.8.0-SNAPSHOT? (не уверен, что он еще поддерживает методы по умолчанию) - person Thomas Broyer; 14.01.2015

Я не знаю простого способа. Вы можете использовать оболочку и делегат

public class MyEntityProxyExt implements MyEntityProxy {

  private final MyEntityProxy proxy;

  public MyEntityProxyExt(MyEntityProxy proxy) {
      this.proxy = proxy;
  }

  @Override
  public String getData() {

      return proxy.getData();
  }

  public Object getDataAndAppendQwerty() {

      return proxy.getData() + "qwerty";
  }
}

но вам придется вручную обернуть все ваши прокси-объекты на клиенте, когда вы вернете их с сервера.

person pillingworth    schedule 02.11.2011