有没有办法在CXF中为自定义类型设置通用XmlAdapter?

时间:2016-02-13 21:47:00

标签: java cxf

我正在为我的CXF服务使用自定义类型,所有这些都可以使用Jackson序列化为JSON。 CXF提供XmlAdapter用于在XML和自定义数据类型之间进行转换。我遇到的问题是XmlAdapter只能在泛型中使用一个BoundType,因此我发现自己为每种数据类型编写了一个适配器,这似乎很浪费。

基本上我有:

public class JsonAdapter<T> extends XmlAdapter<String, T> {
    private final Class<T> type;
    private final ObjectMapper objectMapper;

    public JsonAdapter(Class<T> type) {
        this.type = type;
        this.objectMapper = new ObjectMapper();
    }

    @Override
    public T unmarshal(String v) throws Exception {
        return objectMapper.readValue(v, type);
    }

    @Override
    public String marshal(T v) throws Exception {
        return objectMapper.writeValueAsString(v);
    }
}

然后对于每种类型,我必须编写另一个适配器:

class MyTypeAdapter extends MyTypeAdapter<Client> {
    public MyTypeAdapter() {
        super(MyTypeAdapter.class);
    }
}

有没有办法只使用一个适配器?

0 个答案:

没有答案