Я читал ответ за Moxy ignore invalid fields in json, и подход подошел к чему-то, что я пытаюсь сделать, поэтому я решил сделать снимок. Я создал функцию отключения стандартного ConfigurableMoxyJsonProvider;Пользовательские MOXyJsonProvider в Джерси 2 не работают?
@Provider
public class JsonFeature implements Feature {
@Override
public boolean configure(final FeatureContext context) {
final String disableMoxy = CommonProperties.MOXY_JSON_FEATURE_DISABLE +
'.' +
context.getConfiguration().getRuntimeType().name().toLowerCase();
context.property(disableMoxy, true);
return true;
}
}
И я создал действительно простой пользовательский поставщик;
@Provider
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class JsonProvider extends MOXyJsonProvider {
@Override
protected void preWriteTo(Object object, Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders, Marshaller marshaller)
throws JAXBException {
System.out.println("test");
}
@Override
protected void preReadFrom(Class<Object> type, Type genericType, Annotation[] annotations,
MediaType mediaType, MultivaluedMap<String, String> httpHeaders,
Unmarshaller unmarshaller)
throws JAXBException {
System.out.println("test");
}
}
Я зарегистрировал оба устройства;
register(JsonFeature.class);
register(JsonProvider.class);
И я дал ему шанс с простым запросом GET;
@GET
@Path("test")
public String getTest() {
return new TestObject();
}
Я считаю, что это должно работать, но ни preWriteTo, ни preReadFrom когда-нибудь ссылаться .. Есть еще один шаг, который я не хватает? Как мне заставить их стрелять?
Спасибо :) Я тоже ударил стену из-за этого. Btw. вам не нужно создавать класс JSONFeature. Вы можете просто установить свойство в свой ResourceConfig 'resourceConfig.property (CommonProperties.MOXY_JSON_FEATURE_DISABLE_SERVER, true)' – Zounadire