Class AMedia
- java.lang.Object
-
- org.zkoss.util.media.AMedia
-
- All Implemented Interfaces:
java.io.Serializable,Media
public class AMedia extends java.lang.Object implements Media, java.io.Serializable
A media object holding content such PDF, HTML, DOC or XLS content.AMedia is serializable, but, if you are using InputStream or Reader, you have to extend this class, and provide the implementation to serialize and deserialize
_isdataor_rddata(they are both transient).- Author:
- tomyeh
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.io.InputStream_isdataThe input stream,getStreamData()protected java.io.Reader_rddataThe input stream,getReaderData()protected static java.io.ReaderDYNAMIC_READERUsed if you want to implement a media whose reader is created dynamically each timegetReaderData()is called.protected static java.io.InputStreamDYNAMIC_STREAMUsed if you want to implement a media whose input stream is created dynamically each timegetStreamData()is called.
-
Constructor Summary
Constructors Constructor Description AMedia(java.io.File file, java.lang.String ctype, java.lang.String charset)Construct with a file.AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, byte[] data)Construct with name, format, content type and binary data.AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.File file, boolean binary)Construct with name, format, content type and a file.AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.File file, java.lang.String charset)Construct with name, format, content type and a file.AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.InputStream data)Construct with name, format, content type and stream data (binary).AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.Reader data)Construct with name, format, content type and reader data (textual).AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.lang.String data)Construct with name, format, content type and text data.AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.net.URL url, java.lang.String charset)Construct with name, format, content type and URL.AMedia(java.net.URL url, java.lang.String ctype, java.lang.String charset)Construct with a file.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]getByteData()Returns the raw data in byte array.java.lang.StringgetContentType()Returns the content type, e.g., "image/jpeg", or null if not available.java.lang.StringgetFormat()Returns the format name, e.g., "jpeg", or null if not available.java.lang.StringgetName()Returns the name (usually filename) of this media, or null if not available.java.io.ReadergetReaderData()Returns the reader of this media to retrieve the data.java.io.InputStreamgetStreamData()Returns the input stream of this media.java.lang.StringgetStringData()Returns the raw data in string.booleaninMemory()Returns whether the data is cached in memory (in form of byte[] or String).booleanisBinary()Returns whether the format of this content is binary or text-based.booleanisContentDisposition()Whether to allow Content-Disposition or not when writing the media to response header.voidsetContentDisposition(boolean cntDisposition)Set whether to allow Content-Disposition or not when writing the media to response header.java.lang.StringtoString()
-
-
-
Field Detail
-
DYNAMIC_STREAM
protected static final java.io.InputStream DYNAMIC_STREAM
Used if you want to implement a media whose input stream is created dynamically each timegetStreamData()is called.- See Also:
AMedia(String,String,String,InputStream)
-
DYNAMIC_READER
protected static final java.io.Reader DYNAMIC_READER
Used if you want to implement a media whose reader is created dynamically each timegetReaderData()is called.- See Also:
AMedia(String,String,String,Reader)
-
_isdata
protected transient java.io.InputStream _isdata
The input stream,getStreamData()
-
_rddata
protected transient java.io.Reader _rddata
The input stream,getReaderData()
-
-
Constructor Detail
-
AMedia
public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, byte[] data)Construct with name, format, content type and binary data.It tries to construct format and ctype from each other or name.
- Parameters:
name- the name (usually filename); might be null.format- the format; might be null. Example: "html" and "xml"ctype- the content type; might be null. Example: "text/html" and "text/xml;charset=UTF-8".data- the binary data; never null
-
AMedia
public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.lang.String data)Construct with name, format, content type and text data.It tries to construct format and ctype from each other or name.
- Parameters:
name- the name (usually filename); might be null.format- the format; might be null.ctype- the content type; might be null.data- the text data; never null
-
AMedia
public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.InputStream data)Construct with name, format, content type and stream data (binary).It tries to construct format and ctype from each other or name.
- Parameters:
name- the name (usually filename); might be null.format- the format; might be null.ctype- the content type; might be null.data- the binary data; never null. If the input stream is created dynamically each timegetStreamData()is called, you shall passDYNAMIC_STREAMas the data argument. Then, overridegetStreamData()to return the correct stream. Note: the caller ofgetStreamData()has to close the returned input stream.
-
AMedia
public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.Reader data)Construct with name, format, content type and reader data (textual).It tries to construct format and ctype from each other or name.
- Parameters:
name- the name (usually filename); might be null.format- the format; might be null.ctype- the content type; might be null.data- the string data; never null If the reader is created dynamically each timegetReaderData()is called, you shall passDYNAMIC_READERas the data argument. Then, overridegetReaderData()to return the correct reader.
-
AMedia
public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.File file, boolean binary) throws java.io.FileNotFoundExceptionConstruct with name, format, content type and a file.Unlike others, it uses the so-called repeatable input stream or reader (depending on binary or not) to represent the file, so the input stream (
getStreamData()) or the reader (getReaderData()) will be re-opened in the next invocation ofInputStream.read()afterInputStream.close()is called. See alsoRepeatableInputStreamandRepeatableReader.- Parameters:
name- the name (usually filename); might be null. If null, the file name is used.format- the format; might be null.ctype- the content type; might be null.file- the file; never null.binary- whether it is binary. If not binary, "UTF-8" is assumed.- Throws:
java.io.FileNotFoundException
-
AMedia
public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.File file, java.lang.String charset) throws java.io.FileNotFoundExceptionConstruct with name, format, content type and a file.Unlike others, it uses the so-called repeatable input stream or reader (depending on charset is null or not) to represent the file, so the input stream (
getStreamData()) or the reader (getReaderData()) will be re-opened in the next invocation ofInputStream.read()afterInputStream.close()is called. See alsoRepeatableInputStreamandRepeatableReader.- Parameters:
name- the name (usually filename); might be null. If null, the file name is used.format- the format; might be null.ctype- the content type; might be null.file- the file; never null.charset- the charset. If null, it is assumed to be binary.- Throws:
java.io.FileNotFoundException
-
AMedia
public AMedia(java.io.File file, java.lang.String ctype, java.lang.String charset) throws java.io.FileNotFoundExceptionConstruct with a file. It is the same as AMedia(null, null, ctype, file, charset).- Parameters:
ctype- the content type; might be null. If null, it is retrieved from the file name's extension.- Throws:
java.io.FileNotFoundException- Since:
- 3.0.8
-
AMedia
public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.net.URL url, java.lang.String charset) throws java.io.FileNotFoundExceptionConstruct with name, format, content type and URL.Unlike others, it uses the so-called repeatable input stream or reader (depending on charset is null or not) to represent the resource, so the input stream (
getStreamData()) or the reader (getReaderData()) will be re-opened in the next invocation ofInputStream.read()afterInputStream.close()is called. See alsoRepeatableInputStreamandRepeatableReader.- Parameters:
name- the name; might be null. If null, URL's name is used.format- the format; might be null.ctype- the content type; might be null.url- the resource URL; never null.- Throws:
java.io.FileNotFoundException- Since:
- 3.0.8
-
AMedia
public AMedia(java.net.URL url, java.lang.String ctype, java.lang.String charset) throws java.io.FileNotFoundExceptionConstruct with a file. It is the same as AMedia(null, null, ctype, url, charset).- Parameters:
ctype- the content type; might be null. If null, it is retrieved from the file name's extension.- Throws:
java.io.FileNotFoundException- Since:
- 3.0.8
-
-
Method Detail
-
setContentDisposition
public void setContentDisposition(boolean cntDisposition)
Set whether to allow Content-Disposition or not when writing the media to response header.- Since:
- 7.0.0
-
isBinary
public boolean isBinary()
Description copied from interface:MediaReturns whether the format of this content is binary or text-based. If true, useMedia.getByteData()orMedia.getStreamData()to retrieve its content. If false, useMedia.getStringData()orMedia.getReaderData()to retrieve its content.- Specified by:
isBinaryin interfaceMedia- See Also:
Media.getStringData(),Media.getByteData(),Media.getReaderData(),Media.getStreamData()
-
inMemory
public boolean inMemory()
Description copied from interface:MediaReturns whether the data is cached in memory (in form of byte[] or String).- Specified by:
inMemoryin interfaceMedia- See Also:
Media.getStringData(),Media.getByteData(),Media.getReaderData(),Media.getStreamData()
-
getByteData
public byte[] getByteData()
Description copied from interface:MediaReturns the raw data in byte array.It might not be a copy, so don't modify it directly unless you know what you are doing.
If the data is not cached in memory (
Media.inMemory()return false), the data will be read fromMedia.getStreamData(). Furthermore, it also implies you can not invoke this method again.- Specified by:
getByteDatain interfaceMedia- See Also:
Media.getStringData()
-
getStringData
public java.lang.String getStringData()
Description copied from interface:MediaReturns the raw data in string.If the data is not cached in memory (
Media.inMemory()return false), the data will be read fromMedia.getReaderData(). Furthermore, it also implies you can not invoke this method again.- Specified by:
getStringDatain interfaceMedia- See Also:
Media.getByteData()
-
getStreamData
public java.io.InputStream getStreamData()
Returns the input stream of this media.Note: the caller has to invoke
InputStream.close()after using the input stream returned by this method.It wraps
getByteData()withByteArrayInputStreamifinMemory()returns true.- Specified by:
getStreamDatain interfaceMedia- Throws:
java.lang.IllegalStateException- if the mediaisBinary()returns false- See Also:
Media.getReaderData()
-
getReaderData
public java.io.Reader getReaderData()
Returns the reader of this media to retrieve the data.Note: the caller has to invoke
Reader.close()after using the input stream returned by this method.It wraps
getStringData()withStringReader, ifinMemory()returns true.- Specified by:
getReaderDatain interfaceMedia- Throws:
java.lang.IllegalStateException- ifisBinary()returns true- See Also:
Media.getStreamData()
-
getName
public java.lang.String getName()
Description copied from interface:MediaReturns the name (usually filename) of this media, or null if not available.
-
getFormat
public java.lang.String getFormat()
Description copied from interface:MediaReturns the format name, e.g., "jpeg", or null if not available.- Specified by:
getFormatin interfaceMedia- See Also:
Media.getContentType()
-
getContentType
public java.lang.String getContentType()
Description copied from interface:MediaReturns the content type, e.g., "image/jpeg", or null if not available.- Specified by:
getContentTypein interfaceMedia- See Also:
Media.getFormat()
-
isContentDisposition
public boolean isContentDisposition()
Description copied from interface:MediaWhether to allow Content-Disposition or not when writing the media to response header.Default: true
- Specified by:
isContentDispositionin interfaceMedia
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-