2015-12-01 15 views
0

Я борюсь с фабрикой запросов в gwt. Я могу заставить его работать с классами Generics и Polymorphic. Смотрите здесь:Is RestyGWT работает с классами Generics и Polymorphic?

RequestFactory client-side inheritance of typed class with generics

Gwt Request Factory. Generics and Inheritance on client side

RequestFactory Entity's parameter: List<OfOtherEntity> is null on client. On server is ok

Я думаю о том, чтобы перейти к restygwt в качестве транспортного слоя. Это новое приложение, поэтому переписывать нечего. Я думал, что РФ удовлетворит мои потребности, к сожалению, я не мог заставить его работать. Поэтому я думаю о Resty.

Скажите, пожалуйста, будет ли он работать с дженериков и полиморфных классов, как это показано ниже:

@MappedSuperclass 
public class GenericModel<T extends GenericModel<T>> implements Identifiable, Versionable { 
    getId(); 
    getVersion(); 
} 

@MappedSuperclass 
public abstract class GenericDictionaryModel<T extends GenericModel<T>> extends GenericModel<T> {  getName(); 
    getActive(); 
} 

@Entity class VocabularyDictionaryModel extends GenericDictionaryModel { 
    someCustomeMethod(); 
} 


public class GenericDao<T extends GenericModel<T>> { 
    public List<GenericModel<T>> getList() { 
     return JPA.em().createQuery("FROM " + entityClass.getSimpleName()).getResultList(); 
    } 
} 



public class GenericDictionaryDao<T extends GenericDictionaryModel<T>> extends GenericDao<T>{ 
    public List<GenericDictionaryModel<T>> getListOrderedByName() { 
     try { 
      return JPA.em() 
         .createQuery("FROM " + entityClass.getSimpleName() + " ORDER BY name") 
         .getResultList(); 
     } catch (ClassCastException e) { 
      return new LinkedList<GenericDictionaryModel<T>>(); 
     } 
    } 
} 
+0

Из любопытства, какие проблемы вы все еще имеете с РФ? Есть ли ошибка? От взгляда на ваши другие вопросы у меня возникает ощущение, что у вас возникает проблема, с которой я столкнулся, когда метод не может быть вызван, если он не объявлен в RequestContext для типа дочернего объекта. Если расширять GenericContext, вам нужно снова добавить этот метод в дочерний интерфейс RequestContext. Это дополнительная работа, но это позволило мне использовать GenericContext как , когда я хотел сделать код чистым. –

+0

Я хотел бы избежать повторения кода. Я ношу, что общий не работает из коробки. Я все еще борюсь с РФ. – masterdany88

ответ

0

Да, вы не должны иметь проблемы с использованием дженериков с Resty. Вам придется немного поиграть с аннотациями Джексона, чтобы получить их право на наследство. Главным образом @JsonSubTypes и @JsonTypeName.

Имейте в виду, что вам придется обрабатывать обработку ошибок более или менее самостоятельно. Существует довольно много кода для того, чтобы работать с остальным приложением, чем rf, но IMHO делает ваш API более переносимым для других типов платформ.

Вот пример того, что вы просите. Я часто использовал модульные тесты для решения некоторых краевых задач.

https://github.com/resty-gwt/resty-gwt/blob/master/restygwt/src/test/java/org/fusesource/restygwt/client/basic/ParameterizedTypeDTO.java