JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider(); provider.setMapper(mapper);
@Override public void writeTo(Object t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { if (jaxbProvider.isWriteable(type, genericType, annotations, mediaType)) { jaxbProvider.writeTo(t, type, genericType, annotations, mediaType, httpHeaders, entityStream); } else { pojoProvider.writeTo(t, type, genericType, annotations, mediaType, httpHeaders, entityStream); } } }
public JacksonJsonProvider create(Iterable<? extends Module> modules) { ObjectMapper mapper = new ObjectMapper(); /* This is what MapperConfigurator would do to a default ObjectMapper */ AnnotationIntrospector intr = AnnotationIntrospector.pair(new JacksonAnnotationIntrospector(), new JaxbAnnotationIntrospector()); mapper.setDeserializationConfig(mapper.getDeserializationConfig().withAnnotationIntrospector(intr)); mapper.setSerializationConfig(mapper.getSerializationConfig().withAnnotationIntrospector(intr)); /* In the absence of a specific annotation for @JsonSerialize(include), ignore null fields when serializing */ mapper.setSerializationInclusion(Inclusion.NON_NULL); for (Module module : modules) { mapper.registerModule(module); } mapper.registerModule(new GuavaIterableCapableModule()); JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider(mapper, JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS); // Make sure we only rely on annotations for de-/serialization provider.configure(SerializationConfig.Feature.AUTO_DETECT_GETTERS, false); provider.configure(SerializationConfig.Feature.AUTO_DETECT_FIELDS, false); provider.configure(DeserializationConfig.Feature.AUTO_DETECT_SETTERS, false); provider.configure(DeserializationConfig.Feature.AUTO_DETECT_FIELDS, false); return provider; } }
@Override public long getSize(Object t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return jaxbProvider.isWriteable(type, genericType, annotations, mediaType) ? jaxbProvider.getSize(t, type, genericType, annotations, mediaType) : pojoProvider.getSize(t, type, genericType, annotations, mediaType); }
JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider() .configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); client.register(jacksonJsonProvider);
JacksonJaxbJsonProvider provider2 = new JacksonJaxbJsonProvider(); Bean bean = new Bean("a", "b"); provider.writeTo(bean, Bean.class, null, null, MediaType.APPLICATION_JSON_TYPE, null, System.out); System.out.println(); provider2.writeTo(bean, Bean.class, null, null, MediaType.APPLICATION_JSON_TYPE, null, System.out);
@Override public Object readFrom(Class<Object> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException, WebApplicationException { return jaxbProvider.isReadable(type, genericType, annotations, mediaType) ? jaxbProvider.readFrom(type, genericType, annotations, mediaType, httpHeaders, entityStream) : pojoProvider.readFrom(type, genericType, annotations, mediaType, httpHeaders, entityStream); }
JacksonJaxbJsonProvider jsonProvider = new JacksonJaxbJsonProvider(); jsonProvider.addUntouchable(InputStream.class); jsonProvider.addUntouchable(OutputStream.class); jsonProvider.addUntouchable(File.class); clientConfig.getSingletons().add(jsonProvider);
@Override public ObjectMapper locateMapper(Class<?> type, MediaType mediaType) { ObjectMapper mapper = super.locateMapper(type, mediaType); configObjectMapper(mapper); return mapper; }
@Override public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return jacksonEntityProviderFeatureSet && (jaxbProvider.isReadable(type, genericType, annotations, mediaType) || pojoProvider.isReadable(type, genericType, annotations, mediaType)); }
@Override public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return jacksonEntityProviderFeatureSet && (jaxbProvider.isWriteable(type, genericType, annotations, mediaType) || pojoProvider.isWriteable(type, genericType, annotations, mediaType)); }
// Jackson JSON Provider ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new IdentifiableDeserializableModule()); JacksonJaxbJsonProvider jp = new JacksonJaxbJsonProvider(mapper, JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS); jp.configure(SerializationFeature.INDENT_OUTPUT, indentJson);
public class CxfRestSingleton { public static GenService obj; public static GenService getInstance() { if (obj == null) { obj = JAXRSClientFactory.create("http://localhost:8080/api/hello", MyService.class, Arrays.asList(new JacksonJaxbJsonProvider())); } return obj; } }
JacksonJaxbJsonProvider jp = new JacksonJaxbJsonProvider(); jp.writeTo(new Long(1), Long.class, Long.class, new Annotation[]{}, MediaType.APPLICATION_JSON_TYPE, null, new ByteArrayOutputStream()); } catch (Throwable e) {
@Override public long getSize(Object t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return jaxbProvider.isWriteable(type, genericType, annotations, mediaType) ? jaxbProvider.getSize(t, type, genericType, annotations, mediaType) : pojoProvider.getSize(t, type, genericType, annotations, mediaType); }
@Override public Object readFrom(Class<Object> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException, WebApplicationException { return jaxbProvider.isReadable(type, genericType, annotations, mediaType) ? jaxbProvider.readFrom(type, genericType, annotations, mediaType, httpHeaders, entityStream) : pojoProvider.readFrom(type, genericType, annotations, mediaType, httpHeaders, entityStream); }
@Override public ObjectMapper locateMapper(Class<?> type, MediaType mediaType) { ObjectMapper mapper = super.locateMapper(type, mediaType); configObjectMapper(mapper); return mapper; }
@Override public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return jacksonEntityProviderFeatureSet && (jaxbProvider.isReadable(type, genericType, annotations, mediaType) || pojoProvider.isReadable(type, genericType, annotations, mediaType)); }
@Override public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return jacksonEntityProviderFeatureSet && (jaxbProvider.isWriteable(type, genericType, annotations, mediaType) || pojoProvider.isWriteable(type, genericType, annotations, mediaType)); }
List<Object> providers = new ArrayList<Object>(); providers.add(new JacksonJaxbJsonProvider());