| java.lang.Object org.geoserver.ows.util.XmlCharsetDetector
XmlCharsetDetector | public class XmlCharsetDetector (Code) | | Provides a methods that can be used to detect charset of some
XML document and (optionally) return a reader that is aware of
this charset and can correctly decode document's data.
|
Method Summary | |
public static Reader | createReader(InputStream istream, EncodingInfo encInfo) Creates a new reader on top of the given InputStream using
existing (external) encoding information. | public static Reader | getCharsetAwareReader(InputStream istream, EncodingInfo encInfo) Based on Xerces-J code, this method will try its best to return a
reader which is able to decode content of incoming XML document
properly. | public static Reader | getCharsetAwareReader(InputStream istream) Use this variant when you aren't interested in encoding data, and just
want to get a suitable reader for incoming request. | public static EncodingInfo | getEncodingName(byte[] b4, int count) Returns the IANA encoding name that is auto-detected from
the bytes specified, with the endian-ness of that encoding where
appropriate. | protected static String | getXmlEncoding(Reader reader) Gets the encoding of the xml request made to the dispatcher. |
createReader | public static Reader createReader(InputStream istream, EncodingInfo encInfo) throws IllegalArgumentException, UnsupportedEncodingException(Code) | | Creates a new reader on top of the given InputStream using
existing (external) encoding information. Unlike
getCharsetAwareReader , this method never tries to detect
charset or encoding scheme of InputStream 's data. This also
means that it must be provided with valid
EncodingInfo instance, which may be obtained, for example,
from previous getCharsetAwareReader(InputStream, EncodingInfo)
call.
Parameters: istream - byte-stream containing textual (presumably XML) data Parameters: encInfo - correctly initialized object which holds information ofthe above byte-stream's contents charset. throws: IllegalArgumentException - if charset name is not specified throws: UnsupportedEncodingException - in cases when specified charset isnot supported by platform or due to invalid byte order forISO-10646-UCS-2|4 charsets. |
getCharsetAwareReader | public static Reader getCharsetAwareReader(InputStream istream, EncodingInfo encInfo) throws IOException, UnsupportedCharsetException(Code) | | Based on Xerces-J code, this method will try its best to return a
reader which is able to decode content of incoming XML document
properly. To achieve this goal, it first infers general
encoding scheme of the above document and then uses this
information to extract actual charset from XML declaration. In
any recoverable error situation default UTF-8 reader will be
created.
Parameters: istream - Byte stream (most probably obtained withHttpServletRequest.getInputStream that gives access to XML document in question). Parameters: encInfo - Instance of EncodingInfo where information aboutdetected charset will be stored. You can thenuse it, for example, to form a response encodedwith this charset. throws: IOException - in case of any unrecoverable I/O errors. throws: UnsupportedCharsetException - InputStreamReader 'sconstructor will probably throw this exception ifinferred charset of XML document is not supported bycurrent JVM. |
getCharsetAwareReader | public static Reader getCharsetAwareReader(InputStream istream) throws IOException, UnsupportedCharsetException(Code) | | Use this variant when you aren't interested in encoding data, and just
want to get a suitable reader for incoming request.
Parameters: istream - See getCharsetAwareReader(InputStream,EncodingInfo) . |
getEncodingName | public static EncodingInfo getEncodingName(byte[] b4, int count)(Code) | | Returns the IANA encoding name that is auto-detected from
the bytes specified, with the endian-ness of that encoding where
appropriate. Note, that encoding obtained this way is only an
encoding scheme of the request, i.e. step 1 of detection
process. To learn the exact charset of the request data,
you should also perform step 2 - read XML declaration and get the
value of its encoding pseudoattribute.
Parameters: b4 - The first four bytes of the input. Parameters: count - The number of bytes actually read. Instance of EncodingInfo incapsulating all encoding-related data. |
getXmlEncoding | protected static String getXmlEncoding(Reader reader)(Code) | | Gets the encoding of the xml request made to the dispatcher. This
works by reading the temp file where we are storing the request,
looking to match the header specified encoding that should be present
on all xml files. This call should only be made after the temp file
has been set. If no encoding is found, or if an IOError is encountered
then null shall be returned.
Parameters: reader - This character stream is supposed to contain XML data(i.e. it should start with valid XML declaration). The encoding specified in the xml header read from the suppliedcharacter stream. |
|
|