| /* |
| * reserved comment block |
| * DO NOT REMOVE OR ALTER! |
| */ |
| /* |
| * Copyright 2005 The Apache Software Foundation. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.sun.org.apache.xerces.internal.util; |
| |
| import java.io.InputStream; |
| import java.io.Reader; |
| |
| import com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource; |
| import org.xml.sax.InputSource; |
| import org.xml.sax.XMLReader; |
| |
| /** |
| * <p>An <code>XMLInputSource</code> analogue to <code>javax.xml.transform.sax.SAXSource</code>.</p> |
| * |
| */ |
| public final class SAXInputSource extends XMLInputSource { |
| |
| private XMLReader fXMLReader; |
| private InputSource fInputSource; |
| |
| public SAXInputSource() { |
| this(null); |
| } |
| |
| public SAXInputSource(InputSource inputSource) { |
| this(null, inputSource); |
| } |
| |
| public SAXInputSource(XMLReader reader, InputSource inputSource) { |
| super(inputSource != null ? inputSource.getPublicId() : null, |
| inputSource != null ? inputSource.getSystemId() : null, null); |
| if (inputSource != null) { |
| setByteStream(inputSource.getByteStream()); |
| setCharacterStream(inputSource.getCharacterStream()); |
| setEncoding(inputSource.getEncoding()); |
| } |
| fInputSource = inputSource; |
| fXMLReader = reader; |
| } |
| |
| public void setXMLReader(XMLReader reader) { |
| fXMLReader = reader; |
| } |
| |
| public XMLReader getXMLReader() { |
| return fXMLReader; |
| } |
| |
| public void setInputSource(InputSource inputSource) { |
| if (inputSource != null) { |
| setPublicId(inputSource.getPublicId()); |
| setSystemId(inputSource.getSystemId()); |
| setByteStream(inputSource.getByteStream()); |
| setCharacterStream(inputSource.getCharacterStream()); |
| setEncoding(inputSource.getEncoding()); |
| } |
| else { |
| setPublicId(null); |
| setSystemId(null); |
| setByteStream(null); |
| setCharacterStream(null); |
| setEncoding(null); |
| } |
| fInputSource = inputSource; |
| } |
| |
| public InputSource getInputSource() { |
| return fInputSource; |
| } |
| |
| /** |
| * Sets the public identifier. |
| * |
| * @param publicId The new public identifier. |
| */ |
| public void setPublicId(String publicId) { |
| super.setPublicId(publicId); |
| if (fInputSource == null) { |
| fInputSource = new InputSource(); |
| } |
| fInputSource.setPublicId(publicId); |
| } // setPublicId(String) |
| |
| /** |
| * Sets the system identifier. |
| * |
| * @param systemId The new system identifier. |
| */ |
| public void setSystemId(String systemId) { |
| super.setSystemId(systemId); |
| if (fInputSource == null) { |
| fInputSource = new InputSource(); |
| } |
| fInputSource.setSystemId(systemId); |
| } // setSystemId(String) |
| |
| /** |
| * Sets the byte stream. If the byte stream is not already opened |
| * when this object is instantiated, then the code that opens the |
| * stream should also set the byte stream on this object. Also, if |
| * the encoding is auto-detected, then the encoding should also be |
| * set on this object. |
| * |
| * @param byteStream The new byte stream. |
| */ |
| public void setByteStream(InputStream byteStream) { |
| super.setByteStream(byteStream); |
| if (fInputSource == null) { |
| fInputSource = new InputSource(); |
| } |
| fInputSource.setByteStream(byteStream); |
| } // setByteStream(InputStream) |
| |
| /** |
| * Sets the character stream. If the character stream is not already |
| * opened when this object is instantiated, then the code that opens |
| * the stream should also set the character stream on this object. |
| * Also, the encoding of the byte stream used by the reader should |
| * also be set on this object, if known. |
| * |
| * @param charStream The new character stream. |
| * |
| * @see #setEncoding |
| */ |
| public void setCharacterStream(Reader charStream) { |
| super.setCharacterStream(charStream); |
| if (fInputSource == null) { |
| fInputSource = new InputSource(); |
| } |
| fInputSource.setCharacterStream(charStream); |
| } // setCharacterStream(Reader) |
| |
| /** |
| * Sets the encoding of the stream. |
| * |
| * @param encoding The new encoding. |
| */ |
| public void setEncoding(String encoding) { |
| super.setEncoding(encoding); |
| if (fInputSource == null) { |
| fInputSource = new InputSource(); |
| } |
| fInputSource.setEncoding(encoding); |
| } // setEncoding(String) |
| |
| } // SAXInputSource |