org.apache.axis.attachments

Class ManagedMemoryDataSource

Implemented Interfaces:
javax.activation.DataSource

public class ManagedMemoryDataSource
extends java.lang.Object
implements javax.activation.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 Summary

static int
MAX_MEMORY_DISK_CACHED
Field MAX_MEMORY_DISK_CACHED
static int
MIN_MEMORY_DISK_CACHED
Field MIN_MEMORY_DISK_CACHED
static int
READ_CHUNK_SZ
Field READ_CHUNK_SZ
protected java.io.BufferedOutputStream
cachediskstream
This is the cached disk stream.
protected boolean
closed
If true the source input stream is now closed.
protected String
contentType
The content type.
protected byte[]
currentMemoryBuf
Hold the last memory buffer.
protected int
currentMemoryBufSz
The number of bytes written to the above buffer.
protected boolean
debugEnabled
Field debugEnabled
protected boolean
deleted
Flag to show if the resources behind this have been deleted.
protected java.io.File
diskCacheFile
Field diskCacheFile
protected static Log
is_log
Field is_log
protected static Log
log
Field log
protected int
maxCached
Field maxCached
protected java.util.LinkedList
memorybuflist
The linked list to hold the in memory buffers.
protected java.util.WeakHashMap
readers
Field readers
protected long
totalsz
The total size in bytes in this data source.

Constructor Summary

ManagedMemoryDataSource()
Constructor ManagedMemoryDataSource.
ManagedMemoryDataSource(java.io.InputStream ss, int maxCached, String contentType)
Create a new boundary stream.
ManagedMemoryDataSource(java.io.InputStream ss, int maxCached, String contentType, boolean readall)
Create a new boundary stream.

Method Summary

protected void
close()
This method is a low level write.
boolean
delete()
protected void
finalize()
protected void
flushToDisk()
Routine to flush data to disk if is in memory.
java.lang.String
getContentType()
This method returns the MIME type of the data in the form of a string.
File
getDiskCacheFile()
get the filename of the content if it is cached to disk.
java.io.InputStream
getInputStream()
This method returns an InputStream representing the the data and throws the appropriate exception if it can not do so.
java.lang.String
getName()
This will flush any memory source to disk and provide the name of the file if desired.
java.io.OutputStream
getOutputStream()
This method returns an OutputStream where the data can be written and throws the appropriate exception if it can not do so.
static void
main(arg[] )
Method main
protected void
write(byte[] data)
Write bytes to the stream.
protected void
write(byte[] data, int length)
This method is a low level write.

Field Details

MAX_MEMORY_DISK_CACHED

public static final int MAX_MEMORY_DISK_CACHED
Field MAX_MEMORY_DISK_CACHED
Field Value:
16384

MIN_MEMORY_DISK_CACHED

public static final int MIN_MEMORY_DISK_CACHED
Field MIN_MEMORY_DISK_CACHED
Field Value:
-1

READ_CHUNK_SZ

public static final int READ_CHUNK_SZ
Field READ_CHUNK_SZ
Field Value:
32768

cachediskstream

protected java.io.BufferedOutputStream cachediskstream
This is the cached disk stream.

closed

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

contentType

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

currentMemoryBuf

protected byte[] currentMemoryBuf
Hold the last memory buffer.

currentMemoryBufSz

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

debugEnabled

protected boolean debugEnabled
Field debugEnabled

deleted

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

diskCacheFile

protected java.io.File diskCacheFile
Field diskCacheFile

is_log

protected static Log is_log
Field is_log

log

protected static Log log
Field log

maxCached

protected int maxCached
Field maxCached

memorybuflist

protected java.util.LinkedList memorybuflist
The linked list to hold the in memory buffers.

readers

protected java.util.WeakHashMap readers
Field readers

totalsz

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

Constructor Details

ManagedMemoryDataSource

protected ManagedMemoryDataSource()
Constructor ManagedMemoryDataSource.

ManagedMemoryDataSource

public ManagedMemoryDataSource(java.io.InputStream ss,
                               int maxCached,
                               String contentType)
            throws java.io.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.

ManagedMemoryDataSource

public ManagedMemoryDataSource(java.io.InputStream ss,
                               int maxCached,
                               String contentType,
                               boolean readall)
            throws java.io.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.

Method Details

close

protected void close()
            throws java.io.IOException
This method is a low level write. Close the stream.

delete

public boolean delete()

finalize

protected void finalize()
            throws Throwable

flushToDisk

protected void flushToDisk()
            throws java.io.IOException,
                   java.io.FileNotFoundException
Routine to flush data to disk if is in memory.

getContentType

public java.lang.String getContentType()
This method returns the MIME type of the data in the form of a string.
Returns:
The mime type.

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

getInputStream

public java.io.InputStream getInputStream()
            throws java.io.IOException
This method returns an InputStream representing the the data and throws the appropriate exception if it can not do so.
Returns:
the java.io.InputStream for the data source.

getName

public java.lang.String getName()
This will flush any memory source to disk and provide the name of the file if desired.
Returns:
the name of the file of the stream

getOutputStream

public java.io.OutputStream getOutputStream()
            throws java.io.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.
Returns:
always null

main

public static void main(arg[] )
Method main
Parameters:

write

protected void write(byte[] data)
            throws java.io.IOException
Write bytes to the stream.
Parameters:
data - all bytes of this array are written to the stream

write

protected void write(byte[] data,
                     int length)
            throws java.io.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 -

Copyright B) 2005 Apache Web Services Project. All Rights Reserved.