Ошибка компиляции AutoBean: «Параметризация не проста ...» - PullRequest
0 голосов
/ 03 марта 2012

Я пытаюсь использовать AutoBean на сервере и клиенте для отправки и получения данных JSON через API канала AppEngines. Я не хочу хранить эти данные в хранилище данных. У меня уже есть прокси для этого объекта, который я использую для RequestFactoryServlet (который в любом случае использует только AutoBean), так что это должно быть выполнимо. Вместо того, чтобы писать новый прокси для объекта, который точно дублирует прокси для RequestFactoryServlet, я хотел бы просто использовать прокси, который я использую для RequestFactoryServlet. Единственная проблема заключается в том, что при компиляции я получаю сообщение об ошибке из моего AutoBeanFactory.

Генератор вызова com.google.web.bindery.autobean.gwt.rebind.AutoBeanFactoryGenerator [ОШИБКА] Параметризация com.wmba.wmbaapp.shared.ObjectProxy не проста, но метод obj не обеспечивает делегат

Так что я не совсем уверен, что здесь делать. Похоже, что до того, как я добавил клиентскую часть, он вполне мог сериализовать объект в JSON, но по какой-то причине ему это не понравилось. Звучит так, будто мне нужен делегат, но я ничего не могу найти в интернете.

У кого-нибудь есть идеи?

Примечание: я также пытался сделать то же самое с EntityProxy (который является основой инфраструктуры RequestFactory из того, что я прочитал на странице AutoBean, но я получаю ту же ошибку).

Ответы [ 2 ]

4 голосов
/ 03 марта 2012

Проблема в том, что EntityProxy определяет метод stableId, который не является получателем (имя не начинается с get). Это делает его не простым компонентом, для которого AutoBeans требует, чтобы реальный экземпляр компонента был обернут в созданный AutoBean ( делегат , передаваемый в качестве аргумента типа AutoBean - ObjectProxy в вашем случае - к вашему obj методу AutoBeanFactory).

Другими словами, AutoBeans ожидает, что ваш метод obj будет иметь вид:

AutoBean<ObjectProxy> obj(ObjectProxy toWrap);

Самое простое решение - не пытаться повторно использовать прокси-сервер сущности с AutoBeans.


Возможно, вы сможете заставить его работать, пометив свой AutoBeanFactory с помощью:

@Category(EntityProxyCategory.class)

Возможно, вам придется добавить @NoWrap(EntityProxyId.class), см. http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/web/bindery/requestfactory/vm/InProcessRequestFactory.java

3 голосов
/ 04 июня 2012

Оказалось, что у меня есть установщик свойств, у которого в интерфейсе Ojbect был пустой список параметров. Это не имело ничего общего с фабрикой, за исключением интерфейса, для которого фабрика пыталась создать прокси:

interface Factory {
  AutoBeans<MyObject> createObject();
}
interface MyObject {
  String getProperty();
  void setProperty();
}

Ошибка с костью, но меня удержала эта точная ошибка компилятора. Добавление аннотации категории, как упомянуто в предыдущем ответе, идентифицировало дефектный установщик свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...