/* | 
|
 * reserved comment block | 
|
 * DO NOT REMOVE OR ALTER! | 
|
*/  | 
|
/*  | 
|
* Licensed to the Apache Software Foundation (ASF) under one or more  | 
|
* contributor license agreements. See the NOTICE file distributed with  | 
|
* this work for additional information regarding copyright ownership.  | 
|
* The ASF licenses this file to You 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.xni.parser;  | 
|
import com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier;  | 
|
import java.io.InputStream;  | 
|
import java.io.Reader;  | 
|
import org.xml.sax.InputSource;  | 
|
/** | 
|
 * This class represents an input source for an XML document. The | 
|
 * basic properties of an input source are the following: | 
|
 * <ul> | 
|
 *  <li>public identifier</li> | 
|
 *  <li>system identifier</li> | 
|
 *  <li>byte stream or character stream</li> | 
|
 *  <li> | 
|
 * </ul> | 
|
 * | 
|
 * @author Andy Clark, IBM | 
|
 * | 
|
*/  | 
|
public class XMLInputSource { | 
|
//  | 
|
// Data  | 
|
//  | 
|
    /** Public identifier. */ | 
|
protected String fPublicId;  | 
|
    /** System identifier. */ | 
|
protected String fSystemId;  | 
|
    /** Base system identifier. */ | 
|
protected String fBaseSystemId;  | 
|
    /** Byte stream. */ | 
|
protected InputStream fByteStream;  | 
|
    /** Character stream. */ | 
|
protected Reader fCharStream;  | 
|
    /** Encoding. */ | 
|
protected String fEncoding;  | 
|
    //indicates whether the source is created by a resolver | 
|
boolean fIsCreatedByResolver = false;  | 
|
//  | 
|
// Constructors  | 
|
//  | 
|
    /** | 
|
     * Constructs an input source from just the public and system | 
|
     * identifiers, leaving resolution of the entity and opening of | 
|
     * the input stream up to the caller. | 
|
     * | 
|
     * @param publicId     The public identifier, if known. | 
|
     * @param systemId     The system identifier. This value should | 
|
     *                     always be set, if possible, and can be | 
|
     *                     relative or absolute. If the system identifier | 
|
     *                     is relative, then the base system identifier | 
|
     *                     should be set. | 
|
     * @param baseSystemId The base system identifier. This value should | 
|
     *                     always be set to the fully expanded URI of the | 
|
     *                     base system identifier, if possible. | 
|
     * @param isCreatedByResolver a flag to indicate whether the source is | 
|
     * created by a resolver | 
|
*/  | 
|
public XMLInputSource(String publicId, String systemId,  | 
|
String baseSystemId, boolean isCreatedByResolver) {  | 
|
fPublicId = publicId;  | 
|
fSystemId = systemId;  | 
|
fBaseSystemId = baseSystemId;  | 
|
fIsCreatedByResolver = isCreatedByResolver;  | 
|
} // <init>(String,String,String)  | 
|
    /** | 
|
     * Constructs an input source from a XMLResourceIdentifier | 
|
     * object, leaving resolution of the entity and opening of | 
|
     * the input stream up to the caller. | 
|
     * | 
|
     * @param resourceIdentifier    the XMLResourceIdentifier containing the information | 
|
*/  | 
|
public XMLInputSource(XMLResourceIdentifier resourceIdentifier) {  | 
|
fPublicId = resourceIdentifier.getPublicId();  | 
|
fSystemId = resourceIdentifier.getLiteralSystemId();  | 
|
fBaseSystemId = resourceIdentifier.getBaseSystemId();  | 
|
} // <init>(XMLResourceIdentifier)  | 
|
    /** | 
|
     * Constructs an input source from a SAX InputSource | 
|
     * object. | 
|
     * | 
|
     * @param inputSource  a SAX InputSource | 
|
     * @param isCreatedByResolver a flag to indicate whether the source is | 
|
     * created by a resolver | 
|
*/  | 
|
public XMLInputSource(InputSource inputSource, boolean isCreatedByResolver) {  | 
|
fPublicId = inputSource.getPublicId();  | 
|
fSystemId = inputSource.getSystemId();  | 
|
fByteStream = inputSource.getByteStream();  | 
|
fCharStream = inputSource.getCharacterStream();  | 
|
fEncoding = inputSource.getEncoding();  | 
|
fIsCreatedByResolver = isCreatedByResolver;  | 
|
}  | 
|
    /** | 
|
     * Constructs an input source from a byte stream. | 
|
     * | 
|
     * @param publicId     The public identifier, if known. | 
|
     * @param systemId     The system identifier. This value should | 
|
     *                     always be set, if possible, and can be | 
|
     *                     relative or absolute. If the system identifier | 
|
     *                     is relative, then the base system identifier | 
|
     *                     should be set. | 
|
     * @param baseSystemId The base system identifier. This value should | 
|
     *                     always be set to the fully expanded URI of the | 
|
     *                     base system identifier, if possible. | 
|
     * @param byteStream   The byte stream. | 
|
     * @param encoding     The encoding of the byte stream, if known. | 
|
*/  | 
|
public XMLInputSource(String publicId, String systemId,  | 
|
String baseSystemId, InputStream byteStream,  | 
|
String encoding) {  | 
|
fPublicId = publicId;  | 
|
fSystemId = systemId;  | 
|
fBaseSystemId = baseSystemId;  | 
|
fByteStream = byteStream;  | 
|
fEncoding = encoding;  | 
|
} // <init>(String,String,String,InputStream,String)  | 
|
    /** | 
|
     * Constructs an input source from a character stream. | 
|
     * | 
|
     * @param publicId     The public identifier, if known. | 
|
     * @param systemId     The system identifier. This value should | 
|
     *                     always be set, if possible, and can be | 
|
     *                     relative or absolute. If the system identifier | 
|
     *                     is relative, then the base system identifier | 
|
     *                     should be set. | 
|
     * @param baseSystemId The base system identifier. This value should | 
|
     *                     always be set to the fully expanded URI of the | 
|
     *                     base system identifier, if possible. | 
|
     * @param charStream   The character stream. | 
|
     * @param encoding     The original encoding of the byte stream | 
|
     *                     used by the reader, if known. | 
|
*/  | 
|
public XMLInputSource(String publicId, String systemId,  | 
|
String baseSystemId, Reader charStream,  | 
|
String encoding) {  | 
|
fPublicId = publicId;  | 
|
fSystemId = systemId;  | 
|
fBaseSystemId = baseSystemId;  | 
|
fCharStream = charStream;  | 
|
fEncoding = encoding;  | 
|
} // <init>(String,String,String,Reader,String)  | 
|
//  | 
|
// Public methods  | 
|
//  | 
|
    /** | 
|
     * Sets the public identifier. | 
|
     * | 
|
     * @param publicId The new public identifier. | 
|
*/  | 
|
public void setPublicId(String publicId) {  | 
|
fPublicId = publicId;  | 
|
} // setPublicId(String)  | 
|
    /** Returns the public identifier. */ | 
|
public String getPublicId() {  | 
|
return fPublicId;  | 
|
} // getPublicId():String  | 
|
    /** | 
|
     * Sets the system identifier. | 
|
     * | 
|
     * @param systemId The new system identifier. | 
|
*/  | 
|
public void setSystemId(String systemId) {  | 
|
fSystemId = systemId;  | 
|
} // setSystemId(String)  | 
|
    /** Returns the system identifier. */ | 
|
public String getSystemId() {  | 
|
return fSystemId;  | 
|
} // getSystemId():String  | 
|
    /** | 
|
     * Sets the base system identifier. | 
|
     * | 
|
     * @param baseSystemId The new base system identifier. | 
|
*/  | 
|
public void setBaseSystemId(String baseSystemId) {  | 
|
fBaseSystemId = baseSystemId;  | 
|
} // setBaseSystemId(String)  | 
|
    /** Returns the base system identifier. */ | 
|
public String getBaseSystemId() {  | 
|
return fBaseSystemId;  | 
|
} // getBaseSystemId():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) {  | 
|
fByteStream = byteStream;  | 
|
} // setByteStream(InputSource)  | 
|
    /** Returns the byte stream. */ | 
|
public InputStream getByteStream() {  | 
|
return fByteStream;  | 
|
} // getByteStream():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) {  | 
|
fCharStream = charStream;  | 
|
} // setCharacterStream(Reader)  | 
|
    /** Returns the character stream. */ | 
|
public Reader getCharacterStream() {  | 
|
return fCharStream;  | 
|
} // getCharacterStream():Reader  | 
|
    /** | 
|
     * Sets the encoding of the stream. | 
|
     * | 
|
     * @param encoding The new encoding. | 
|
*/  | 
|
public void setEncoding(String encoding) {  | 
|
fEncoding = encoding;  | 
|
} // setEncoding(String)  | 
|
    /** Returns the encoding of the stream, or null if not known. */ | 
|
public String getEncoding() {  | 
|
return fEncoding;  | 
|
} // getEncoding():String  | 
|
    /** | 
|
     * Sets the flag to indicate whether this source is created by a resolver | 
|
     * @param createdByResolver the flag | 
|
*/  | 
|
    public void setCreatedByResolver(boolean createdByResolver) { | 
|
fIsCreatedByResolver = createdByResolver;  | 
|
}  | 
|
    /** | 
|
     * Returns a boolean to indicate whether this source is created by a resolver. | 
|
     * @return true if the source is created by a resolver, false otherwise | 
|
*/  | 
|
    public boolean isCreatedByResolver() { | 
|
return fIsCreatedByResolver;  | 
|
}  | 
|
} // class XMLInputSource  |