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 © 2024 MarkLogic
Corporation
Complete online documentation for MarkLogic Server,
XQuery and related components may
be found at
developer.marklogic.com