Nuxeo ECM Projects 5.4.3-SNAPSHOT

org.nuxeo.ecm.core.storage.sql.coremodel
Class SQLBlob

java.lang.Object
  extended by org.nuxeo.ecm.core.api.impl.blob.AbstractBlob
      extended by org.nuxeo.ecm.core.api.impl.blob.StreamBlob
          extended by org.nuxeo.ecm.core.api.impl.blob.DefaultStreamBlob
              extended by org.nuxeo.ecm.core.storage.sql.coremodel.SQLBlob
All Implemented Interfaces:
Serializable, Blob

public class SQLBlob
extends DefaultStreamBlob
implements Serializable

A Blob wrapping a Binary value.

Author:
Florent Guillaume, Bogdan Stefanescu
See Also:
Serialized Form

Field Summary
static boolean IS_STREAMING_ENABLED
          By default the SQLBlob is remotable through Nuxeo streaming service.
 
Fields inherited from class org.nuxeo.ecm.core.api.impl.blob.AbstractBlob
EMPTY_BYTE_ARRAY, EMPTY_INPUT_STREAM, EMPTY_READER, EMPTY_STRING
 
Constructor Summary
SQLBlob(Binary binary, String filename, String mimeType, String encoding, String digest)
           
 
Method Summary
 Binary getBinary()
           
 long getLength()
          Gets the data length in bytes if known.
 InputStream getStream()
           
 boolean isPersistent()
          Checks whether this blob is persistent.
 Blob persist()
          Persist this stream so that Blob.getStream() method can be called successfully several times.
 Object writeReplace()
          Replace this object with a StreamingBlob when serialized.
 
Methods inherited from class org.nuxeo.ecm.core.api.impl.blob.DefaultStreamBlob
getDigest, getEncoding, getFilename, getMimeType, setDigest, setEncoding, setFilename, setMimeType
 
Methods inherited from class org.nuxeo.ecm.core.api.impl.blob.StreamBlob
asByteArrayBlob, asStringBlob, getByteArray, getReader, getString, readBytes, readBytes, readString
 
Methods inherited from class org.nuxeo.ecm.core.api.impl.blob.AbstractBlob
copy, copy, transferTo, transferTo, transferTo
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

IS_STREAMING_ENABLED

public static final boolean IS_STREAMING_ENABLED
By default the SQLBlob is remotable through Nuxeo streaming service. You can disable this by defining the following runtime (or system) property: org.nuxeo.ecm.core.storage.sql.blob_streaming = false This way the blob will use the default serialization (file serialization) that is optimized for servers that are using a shared file system (and not nuxeo streaming)

Constructor Detail

SQLBlob

public SQLBlob(Binary binary,
               String filename,
               String mimeType,
               String encoding,
               String digest)
Method Detail

getLength

public long getLength()
Description copied from interface: Blob
Gets the data length in bytes if known.

Specified by:
getLength in interface Blob
Overrides:
getLength in class StreamBlob
Returns:
the data length or -1 if not known

getStream

public InputStream getStream()
                      throws IOException
Specified by:
getStream in interface Blob
Throws:
IOException

isPersistent

public boolean isPersistent()
Description copied from interface: Blob
Checks whether this blob is persistent. (i.e. if Blob.getStream() can be successfully called several times).

Specified by:
isPersistent in interface Blob
Returns:
true if persistent, false otherwise

persist

public Blob persist()
Description copied from interface: Blob
Persist this stream so that Blob.getStream() method can be called successfully several times. The persistence is done in a temporary file or in memory - this is up to the implementation.

Blobs that are already persistent return themselves.

Persistence should update the internal structure of the Blob to make it persistent whenever possible and hence return itself whenever possible. This behavior cannot be guaranteed by every implementation however.

Specified by:
persist in interface Blob
Returns:
a persistent version of the blob

getBinary

public Binary getBinary()

writeReplace

public Object writeReplace()
                    throws ObjectStreamException
Replace this object with a StreamingBlob when serialized. The StreamingBlob object can be sent to remote machines through nuxeo streaming mechanism. If IS_STREAMING_ENABLED is false then no replace takes place.

Returns:
a streaming blob that points to the same content as this one
Throws:
ObjectStreamException

Nuxeo ECM Projects 5.4.3-SNAPSHOT

Copyright © 2011 Nuxeo SAS. All Rights Reserved.