Class ManagedMemoryDataSource

java.lang.Object
org.apache.axis.attachments.ManagedMemoryDataSource
All Implemented Interfaces:
DataSource

public class ManagedMemoryDataSource extends Object implements DataSource
This class allows small attachments to be cached in memory, while large ones are cached out. It implements a Java Activiation Data source interface.
Author:
Rick Rineholt
  • Field Details

    • log

      protected static org.apache.commons.logging.Log log
      Field log
    • contentType

      protected String contentType
      The content type. This defaults to application/octet-stream.
    • MIN_MEMORY_DISK_CACHED

      public static final int MIN_MEMORY_DISK_CACHED
      Field MIN_MEMORY_DISK_CACHED
      See Also:
    • MAX_MEMORY_DISK_CACHED

      public static final int MAX_MEMORY_DISK_CACHED
      Field MAX_MEMORY_DISK_CACHED
      See Also:
    • maxCached

      protected int maxCached
      Field maxCached
    • diskCacheFile

      protected File diskCacheFile
      Field diskCacheFile
    • readers

      protected WeakHashMap readers
      Field readers
    • deleted

      protected boolean deleted
      Flag to show if the resources behind this have been deleted.
    • READ_CHUNK_SZ

      public static final int READ_CHUNK_SZ
      Field READ_CHUNK_SZ
      See Also:
    • debugEnabled

      protected boolean debugEnabled
      Field debugEnabled
    • memorybuflist

      protected LinkedList memorybuflist
      The linked list to hold the in memory buffers.
    • currentMemoryBuf

      protected byte[] currentMemoryBuf
      Hold the last memory buffer.
    • currentMemoryBufSz

      protected int currentMemoryBufSz
      The number of bytes written to the above buffer.
    • totalsz

      protected long totalsz
      The total size in bytes in this data source.
    • cachediskstream

      protected BufferedOutputStream cachediskstream
      This is the cached disk stream.
    • closed

      protected boolean closed
      If true the source input stream is now closed.
    • is_log

      protected static org.apache.commons.logging.Log is_log
      Field is_log
  • Constructor Details

    • ManagedMemoryDataSource

      protected ManagedMemoryDataSource()
      Constructor ManagedMemoryDataSource.
    • ManagedMemoryDataSource

      public ManagedMemoryDataSource(InputStream ss, int maxCached, String contentType) throws IOException
      Create a new boundary stream.
      Parameters:
      ss - is the source input stream that is used to create this data source.
      maxCached - This is the max memory that is to be used to cache the data.
      contentType - the mime type for this data stream. by buffering you can some effiency in searching.
      Throws:
      IOException
    • ManagedMemoryDataSource

      public ManagedMemoryDataSource(InputStream ss, int maxCached, String contentType, boolean readall) throws IOException
      Create a new boundary stream.
      Parameters:
      ss - is the source input stream that is used to create this data source.
      maxCached - This is the max memory that is to be used to cache the data.
      contentType - the mime type for this data stream. by buffering you can some effiency in searching.
      readall - if true will read in the whole source.
      Throws:
      IOException
  • Method Details

    • getContentType

      public String getContentType()
      This method returns the MIME type of the data in the form of a string.
      Specified by:
      getContentType in interface DataSource
      Returns:
      The mime type.
    • getInputStream

      public InputStream getInputStream() throws IOException
      This method returns an InputStream representing the the data and throws the appropriate exception if it can not do so.
      Specified by:
      getInputStream in interface DataSource
      Returns:
      the java.io.InputStream for the data source.
      Throws:
      IOException
    • getName

      public String getName()
      This will flush any memory source to disk and provide the name of the file if desired.
      Specified by:
      getName in interface DataSource
      Returns:
      the name of the file of the stream
    • getOutputStream

      public OutputStream getOutputStream() throws IOException
      This method returns an OutputStream where the data can be written and throws the appropriate exception if it can not do so. NOT SUPPORTED, not need for axis, data sources are create by constructors.
      Specified by:
      getOutputStream in interface DataSource
      Returns:
      always null
      Throws:
      IOException
    • write

      protected void write(byte[] data) throws IOException
      Write bytes to the stream.
      Parameters:
      data - all bytes of this array are written to the stream
      Throws:
      IOException - if there was a problem writing the data
    • write

      protected void write(byte[] data, int length) throws IOException
      This method is a low level write. Note it is designed to in the future to allow streaming to both memory AND to disk simultaneously.
      Parameters:
      data -
      length -
      Throws:
      IOException
    • close

      protected void close() throws IOException
      This method is a low level write. Close the stream.
      Throws:
      IOException
    • finalize

      protected void finalize() throws Throwable
      Overrides:
      finalize in class Object
      Throws:
      Throwable
    • flushToDisk

      protected void flushToDisk() throws IOException, FileNotFoundException
      Routine to flush data to disk if is in memory.
      Throws:
      IOException
      FileNotFoundException
    • delete

      public boolean delete()
    • main

      public static void main(String[] arg)
      Method main
      Parameters:
      arg -
    • getDiskCacheFile

      public File getDiskCacheFile()
      get the filename of the content if it is cached to disk.
      Returns:
      file object pointing to file, or null for memory-stored content