Мы пытаемся использовать RequestFactory
с существующей моделью сущностей Java.Все наши объекты Java реализуют интерфейс DomainObject
и предоставляют метод getObjectId()
(это имя было выбрано, поскольку getId()
может быть неоднозначным и конфликтовать с фактическим ID объекта домена из моделируемого домена.
Интерфейс ServiceLayerDecorator
позволяет настраивать стратегии поиска идентификатора и свойства версии.
public class MyServiceLayerDecorator extends ServiceLayerDecorator {
@Override
public Object getId(Object object) {
DomainObject domainObject = (DomainObject) object;
return domainObject.getObjectId();
}
}
Пока все хорошо. Однако попытка развернуть это решение приводит к ошибкам во время выполнения. В частности,RequestFactoryInterfaceValidator
жалуется:
[ERROR] There is no getId() method in type com.mycompany.server.MyEntity
Затем позже:
[ERROR] Type type com.mycompany.client.MyEntityProxy was previously marked as bad
[ERROR] The type com.mycompany.client.MyEntityProxy did not pass RequestFactory validation
[ERROR] Unexpected error
com.google.web.bindery.requestfactory.server.UnexpectedException: The type com.mycompany.client.MyEntityProxy did not pass RequestFactory validation
at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.die(ServiceLayerDecorator.java:212) ~[gwt-servlet.jar:na]
Мой вопрос - почему ServiceLayerDecorator
допускает настраиваемые стратегии поиска идентификаторов и версий, если RequestFactoryInterfaceValidator
Жесткое кодирование соглашения getId()
и getVersion()
?
Полагаю, я мог бы переопределить ServiceLayerDecorator.resolveClass()
, чтобы игнорировать "отравленные" прокси-классы, но в этот момент мне кажется, что я слишком много борюсь с фреймворком ...