- /*
- * The Apache Software License, Version 1.1
- *
- *
- * Copyright (c) 2001, 2002 The Apache Software Foundation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Xerces" and "Apache Software Foundation" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * nor may "Apache" appear in their name, without prior written
- * permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 2001, International
- * Business Machines, Inc., http://www.apache.org. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
- package com.sun.org.apache.xerces.internal.dom;
-
- import org.w3c.dom.ls.LSInput;
-
- import java.io.Reader;
- import java.io.InputStream;
-
- /**
- * This Class <code>DOMInputImpl</code> represents a single input source for an XML entity.
- * <p> This Class allows an application to encapsulate information about
- * an input source in a single object, which may include a public
- * identifier, a system identifier, a byte stream (possibly with a specified
- * encoding), and/or a character stream.
- * <p> The exact definitions of a byte stream and a character stream are
- * binding dependent.
- * <p> There are two places that the application will deliver this input
- * source to the parser: as the argument to the <code>parse</code> method,
- * or as the return value of the <code>DOMResourceResolver.resolveEntity</code>
- * method.
- * <p> The <code>DOMParser</code> will use the <code>LSInput</code>
- * object to determine how to read XML input. If there is a character stream
- * available, the parser will read that stream directly; if not, the parser
- * will use a byte stream, if available; if neither a character stream nor a
- * byte stream is available, the parser will attempt to open a URI
- * connection to the resource identified by the system identifier.
- * <p> An <code>LSInput</code> object belongs to the application: the
- * parser shall never modify it in any way (it may modify a copy if
- * necessary). Eventhough all attributes in this interface are writable the
- * DOM implementation is expected to never mutate a LSInput.
- * <p>See also the <a href='http://www.w3.org/TR/2001/WD-DOM-Level-3-ASLS-20011025'>Document Object Model (DOM) Level 3 Abstract Schemas and Load
- and Save Specification</a>.
- *
- *
- * @author Gopal Sharma, SUN Microsystems Inc.
- * @version $Id: DOMInputImpl.java,v 1.2 2003/11/17 13:48:40 venu Exp $
- */
-
- // REVISIT:
- // 1. it should be possible to do the following
- // DOMInputImpl extends XMLInputSource implements LSInput
- // 2. we probably need only the default constructor. -- el
-
- public class DOMInputImpl implements LSInput {
-
- //
- // Data
- //
-
- protected String fPublicId = null;
- protected String fSystemId = null;
- protected String fBaseSystemId = null;
-
- protected InputStream fByteStream = null;
- protected Reader fCharStream = null;
- protected String fData = null;
-
- protected String fEncoding = null;
-
- protected boolean fCertifiedText = false;
-
- /**
- * Default Constructor, constructs an input source
- *
- *
- */
- public DOMInputImpl() {}
-
- /**
- * 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.
- */
-
- public DOMInputImpl(String publicId, String systemId,
- String baseSystemId) {
-
- fPublicId = publicId;
- fSystemId = systemId;
- fBaseSystemId = baseSystemId;
-
- } // DOMInputImpl(String,String,String)
-
- /**
- * 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 DOMInputImpl(String publicId, String systemId,
- String baseSystemId, InputStream byteStream,
- String encoding) {
-
- fPublicId = publicId;
- fSystemId = systemId;
- fBaseSystemId = baseSystemId;
- fByteStream = byteStream;
- fEncoding = encoding;
-
- } // DOMInputImpl(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 DOMInputImpl(String publicId, String systemId,
- String baseSystemId, Reader charStream,
- String encoding) {
-
- fPublicId = publicId;
- fSystemId = systemId;
- fBaseSystemId = baseSystemId;
- fCharStream = charStream;
- fEncoding = encoding;
-
- } // DOMInputImpl(String,String,String,Reader,String)
-
- /**
- * Constructs an input source from a String.
- *
- * @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 data The String Data.
- * @param encoding The original encoding of the byte stream
- * used by the reader, if known.
- */
-
- public DOMInputImpl(String publicId, String systemId,
- String baseSystemId, String data,
- String encoding) {
- fPublicId = publicId;
- fSystemId = systemId;
- fBaseSystemId = baseSystemId;
- fData = data;
- fEncoding = encoding;
- } // DOMInputImpl(String,String,String,String,String)
-
- /**
- * An attribute of a language-binding dependent type that represents a
- * stream of bytes.
- * <br>The parser will ignore this if there is also a character stream
- * specified, but it will use a byte stream in preference to opening a
- * URI connection itself.
- * <br>If the application knows the character encoding of the byte stream,
- * it should set the encoding property. Setting the encoding in this way
- * will override any encoding specified in the XML declaration itself.
- */
-
- public InputStream getByteStream(){
- return fByteStream;
- }
-
- /**
- * An attribute of a language-binding dependent type that represents a
- * stream of bytes.
- * <br>The parser will ignore this if there is also a character stream
- * specified, but it will use a byte stream in preference to opening a
- * URI connection itself.
- * <br>If the application knows the character encoding of the byte stream,
- * it should set the encoding property. Setting the encoding in this way
- * will override any encoding specified in the XML declaration itself.
- */
-
- public void setByteStream(InputStream byteStream){
- fByteStream = byteStream;
- }
-
- /**
- * An attribute of a language-binding dependent type that represents a
- * stream of 16-bit units. Application must encode the stream using
- * UTF-16 (defined in and Amendment 1 of ).
- * <br>If a character stream is specified, the parser will ignore any byte
- * stream and will not attempt to open a URI connection to the system
- * identifier.
- */
- public Reader getCharacterStream(){
- return fCharStream;
- }
- /**
- * An attribute of a language-binding dependent type that represents a
- * stream of 16-bit units. Application must encode the stream using
- * UTF-16 (defined in and Amendment 1 of ).
- * <br>If a character stream is specified, the parser will ignore any byte
- * stream and will not attempt to open a URI connection to the system
- * identifier.
- */
-
- public void setCharacterStream(Reader characterStream){
- fCharStream = characterStream;
- }
-
- /**
- * A string attribute that represents a sequence of 16 bit units (utf-16
- * encoded characters).
- * <br>If string data is available in the input source, the parser will
- * ignore the character stream and the byte stream and will not attempt
- * to open a URI connection to the system identifier.
- */
- public String getStringData(){
- return fData;
- }
-
- /**
- * A string attribute that represents a sequence of 16 bit units (utf-16
- * encoded characters).
- * <br>If string data is available in the input source, the parser will
- * ignore the character stream and the byte stream and will not attempt
- * to open a URI connection to the system identifier.
- */
-
- public void setStringData(String stringData){
- fData = stringData;
- }
-
- /**
- * The character encoding, if known. The encoding must be a string
- * acceptable for an XML encoding declaration ( section 4.3.3 "Character
- * Encoding in Entities").
- * <br>This attribute has no effect when the application provides a
- * character stream. For other sources of input, an encoding specified
- * by means of this attribute will override any encoding specified in
- * the XML claration or the Text Declaration, or an encoding obtained
- * from a higher level protocol, such as HTTP .
- */
-
- public String getEncoding(){
- return fEncoding;
- }
-
- /**
- * The character encoding, if known. The encoding must be a string
- * acceptable for an XML encoding declaration ( section 4.3.3 "Character
- * Encoding in Entities").
- * <br>This attribute has no effect when the application provides a
- * character stream. For other sources of input, an encoding specified
- * by means of this attribute will override any encoding specified in
- * the XML claration or the Text Declaration, or an encoding obtained
- * from a higher level protocol, such as HTTP .
- */
- public void setEncoding(String encoding){
- fEncoding = encoding;
- }
-
- /**
- * The public identifier for this input source. The public identifier is
- * always optional: if the application writer includes one, it will be
- * provided as part of the location information.
- */
- public String getPublicId(){
- return fPublicId;
- }
- /**
- * The public identifier for this input source. The public identifier is
- * always optional: if the application writer includes one, it will be
- * provided as part of the location information.
- */
- public void setPublicId(String publicId){
- fPublicId = publicId;
- }
-
- /**
- * The system identifier, a URI reference , for this input source. The
- * system identifier is optional if there is a byte stream or a
- * character stream, but it is still useful to provide one, since the
- * application can use it to resolve relative URIs and can include it in
- * error messages and warnings (the parser will attempt to fetch the
- * ressource identifier by the URI reference only if there is no byte
- * stream or character stream specified).
- * <br>If the application knows the character encoding of the object
- * pointed to by the system identifier, it can register the encoding by
- * setting the encoding attribute.
- * <br>If the system ID is a relative URI reference (see section 5 in ),
- * the behavior is implementation dependent.
- */
- public String getSystemId(){
- return fSystemId;
- }
- /**
- * The system identifier, a URI reference , for this input source. The
- * system identifier is optional if there is a byte stream or a
- * character stream, but it is still useful to provide one, since the
- * application can use it to resolve relative URIs and can include it in
- * error messages and warnings (the parser will attempt to fetch the
- * ressource identifier by the URI reference only if there is no byte
- * stream or character stream specified).
- * <br>If the application knows the character encoding of the object
- * pointed to by the system identifier, it can register the encoding by
- * setting the encoding attribute.
- * <br>If the system ID is a relative URI reference (see section 5 in ),
- * the behavior is implementation dependent.
- */
- public void setSystemId(String systemId){
- fSystemId = systemId;
- }
-
- /**
- * The base URI to be used (see section 5.1.4 in ) for resolving relative
- * URIs to absolute URIs. If the baseURI is itself a relative URI, the
- * behavior is implementation dependent.
- */
- public String getBaseURI(){
- return fBaseSystemId;
- }
- /**
- * The base URI to be used (see section 5.1.4 in ) for resolving relative
- * URIs to absolute URIs. If the baseURI is itself a relative URI, the
- * behavior is implementation dependent.
- */
- public void setBaseURI(String baseURI){
- fBaseSystemId = baseURI;
- }
-
- /**
- * If set to true, assume that the input is certified (see section 2.13
- * in [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>]) when
- * parsing [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>].
- */
- public boolean getCertifiedText(){
- return fCertifiedText;
- }
-
- /**
- * If set to true, assume that the input is certified (see section 2.13
- * in [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>]) when
- * parsing [<a href='http://www.w3.org/TR/2002/CR-xml11-20021015/'>XML 1.1</a>].
- */
-
- public void setCertifiedText(boolean certifiedText){
- fCertifiedText = certifiedText;
- }
-
- }// class DOMInputImpl