public interface Content
A Content object encapsulates content (a document) that can be transferred to and inserted into a
contentbase. Because Session.insertContent(Content)
automatically handles recovery of
interrupted document inserts, Content objects must be rewindable to enable auto-retry.
It is possible to create non-rewindable Content instances, such as from an InputStream, which is too large to buffer and can only be consumed once. If a problem is encountered during or after a non-rewindable Content instance is processed then no automatic retries will be possible and an exception will be thrown.
If rewindable and non-rewindable Content objects are mixed together in a multi-document insert (
Session.insertContent(Content[])
and only rewindable instances have so far been
processed, the insert will be retryable. If a non-rewindable instance is in process or if the
current instance is rewindable but a non-rewindable instance has previously been processed when a
problem occurs then no automatic retry is possible and processing will stop with an exception.
Instances of this interface for common usage patterns may be created with the
ContentFactory
helper class. This interface may also be implemented by user code to
handle specialized situations.
Modifier and Type | Method and Description |
---|---|
void |
close()
This method will be called after successfully consuming the content from the InputStream
returned by
openDataStream() . |
ContentCreateOptions |
getCreateOptions()
Return the
ContentCreateOptions object which should be applied to this object. |
java.lang.String |
getUri()
The URI with which this content should be inserted.
|
boolean |
isRewindable()
Indicates whether this Content instance is rewindable and therefore automatically retryable.
|
java.io.InputStream |
openDataStream()
Return the byte stream that makes up this document.
|
void |
rewind()
This method tells the implementation that the content should be rewound to start again.
|
long |
size()
The size of the content, if known.
|
java.lang.String getUri()
java.io.InputStream openDataStream() throws java.io.IOException
Return the byte stream that makes up this document. If the content is character data, as opposed to a binary BLOB, this should be a UTF-8 encoding of the characters.
Each call to this method returns a stream positioned at the beginning of the content. The
InputStream
object should be closed by the client. The returned InputStream is not
intended to be shared. Each call to this method implies that any prior state should be
discarded and a new stream created that is positioned at the beginning of the content.
java.io.IOException
ContentCreateOptions getCreateOptions()
ContentCreateOptions
object which should be applied to this object. Note
that if none was provided to the factory method that created this Content instance, one may
have been created with appropriate defaults for the content provided.ContentCreateOptions
.boolean isRewindable()
Session.insertContent(Content)
) is interrupted and this
method returns true, then the operation will automatically be restarted. If this method
returns false, then an exception will be thrown immediately. If multiple Content objects are
being inserted at once (Session.insertContent(Content[])
) and any non-rewindable (
Content
object has already been even partially sent, the insert will fail
immediately.openDataStream()
may be called repeatedly), false
otherwise.void rewind() throws java.io.IOException
isRewindable()
returns true and in that case only
after openDataStream()
has been called.java.io.IOException
- If there is a problem rewinding.long size()
void close()
openDataStream()
. This method need not close the stream, that is the
responsibility of the client, but it may invalidate the stream. This method is to inform the
implementation that any resources it may be holding can be released.Copyright © 2019 MarkLogic Corporation. All Rights Reserved.
Complete online documentation for MarkLogic Server, XQuery and related components may be found at developer.marklogic.com