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

#java #gwt #requestfactory

#java #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% клиентский код, и вопрос только в том, куда мне поместить реализацию.

Ответ №1:

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

Комментарии:

1. Или мы должны просто дождаться поддержки Java 8?

2. Никаких обновлений. И я не уверен, как «методы по умолчанию» работают с AutoBean и RequestFactory; уверен, что они просто отключатся; может быть, попробовать с GWT 2.8.0-SNAPSHOT? (пока не уверен, что он поддерживает методы по умолчанию)

Ответ №2:

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

 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";
  }
}
 

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