Class MemoryBlob

  • All Implemented Interfaces:
    Blob

    public class MemoryBlob
    extends Object
    implements Blob
    A Blob implementation that stores content in memory.

    This implementation is based on jdbcBlob from HSQLDB (copyright HSQL Development Group).

    Since:
    1.2
    • Constructor Summary

      Constructors 
      Constructor Description
      MemoryBlob()  
      MemoryBlob​(byte[] data)
      Constructs a new MemoryBlob instance wrapping the given octet sequence.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void free()  
      InputStream getBinaryStream()
      Retrieves the BLOB value designated by this Blob instance as a stream.
      InputStream getBinaryStream​(long arg0, long arg1)  
      byte[] getBytes​(long pos, int length)
      Retrieves all or part of the BLOB value that this Blob object represents, as an array of bytes.
      long length()
      Returns the number of bytes in the BLOB value designated by this Blob object.
      long position​(byte[] pattern, long start)
      Retrieves the byte position at which the specified byte array pattern begins within the BLOB value that this Blob object represents.
      long position​(Blob pattern, long start)
      Retrieves the byte position in the BLOB value designated by this Blob object at which pattern begins.
      OutputStream setBinaryStream​(long pos)
      Always throws an exception.
      int setBytes​(long pos, byte[] bytes)
      Always throws an exception.
      int setBytes​(long pos, byte[] bytes, int offset, int len)
      Always throws an exception.
      void truncate​(long len)
      Truncates the BLOB value that this Blob object represents to be len bytes in length.
    • Constructor Detail

      • MemoryBlob

        public MemoryBlob()
      • MemoryBlob

        public MemoryBlob​(byte[] data)
        Constructs a new MemoryBlob instance wrapping the given octet sequence.
        Parameters:
        data - the octet sequence representing the Blob value
        Throws:
        CayenneRuntimeException - if the argument is null
    • Method Detail

      • length

        public long length()
                    throws SQLException
        Returns the number of bytes in the BLOB value designated by this Blob object.
        Specified by:
        length in interface Blob
        Returns:
        length of the BLOB in bytes
        Throws:
        SQLException - if there is an error accessing the length of the BLOB
      • getBytes

        public byte[] getBytes​(long pos,
                               int length)
                        throws SQLException
        Retrieves all or part of the BLOB value that this Blob object represents, as an array of bytes. This byte array contains up to length consecutive bytes starting at position pos.

        The official specification is ambiguous in that it does not precisely indicate the policy to be observed when pos > this.length() - length. One policy would be to retrieve the octets from pos to this.length(). Another would be to throw an exception. This implementation observes the later policy.

        Specified by:
        getBytes in interface Blob
        Parameters:
        pos - the ordinal position of the first byte in the BLOB value to be extracted; the first byte is at position 1
        length - the number of consecutive bytes to be copied
        Returns:
        a byte array containing up to length consecutive bytes from the BLOB value designated by this Blob object, starting with the byte at position pos
        Throws:
        SQLException - if there is an error accessing the BLOB value
      • getBinaryStream

        public InputStream getBinaryStream()
                                    throws SQLException
        Retrieves the BLOB value designated by this Blob instance as a stream.
        Specified by:
        getBinaryStream in interface Blob
        Returns:
        a stream containing the BLOB data
        Throws:
        SQLException - if there is an error accessing the BLOB value
      • position

        public long position​(byte[] pattern,
                             long start)
                      throws SQLException
        Retrieves the byte position at which the specified byte array pattern begins within the BLOB value that this Blob object represents. The search for pattern begins at position start.

        Specified by:
        position in interface Blob
        Parameters:
        pattern - the byte array for which to search
        start - the position at which to begin searching; the first position is 1
        Returns:
        the position at which the pattern appears, else -1
        Throws:
        SQLException - if there is an error accessing the BLOB
      • position

        public long position​(Blob pattern,
                             long start)
                      throws SQLException
        Retrieves the byte position in the BLOB value designated by this Blob object at which pattern begins. The search begins at position start.
        Specified by:
        position in interface Blob
        Parameters:
        pattern - the Blob object designating the BLOB value for which to search
        start - the position in the BLOB value at which to begin searching; the first position is 1
        Returns:
        the position at which the pattern begins, else -1
        Throws:
        SQLException - if there is an error accessing the BLOB value
      • setBytes

        public int setBytes​(long pos,
                            byte[] bytes,
                            int offset,
                            int len)
                     throws SQLException
        Always throws an exception.
        Specified by:
        setBytes in interface Blob
        Throws:
        SQLException
      • truncate

        public void truncate​(long len)
                      throws SQLException
        Truncates the BLOB value that this Blob object represents to be len bytes in length.
        Specified by:
        truncate in interface Blob
        Parameters:
        len - the length, in bytes, to which the BLOB value that this Blob object represents should be truncated
        Throws:
        SQLException - if there is an error accessing the BLOB value