You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.2 KiB
Java
64 lines
2.2 KiB
Java
package com.docus.soap.api.util;
|
|
|
|
import com.fasterxml.jackson.core.JsonParser;
|
|
import com.fasterxml.jackson.databind.AnnotationIntrospector;
|
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
import com.fasterxml.jackson.databind.MapperFeature;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
|
import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
|
|
import com.fasterxml.jackson.databind.type.TypeFactory;
|
|
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
|
|
|
|
public class ObjectMapperBuilder {
|
|
static final ObjectMapper DEFAULT_OBJECT_MAPPER;
|
|
|
|
static {
|
|
DEFAULT_OBJECT_MAPPER = createMapper();
|
|
}
|
|
|
|
public static ObjectMapper getObjectMapper() {
|
|
return DEFAULT_OBJECT_MAPPER;
|
|
}
|
|
|
|
private static ObjectMapper createMapper() {
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
mapper.setDateFormat(new JSONDateFormat());
|
|
AnnotationIntrospector primary = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance());
|
|
AnnotationIntrospector secondary = new JacksonAnnotationIntrospector();
|
|
mapper.setAnnotationIntrospector(AnnotationIntrospector.pair(primary, secondary));
|
|
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
|
mapper.configure(MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME, true);
|
|
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
|
|
return mapper;
|
|
}
|
|
|
|
private boolean changed = false;
|
|
private ObjectMapper objectMapper;
|
|
|
|
public ObjectMapperBuilder() {
|
|
this.objectMapper = DEFAULT_OBJECT_MAPPER;
|
|
}
|
|
|
|
public ObjectMapper get() {
|
|
return objectMapper;
|
|
}
|
|
|
|
public static ObjectMapperBuilder defaultObjectMapper() {
|
|
return new ObjectMapperBuilder();
|
|
}
|
|
|
|
public ObjectMapperBuilder rebirth() {
|
|
if (!changed && DEFAULT_OBJECT_MAPPER.equals(objectMapper)) {
|
|
objectMapper = createMapper();
|
|
}
|
|
return this;
|
|
}
|
|
|
|
public ObjectMapperBuilder indent() {
|
|
objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
|
|
changed = true;
|
|
return this;
|
|
}
|
|
}
|