readFilter
public void readFilter(java.io.InputStream input,
java.io.OutputStream output,
java.lang.String charset,
java.util.Map<java.lang.String,java.lang.String> otherParams,
java.lang.String schemeHostAndPort,
FilterCallback cb)
throws DataFilterException,
java.io.IOException
Filter data for reading. Objective is to ensure the data is safe if
rendered by e.g. a web browser, and to guarantee that it is of the
correct type. Filters should usually be implemented as "white list",
that is, they should parse everything, and when encountering
anything they cannot parse, should delete it, or throw a DataFilterException.
IMPORTANT Implementation note: The InputStream may be a PipedInputStream
(or conceivably even a network stream). Implementations MUST NOT ASSUME
that input.available() == 0 => EOF!
- Specified by:
readFilter
in interface ContentDataFilter
- Parameters:
input
- Stream to read potentially unsafe data from.
output
- Stream to write safe (but possibly incomplete) data to.
charset
- Character set of the data if appropriate for this MIME type.
otherParams
- Other type parameters if appropriate.
schemeHostAndPort
- Scheme, host and port of the node as seen in the request.
cb
- Filter callback for modifying HTML tags. Irrelevant for most MIME types. In future we
might need this for other types.
- Throws:
DataFilterException
- If the data cannot be filtered. Any data
written so far should be discarded if possible.
java.io.IOException
- If there was a failure to read from the input data
or write to the output data. Implementations should not throw this
if data is merely badly formatted - any such exceptions should be
caught and converted to a DataFilterException.