Interface MemoryBlob
- All Superinterfaces:
Blob,WritableBlob
This interface redefines several methods from Blob and WritableBlob to not
throw IOException. Also note that since data is stored in memory, calling WritableBlob.release() is not required.
Instances are created with Blobs.createMemoryBlob() or using FACTORY.
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionGet an input stream to read the data in the blob.Create an output stream to write data to the blob.longgetSize()Get the (approximate) size of the blob.readOnce()Get an input stream that consumes the content of this blob.voidrelease()Release all resources held by this blob.Methods inherited from interface org.apache.axiom.blob.WritableBlob
readFrom
-
Field Details
-
FACTORY
-
-
Method Details
-
getInputStream
MemoryBlobInputStream getInputStream()Description copied from interface:BlobGet an input stream to read the data in the blob. A newInputStreamobject is returned each time this method is called, and the stream is positioned at the beginning of the data.- Specified by:
getInputStreamin interfaceBlob- Returns:
- the input stream to read the data from
-
getOutputStream
MemoryBlobOutputStream getOutputStream()Description copied from interface:WritableBlobCreate an output stream to write data to the blob. The blob must be in state NEW when this method is called. It will be in state UNCOMMITTED after this method completes successfully. Note that this implies that this method may be called at most once for a given blob instance.Calls to methods of the returned output stream will modify the state of the blob according to the following rules:
- A call to
OutputStream.close()will change the state to COMMITTED. - Calls to other methods will not modify the state of the blob. They will result in an
IOExceptionif the state is COMMITTED, i.e. if the stream has already been closed.
The returned stream may implement
ReadFromSupport, especially if the blob stores its data in memory (in which caseReadFromSupport.readFrom(InputStream, long)would read data directly into the buffers managed by the blob).- Specified by:
getOutputStreamin interfaceWritableBlob- Returns:
- an output stream that can be used to write data to the blob
- A call to
-
getSize
long getSize()Description copied from interface:BlobGet the (approximate) size of the blob. Returns -1 if the size can't be determined without reading the entire blob (in which case the caller may want to useBlob.writeTo(OutputStream)with anOutputStreamthat counts the number of bytes to determine the size). The method may choose to return a value based on an estimation. This may be the case e.g. if reading the data involves a decoding operation, and the length of the resulting stream can't be determined precisely without performing the decoding operation.When reading the actual data, the code should always read until the end of the stream is reached (as indicated by the return value of the
readmethods of theInputStreamclass). It must be prepared to reach the end of the stream after a number of bytes that is lower or higher than the value returned by this method. -
release
void release()Description copied from interface:WritableBlobRelease all resources held by this blob. This method will put the blob into the RELEASED state and the content will no longer be accessible.- Specified by:
releasein interfaceWritableBlob
-
readOnce
MemoryBlobInputStream readOnce()Get an input stream that consumes the content of this blob. The memory held by this blob will be gradually released as data is read from the stream.- Returns:
- the input stream to read the data from
-