public class RepeatableMedia extends Object implements Media, Serializable
RepeatableMedia adds functionality to another media,
the ability to read repeatedly.
Unlike other media, RepeatableMedia uses
RepeatableInputStream, if binary, or RepeatableReader
to make getStreamData() and getReaderData() to
be able to re-open when InputStream.close()
or Reader.close() is called.
In other words, the buffered input stream of the give media
is never closed until it is GC-ed.| Modifier and Type | Method and Description |
|---|---|
byte[] |
getByteData()
Returns the raw data in byte array.
|
String |
getContentType()
Returns the content type, e.g., "image/jpeg", or null if not available.
|
String |
getFormat()
Returns the format name, e.g., "jpeg", or null if not available.
|
static Media |
getInstance(Media media)
Returns a repeatable media with a repeatable input stream or
reader, or null if the given media is null.
|
String |
getName()
Returns the name (usually filename) of this media, or null
if not available.
|
Reader |
getReaderData()
Returns the raw data in Reader.
|
InputStream |
getStreamData()
Returns the repeatable input stream, if the original input stream is not null.
|
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.
|
public static Media getInstance(Media media)
public Reader getReaderData()
MediaNote: it wraps Media.getStringData() with StringReader,
if it is in memory (Media.inMemory() returns true).
getReaderData in interface MediaMedia.getReaderData()public InputStream getStreamData()
getStreamData in interface MediaMedia.getStreamData(),
RepeatableInputStream.getInstance(InputStream)public byte[] getByteData()
MediaIt 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 MediaMedia.getByteData()public String getContentType()
MediagetContentType in interface MediaMedia.getContentType()public String getFormat()
MediagetFormat in interface MediaMedia.getFormat()public String getName()
MediagetName in interface MediaMedia.getName()public String getStringData()
MediaIf 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 MediaMedia.getStringData()public boolean inMemory()
MediainMemory in interface MediaMedia.inMemory()public boolean isBinary()
MediaMedia.getByteData() or Media.getStreamData()
to retrieve its content.
If false, use Media.getStringData() or Media.getReaderData()
to retrieve its content.isBinary in interface MediaMedia.isBinary()public boolean isContentDisposition()
MediaDefault: true
isContentDisposition in interface MediaMedia.isContentDisposition()Copyright © 2018. All rights reserved.