public class JacksonDatabindHandle<T> extends com.marklogic.client.impl.JacksonBaseHandle<T> implements ContentHandle<T>, OutputStreamSender, BufferableHandle, JSONReadHandle, JSONWriteHandle, TextReadHandle, TextWriteHandle, XMLReadHandle, XMLWriteHandle, StructureReadHandle, StructureWriteHandle
An adapter for using the Jackson Open Source library for JSON; represents JSON content for reading or writing as objects of the specified POJO class. Enables reading and writing JSON directly to or from POJOs.
UNKNOWN_LENGTH| Constructor and Description |
|---|
JacksonDatabindHandle(Class<T> contentClass)
Specify the type of content this JacksonDatabindHandle will manage.
|
JacksonDatabindHandle(T content)
Provides a handle on POJO content.
|
| Modifier and Type | Method and Description |
|---|---|
T |
get()
Returns the content.
|
com.fasterxml.jackson.databind.ObjectMapper |
getMapper()
Provides access to the ObjectMapper used internally so you can configure it to fit your JSON.
|
static ContentHandleFactory |
newFactory(Class<?>... pojoClasses)
Creates a factory to create a JacksonDatabindHandle instance for POJO instances of the specified classes.
|
static ContentHandleFactory |
newFactory(com.fasterxml.jackson.databind.ObjectMapper mapper,
Class<?>... pojoClasses)
Creates a factory to create a JacksonDatabindHandle instance for POJO instances of the specified classes.
|
void |
set(T content)
Assigns your custom POJO as the content.
|
void |
setMapper(com.fasterxml.jackson.databind.ObjectMapper mapper)
Enables clients to specify their own ObjectMapper instance, including databinding mappers for formats other than JSON.
|
JacksonDatabindHandle<T> |
with(T content)
Assigns a your custom POJO as the content and returns the handle.
|
JacksonDatabindHandle<T> |
withFormat(Format format)
Specifies the format of the content and returns the handle as a fluent convenience.
|
void |
write(OutputStream out)
Implements a callback to write content to the provided output stream for sending to the database server.
|
fromBuffer, toBuffer, toStringgetByteLength, getFormat, getMimetype, getServerTimestamp, setByteLength, setFormat, setMimetype, setServerTimestampgetPointInTimeQueryTimestamp, setPointInTimeQueryTimestamp, setResponseServerTimestampequals, getClass, hashCode, notify, notifyAll, wait, wait, waitfromBuffer, toBufferpublic JacksonDatabindHandle(Class<T> contentClass)
Specify the type of content this JacksonDatabindHandle will manage.
contentClass - the class of your custom POJO for databindingpublic JacksonDatabindHandle(T content)
Provides a handle on POJO content.
content - the POJO which should be serializedpublic static ContentHandleFactory newFactory(Class<?>... pojoClasses)
Creates a factory to create a JacksonDatabindHandle instance for POJO instances of the specified classes.
pojoClasses - the POJO classes for which this factory provides a handlepublic static ContentHandleFactory newFactory(com.fasterxml.jackson.databind.ObjectMapper mapper, Class<?>... pojoClasses)
Creates a factory to create a JacksonDatabindHandle instance for POJO instances of the specified classes.
mapper - the Jackson ObjectMapper for marshaling the POJO classespojoClasses - the POJO classes for which this factory provides a handlepublic JacksonDatabindHandle<T> withFormat(Format format)
Specifies the format of the content and returns the handle as a fluent convenience.
format - the format of the contentpublic T get()
Returns the content.
get in interface ContentHandle<T>JacksonDatabindHandle(Object) or set(Object) or if the content is being de-serialized, a pojo of the specified type populated with the datapublic void set(T content)
Assigns your custom POJO as the content.
set in interface ContentHandle<T>set in class com.marklogic.client.impl.JacksonBaseHandle<T>content - your custom POJOpublic JacksonDatabindHandle<T> with(T content)
Assigns a your custom POJO as the content and returns the handle.
content - your custom POJOpublic com.fasterxml.jackson.databind.ObjectMapper getMapper()
Provides access to the ObjectMapper used internally so you can configure it to fit your JSON.
getMapper in class com.marklogic.client.impl.JacksonBaseHandle<T>public void setMapper(com.fasterxml.jackson.databind.ObjectMapper mapper)
Enables clients to specify their own ObjectMapper instance, including databinding mappers for formats other than JSON. For example:
ObjectMapper mapper = new CsvMapper();
mapper.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
mapper.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, false);
handle.setMapper(mapper);
Use at your own risk! Note that you most likely want to set to false the two options we demonstrate above (JsonGenerator.Feature.AUTO_CLOSE_TARGET and JsonParser.Feature.AUTO_CLOSE_SOURCE) as we do so your mapper will not close streams which we may need to reuse if we have to resend a network request.
setMapper in class com.marklogic.client.impl.JacksonBaseHandle<T>public void write(OutputStream out) throws IOException
OutputStreamSenderImplements a callback to write content to the provided output stream for sending to the database server.
write in interface OutputStreamSenderwrite in class com.marklogic.client.impl.JacksonBaseHandle<T>out - the output stream receiving the contentIOException - if io problems ariseCopyright © 2013-2017 MarkLogic Corporation.