public class AMedia extends java.lang.Object implements Media, java.io.Serializable
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 _isdata
or _rddata
(they are both transient).
Modifier and Type | Field and Description |
---|---|
protected java.io.InputStream |
_isdata
The input stream,
getStreamData() |
protected java.io.Reader |
_rddata
The input stream,
getReaderData() |
protected static java.io.Reader |
DYNAMIC_READER
Used if you want to implement a media whose reader is created
dynamically each time
getReaderData() is called. |
protected static java.io.InputStream |
DYNAMIC_STREAM
Used if you want to implement a media whose input stream is created
dynamically each time
getStreamData() is called. |
Constructor and 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.
|
Modifier and Type | Method and Description |
---|---|
byte[] |
getByteData()
Returns the raw data in byte array.
|
java.lang.String |
getContentType()
Returns the content type, e.g., "image/jpeg", or null if not available.
|
java.lang.String |
getFormat()
Returns the format name, e.g., "jpeg", or null if not available.
|
java.lang.String |
getName()
Returns the name (usually filename) of this media, or null
if not available.
|
java.io.Reader |
getReaderData()
Returns the reader of this media to retrieve the data.
|
java.io.InputStream |
getStreamData()
Returns the input stream of this media.
|
java.lang.String |
getStringData()
Returns the raw data in string.
|
boolean |
inMemory()
Returns whether the data is cached in memory (in form of
byte[] or String).
|
boolean |
isBinary()
Returns whether the format of this content is binary or text-based.
|
boolean |
isContentDisposition()
Whether to allow Content-Disposition or not when writing the media to response header.
|
void |
setContentDisposition(boolean cntDisposition)
Set whether to allow Content-Disposition
or not when writing the media to response header.
|
java.lang.String |
toString() |
protected static final java.io.InputStream DYNAMIC_STREAM
getStreamData()
is called.AMedia(String,String,String,InputStream)
protected static final java.io.Reader DYNAMIC_READER
getReaderData()
is called.AMedia(String,String,String,Reader)
protected transient java.io.InputStream _isdata
getStreamData()
protected transient java.io.Reader _rddata
getReaderData()
public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, byte[] data)
It tries to construct format and ctype from each other or name.
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 nullpublic AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.lang.String data)
It tries to construct format and ctype from each other or name.
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 nullpublic AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.InputStream data)
It tries to construct format and ctype from each other or name.
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 time getStreamData()
is called, you shall pass DYNAMIC_STREAM
as the data argument. Then, override getStreamData()
to return
the correct stream.
Note: the caller of getStreamData()
has to close
the returned input stream.public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.Reader data)
It tries to construct format and ctype from each other or name.
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 time getReaderData()
is called, you shall pass DYNAMIC_READER
as the data argument. Then, override getReaderData()
to return
the correct reader.public AMedia(java.lang.String name, java.lang.String format, java.lang.String ctype, java.io.File file, boolean binary) throws java.io.FileNotFoundException
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 of InputStream.read()
after InputStream.close()
is called.
See also RepeatableInputStream
and RepeatableReader
.
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.java.io.FileNotFoundException
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.FileNotFoundException
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 of InputStream.read()
after InputStream.close()
is called.
See also RepeatableInputStream
and RepeatableReader
.
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.java.io.FileNotFoundException
public AMedia(java.io.File file, java.lang.String ctype, java.lang.String charset) throws java.io.FileNotFoundException
ctype
- the content type; might be null.
If null, it is retrieved from the file name's extension.java.io.FileNotFoundException
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.FileNotFoundException
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 of InputStream.read()
after InputStream.close()
is called.
See also RepeatableInputStream
and RepeatableReader
.
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.java.io.FileNotFoundException
public AMedia(java.net.URL url, java.lang.String ctype, java.lang.String charset) throws java.io.FileNotFoundException
ctype
- the content type; might be null.
If null, it is retrieved from the file name's extension.java.io.FileNotFoundException
public void setContentDisposition(boolean cntDisposition)
public boolean isBinary()
Media
Media.getByteData()
or Media.getStreamData()
to retrieve its content.
If false, use Media.getStringData()
or Media.getReaderData()
to retrieve its content.isBinary
in interface Media
Media.getStringData()
,
Media.getByteData()
,
Media.getReaderData()
,
Media.getStreamData()
public boolean inMemory()
Media
inMemory
in interface Media
Media.getStringData()
,
Media.getByteData()
,
Media.getReaderData()
,
Media.getStreamData()
public byte[] getByteData()
Media
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 from Media.getStreamData()
. Furthermore, it
also implies you can not invoke this method again.
getByteData
in interface Media
Media.getStringData()
public java.lang.String getStringData()
Media
If the data is not cached in memory (Media.inMemory()
return false),
the data will be read from Media.getReaderData()
. Furthermore, it
also implies you can not invoke this method again.
getStringData
in interface Media
Media.getByteData()
public java.io.InputStream getStreamData()
Note: the caller has to invoke InputStream.close()
after using the input stream returned by getStreamData()
.
getStreamData
in interface Media
java.lang.IllegalStateException
- if the media is not binary
isBinary()
.Media.getReaderData()
public java.io.Reader getReaderData()
Note: the caller has to invoke Reader.close()
after using the input stream returned by getReaderData()
.
getReaderData
in interface Media
java.lang.IllegalStateException
- if the media is binary
isBinary()
.Media.getStreamData()
public java.lang.String getName()
Media
public java.lang.String getFormat()
Media
getFormat
in interface Media
Media.getContentType()
public java.lang.String getContentType()
Media
getContentType
in interface Media
Media.getFormat()
public boolean isContentDisposition()
Media
Default: true
isContentDisposition
in interface Media
public java.lang.String toString()
toString
in class java.lang.Object
Copyright © 2005-2021 Potix Corporation. All Rights Reserved.