JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider(); provider.setMapper(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 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); } } }
@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 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 boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return jacksonEntityProviderFeatureSet && (jaxbProvider.isWriteable(type, genericType, annotations, mediaType) || pojoProvider.isWriteable(type, genericType, annotations, mediaType)); }
public String marshal(Object jaxbBean) { try { final ByteArrayOutputStream os = new ByteArrayOutputStream(); if (prettyPrint) { jsonProvider.enable(SerializationConfig.Feature.INDENT_OUTPUT, true); } jsonProvider.writeTo(jaxbBean, jaxbBean.getClass(), null, null, MediaType.APPLICATION_JSON_TYPE, null, os); // The encoding used inside JacksonJsonProvider is always UTF-8 return new String(os.toByteArray(), JsonEncoding.UTF8.getJavaName()); } catch (IOException e) { throw new JsonMarshallingException(e); } }
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; } }
JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider() .configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); client.register(jacksonJsonProvider);
public Object readFrom(Class<Object> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException { return delegate.readFrom(type, genericType, annotations, mediaType, httpHeaders, entityStream); } }
@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); } } }
@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 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 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)); }
@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); } } }
@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 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 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)); }