001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.xerces.util;
019:
020: import java.io.InputStream;
021: import java.io.Reader;
022:
023: import org.apache.xerces.xni.parser.XMLInputSource;
024: import org.xml.sax.InputSource;
025: import org.xml.sax.XMLReader;
026:
027: /**
028: * <p>An <code>XMLInputSource</code> analogue to <code>javax.xml.transform.sax.SAXSource</code>.</p>
029: *
030: * @version $Id: SAXInputSource.java 447241 2006-09-18 05:12:57Z mrglavas $
031: */
032: public final class SAXInputSource extends XMLInputSource {
033:
034: private XMLReader fXMLReader;
035: private InputSource fInputSource;
036:
037: public SAXInputSource() {
038: this (null);
039: }
040:
041: public SAXInputSource(InputSource inputSource) {
042: this (null, inputSource);
043: }
044:
045: public SAXInputSource(XMLReader reader, InputSource inputSource) {
046: super (inputSource != null ? inputSource.getPublicId() : null,
047: inputSource != null ? inputSource.getSystemId() : null,
048: null);
049: if (inputSource != null) {
050: setByteStream(inputSource.getByteStream());
051: setCharacterStream(inputSource.getCharacterStream());
052: setEncoding(inputSource.getEncoding());
053: }
054: fInputSource = inputSource;
055: fXMLReader = reader;
056: }
057:
058: public void setXMLReader(XMLReader reader) {
059: fXMLReader = reader;
060: }
061:
062: public XMLReader getXMLReader() {
063: return fXMLReader;
064: }
065:
066: public void setInputSource(InputSource inputSource) {
067: if (inputSource != null) {
068: setPublicId(inputSource.getPublicId());
069: setSystemId(inputSource.getSystemId());
070: setByteStream(inputSource.getByteStream());
071: setCharacterStream(inputSource.getCharacterStream());
072: setEncoding(inputSource.getEncoding());
073: } else {
074: setPublicId(null);
075: setSystemId(null);
076: setByteStream(null);
077: setCharacterStream(null);
078: setEncoding(null);
079: }
080: fInputSource = inputSource;
081: }
082:
083: public InputSource getInputSource() {
084: return fInputSource;
085: }
086:
087: /**
088: * Sets the public identifier.
089: *
090: * @param publicId The new public identifier.
091: */
092: public void setPublicId(String publicId) {
093: super .setPublicId(publicId);
094: if (fInputSource == null) {
095: fInputSource = new InputSource();
096: }
097: fInputSource.setPublicId(publicId);
098: } // setPublicId(String)
099:
100: /**
101: * Sets the system identifier.
102: *
103: * @param systemId The new system identifier.
104: */
105: public void setSystemId(String systemId) {
106: super .setSystemId(systemId);
107: if (fInputSource == null) {
108: fInputSource = new InputSource();
109: }
110: fInputSource.setSystemId(systemId);
111: } // setSystemId(String)
112:
113: /**
114: * Sets the byte stream. If the byte stream is not already opened
115: * when this object is instantiated, then the code that opens the
116: * stream should also set the byte stream on this object. Also, if
117: * the encoding is auto-detected, then the encoding should also be
118: * set on this object.
119: *
120: * @param byteStream The new byte stream.
121: */
122: public void setByteStream(InputStream byteStream) {
123: super .setByteStream(byteStream);
124: if (fInputSource == null) {
125: fInputSource = new InputSource();
126: }
127: fInputSource.setByteStream(byteStream);
128: } // setByteStream(InputStream)
129:
130: /**
131: * Sets the character stream. If the character stream is not already
132: * opened when this object is instantiated, then the code that opens
133: * the stream should also set the character stream on this object.
134: * Also, the encoding of the byte stream used by the reader should
135: * also be set on this object, if known.
136: *
137: * @param charStream The new character stream.
138: *
139: * @see #setEncoding
140: */
141: public void setCharacterStream(Reader charStream) {
142: super .setCharacterStream(charStream);
143: if (fInputSource == null) {
144: fInputSource = new InputSource();
145: }
146: fInputSource.setCharacterStream(charStream);
147: } // setCharacterStream(Reader)
148:
149: /**
150: * Sets the encoding of the stream.
151: *
152: * @param encoding The new encoding.
153: */
154: public void setEncoding(String encoding) {
155: super .setEncoding(encoding);
156: if (fInputSource == null) {
157: fInputSource = new InputSource();
158: }
159: fInputSource.setEncoding(encoding);
160: } // setEncoding(String)
161:
162: } // SAXInputSource
|