I cannot set input/output decorators to the SmileFactory, I get exceptions
when I do that, the following is working but it is a shame I cannot use the
SmileFactory + decorators:
public static final ObjectMapper SNAPPY_OBJECT_MAPPER;
public static final Charset UTF8=Charset.forName("UTF-8");
static{
final JsonFactory jsonFactory=new JsonFactory();
jsonFactory.setInputDecorator(new InputDecorator()
{
@Override
public InputStream decorate(IOContext context,InputStream inputStream)
throws IOException
{
return new FramedSnappyCompressorInputStream(inputStream);
}
@Override
public InputStream decorate(IOContext context,byte[] bytes,int offset,
int length) throws IOException
{
return new FramedSnappyCompressorInputStream(new
ByteArrayInputStream(bytes,offset,length));
}
@Override
public Reader decorate(IOContext context,Reader reader) throws
IOException
{
return new InputStreamReader(new FramedSnappyCompressorInputStream(
new ReaderInputStream(reader)),UTF8);
}
});
jsonFactory.setOutputDecorator(new OutputDecorator()
{
@Override
public OutputStream decorate(IOContext context,OutputStream
outputStream) throws IOException
{
return new FramedSnappyCompressorOutputStream(outputStream);
}
@Override
public Writer decorate(IOContext context,Writer writer) throws
IOException
{
return new OutputStreamWriter(new FramedSnappyCompressorOutputStream
(new WriterOutputStream(writer,UTF8)));
}
});
SNAPPY_OBJECT_MAPPER=new ObjectMapper(jsonFactory).
disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).
disable(SerializationFeature.FAIL_ON_EMPTY_BEANS).
setSerializationInclusion(JsonInclude.Include.NON_NULL).
disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).
registerModule(INT_RANGE_MODULE).
registerModule(JODA_MODULE).
registerModule(TAGS_MODULE);
}
This is not a JMH brenchmark but I made sure I warmed before I took these
times:
Json size: 1743kb
Json time: 17.322ms
Smile size: 624kb
Smile time: 12.619ms
Compressed Smile size: 556kb
Compressed Smile time: 12.003ms
Snappy size: 196kb
Snappy time: 89.368ms
Guido.
--
You received this message because you are subscribed to the Google Groups
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.