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