package serializers.jackson; import java.io.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectReader; import com.fasterxml.jackson.databind.ObjectWriter; public abstract class BaseJacksonDataBind<T> extends BaseJacksonDriver<T> { protected final JavaType type; protected final ObjectMapper mapper; protected final ObjectReader reader; protected final ObjectWriter writer; protected BaseJacksonDataBind(String name, Class<T> clazz, ObjectMapper mapper) { super(name); type = mapper.getTypeFactory().constructType(clazz); this.mapper = mapper; reader = mapper.readerFor(type); writer = mapper.writerFor(type); } protected BaseJacksonDataBind(String name, JavaType type, ObjectMapper mapper, ObjectReader reader, ObjectWriter writer) { super(name); this.type = type; this.mapper = mapper; this.reader = reader; this.writer = writer; } protected final JsonParser constructParser(byte[] data) throws IOException { return mapper.getFactory().createParser(data, 0, data.length); } protected final JsonParser constructParser(InputStream in) throws IOException { return mapper.getFactory().createParser(in); } protected final JsonGenerator constructGenerator(OutputStream out) throws IOException { return mapper.getFactory().createGenerator(out, JsonEncoding.UTF8); } }