public class JacksonDatabindHandle<T> extends com.marklogic.client.impl.JacksonBaseHandle<T> implements ResendableContentHandle<T,java.io.InputStream>, JSONReadHandle, JSONWriteHandle, TextReadHandle, TextWriteHandle, XMLReadHandle, XMLWriteHandle, StructureReadHandle, StructureWriteHandle, CtsQueryWriteHandle
UNKNOWN_LENGTH
Constructor and Description |
---|
JacksonDatabindHandle(java.lang.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.
|
java.lang.Class<T> |
getContentClass()
Returns the class of the handled content, which may be a base
class of the actual class of a content object.
|
com.fasterxml.jackson.databind.ObjectMapper |
getMapper()
Provides access to the ObjectMapper used internally so you can configure
it to fit your JSON.
|
protected boolean |
hasContent() |
static ContentHandleFactory |
newFactory(java.lang.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,
java.lang.Class<?>... pojoClasses)
Creates a factory to create a JacksonDatabindHandle instance for POJO instances
of the specified classes.
|
JacksonDatabindHandle<T> |
newHandle()
Constructs a new handle for the same content representation,
initializing the new handle with the same format and mime type.
|
JacksonDatabindHandle<T>[] |
newHandleArray(int length)
Constructs an uninitialized array with the specified length with items
of the same content representation.
|
protected void |
receiveContent(java.io.InputStream content) |
protected OutputStreamSender |
sendContent() |
protected OutputStreamSender |
sendContent(T content) |
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.
|
T |
toContent(java.io.InputStream serialization)
Converts the serialization to the content representation.
|
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.
|
JacksonDatabindHandle<T> |
withMimetype(java.lang.String mimetype)
Specifies the mime type of the content and returns the handle
as a fluent convenience.
|
void |
write(java.io.OutputStream out)
Implements a callback to write content to the provided output stream
for sending to the database server.
|
bytesToContent, contentToBytes, fromBuffer, receiveAs, toBuffer, toString
getByteLength, getFormat, getMimetype, getServerTimestamp, setByteLength, setFormat, setMimetype, setServerTimestamp
getPointInTimeQueryTimestamp, isResendable, setPointInTimeQueryTimestamp, setResendable, setResponseServerTimestamp
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
newHandle, resendableHandleFor
bytesToContent, contentToBytes, resendableHandleFor
fromBuffer, toBuffer
newArray
public JacksonDatabindHandle(java.lang.Class<T> contentClass)
contentClass
- the class of your custom POJO for databindingpublic JacksonDatabindHandle(T content)
content
- the POJO which should be serializedpublic static ContentHandleFactory newFactory(java.lang.Class<?>... pojoClasses)
pojoClasses
- the POJO classes for which this factory provides a handlepublic static ContentHandleFactory newFactory(com.fasterxml.jackson.databind.ObjectMapper mapper, java.lang.Class<?>... pojoClasses)
mapper
- the Jackson ObjectMapper for marshaling the POJO classespojoClasses
- the POJO classes for which this factory provides a handlepublic JacksonDatabindHandle<T> withFormat(Format format)
format
- the format of the contentpublic JacksonDatabindHandle<T> withMimetype(java.lang.String mimetype)
mimetype
- the mime type of the contentpublic T get()
get
in interface ContentHandle<T>
get
in class com.marklogic.client.impl.JacksonBaseHandle<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)
set
in interface ContentHandle<T>
set
in class com.marklogic.client.impl.JacksonBaseHandle<T>
content
- your custom POJOpublic JacksonDatabindHandle<T> with(T content)
content
- your custom POJOpublic java.lang.Class<T> getContentClass()
ContentHandle
getContentClass
in interface ContentHandle<T>
public JacksonDatabindHandle<T> newHandle()
ContentHandle
newHandle
in interface BufferableContentHandle<T,java.io.InputStream>
newHandle
in interface ContentHandle<T>
newHandle
in interface ResendableContentHandle<T,java.io.InputStream>
public JacksonDatabindHandle<T>[] newHandleArray(int length)
BufferableContentHandle
newHandleArray
in interface BufferableContentHandle<T,java.io.InputStream>
newHandleArray
in interface ResendableContentHandle<T,java.io.InputStream>
length
- the number of positions in the arraypublic com.fasterxml.jackson.databind.ObjectMapper getMapper()
getMapper
in class com.marklogic.client.impl.JacksonBaseHandle<T>
public void setMapper(com.fasterxml.jackson.databind.ObjectMapper mapper)
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 T toContent(java.io.InputStream serialization)
BufferableContentHandle
toContent
in interface BufferableContentHandle<T,java.io.InputStream>
toContent
in class com.marklogic.client.impl.JacksonBaseHandle<T>
serialization
- a serialization of the contentprotected boolean hasContent()
hasContent
in class com.marklogic.client.impl.JacksonBaseHandle<T>
protected OutputStreamSender sendContent()
sendContent
in class com.marklogic.client.impl.HandleImplementation<java.io.InputStream,OutputStreamSender>
protected OutputStreamSender sendContent(T content)
sendContent
in class com.marklogic.client.impl.JacksonBaseHandle<T>
protected void receiveContent(java.io.InputStream content)
receiveContent
in class com.marklogic.client.impl.HandleImplementation<java.io.InputStream,OutputStreamSender>
public void write(java.io.OutputStream out) throws java.io.IOException
OutputStreamSender
write
in interface OutputStreamSender
out
- the output stream receiving the contentjava.io.IOException
- if io problems ariseCopyright © 2013-2021 MarkLogic Corporation.