RestyGWT是否适用于泛型和多态类?

时间:2015-12-01 13:12:11

标签: generics gwt polymorphism requestfactory resty-gwt

我在gwt中与请求工厂斗争。我可以使用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作为运输层。 这是一个新的应用程序,因此没有太多要重写。 我认为RF将满足我的需求,不幸的是我无法使其工作。所以我在考虑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>>();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

是的,使用Resty的泛型不应该有问题。你将不得不玩杰克逊注释一点,以使他们正确的继承。主要是@JsonSubTypes@JsonTypeName

请记住,您必须自己或多或少地处理错误处理。有更多的代码来使其余的应用程序工作比rf,但恕我直言,它使你的API更容易移植更多的平台类型。

以下是您要问的一个示例。我经常使用单元测试来解决一些边缘情况。

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