Source code: com/sun/syndication/io/XmlReaderException.java
1 package com.sun.syndication.io;
2
3 import java.io.InputStream;
4 import java.io.IOException;
5
6 /**
7 * The XmlReaderException is thrown by the XmlReader constructors if the charset encoding
8 * can not be determined according to the XML 1.0 specification and RFC 3023.
9 * <p>
10 * The exception returns the unconsumed InputStream to allow the application to do an
11 * alternate processing with the stream. Note that the original InputStream given to the
12 * XmlReader cannot be used as that one has been already read.
13 * <p>
14 *
15 * @author Alejandro Abdelnur
16 *
17 */
18 public class XmlReaderException extends IOException {
19 private String _bomEncoding;
20 private String _xmlGuessEncoding;
21 private String _xmlEncoding;
22 private String _contentTypeMime;
23 private String _contentTypeEncoding;
24 private InputStream _is;
25
26 /**
27 * Creates an exception instance if the charset encoding could not be determined.
28 * <p>
29 * Instances of this exception are thrown by the XmlReader.
30 * <p>
31 * @param msg message describing the reason for the exception.
32 * @param bomEnc BOM encoding.
33 * @param xmlGuessEnc XML guess encoding.
34 * @param xmlEnc XML prolog encoding.
35 * @param is the unconsumed InputStream.
36 *
37 */
38 public XmlReaderException(String msg,String bomEnc,String xmlGuessEnc,String xmlEnc,InputStream is) {
39 this(msg,null,null,bomEnc,xmlGuessEnc,xmlEnc,is);
40 }
41
42 /**
43 * Creates an exception instance if the charset encoding could not be determined.
44 * <p>
45 * Instances of this exception are thrown by the XmlReader.
46 * <p>
47 * @param msg message describing the reason for the exception.
48 * @param ctMime MIME type in the content-type.
49 * @param ctEnc encoding in the content-type.
50 * @param bomEnc BOM encoding.
51 * @param xmlGuessEnc XML guess encoding.
52 * @param xmlEnc XML prolog encoding.
53 * @param is the unconsumed InputStream.
54 *
55 */
56 public XmlReaderException(String msg,String ctMime,String ctEnc,
57 String bomEnc,String xmlGuessEnc,String xmlEnc,InputStream is) {
58 super(msg);
59 _contentTypeMime = ctMime;
60 _contentTypeEncoding = ctEnc;
61 _bomEncoding = bomEnc;
62 _xmlGuessEncoding = xmlGuessEnc;
63 _xmlEncoding = xmlEnc;
64 _is = is;
65 }
66
67 /**
68 * Returns the BOM encoding found in the InputStream.
69 * <p>
70 * @return the BOM encoding, null if none.
71 *
72 */
73 public String getBomEncoding() {
74 return _bomEncoding;
75 }
76
77 /**
78 * Returns the encoding guess based on the first bytes of the InputStream.
79 * <p>
80 * @return the encoding guess, null if it couldn't be guessed.
81 *
82 */
83 public String getXmlGuessEncoding() {
84 return _xmlGuessEncoding;
85 }
86
87 /**
88 * Returns the encoding found in the XML prolog of the InputStream.
89 * <p>
90 * @return the encoding of the XML prolog, null if none.
91 *
92 */
93 public String getXmlEncoding() {
94 return _xmlEncoding;
95 }
96
97 /**
98 * Returns the MIME type in the content-type used to attempt determining the encoding.
99 * <p>
100 * @return the MIME type in the content-type, null if there was not content-type or the encoding detection
101 * did not involve HTTP.
102 *
103 */
104 public String getContentTypeMime() {
105 return _contentTypeMime;
106 }
107
108 /**
109 * Returns the encoding in the content-type used to attempt determining the encoding.
110 * <p>
111 * @return the encoding in the content-type, null if there was not content-type, no encoding in it
112 * or the encoding detection did not involve HTTP.
113 *
114 */
115 public String getContentTypeEncoding() {
116 return _contentTypeEncoding;
117 }
118
119 /**
120 * Returns the unconsumed InputStream to allow the application to do an alternate
121 * encoding detection on the InputStream.
122 * <p>
123 * @return the unconsumed InputStream.
124 *
125 */
126 public InputStream getInputStream() {
127 return _is;
128 }
129 }