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 }