/*
*/
/*
* 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
*
*
* 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.
*/
/**
* Entity information.
*
* @author
*/
public abstract class Entity {
//
// Data
//
//xxx why dont we declare the type of entities, like assign integer for external/ internal etc..
/** Entity name. */
// whether this entity's declaration was found in the internal
// or external subset
public boolean inExternalSubset;
//
// Constructors
//
/** Default constructor. */
public Entity() {
clear();
} // <init>()
/** Constructs an entity. */
this.inExternalSubset = inExternalSubset;
} // <init>(String)
//
// Public methods
//
/** Returns true if this entity was declared in the external subset. */
public boolean isEntityDeclInExternalSubset() {
return inExternalSubset;
}
/** Returns true if this is an external entity. */
public abstract boolean isExternal();
/** Returns true if this is an unparsed entity. */
public abstract boolean isUnparsed();
/** Clears the entity. */
public void clear() {
inExternalSubset = false;
} // clear()
/** Sets the values of the entity. */
} // setValues(Entity)
/**
* Internal entity.
*
* @author nb131165
*/
public static class InternalEntity
extends Entity {
//
// Data
//
/** Text value of entity. */
//
// Constructors
//
/** Default constructor. */
public InternalEntity() {
clear();
} // <init>()
/** Constructs an internal entity. */
super(name,inExternalSubset);
} // <init>(String,String)
//
// Entity methods
//
/** Returns true if this is an external entity. */
public final boolean isExternal() {
return false;
} // isExternal():boolean
/** Returns true if this is an unparsed entity. */
public final boolean isUnparsed() {
return false;
} // isUnparsed():boolean
/** Clears the entity. */
public void clear() {
super.clear();
} // clear()
/** Sets the values of the entity. */
} // setValues(Entity)
/** Sets the values of the entity. */
} // setValues(InternalEntity)
} // class InternalEntity
/**
* External entity.
*
* @author nb131165
*/
public static class ExternalEntity
extends Entity {
//
// Data
//
/** container for all relevant entity location information. */
/** Notation name for unparsed entity. */
//
// Constructors
//
/** Default constructor. */
public ExternalEntity() {
clear();
} // <init>()
/** Constructs an internal entity. */
super(name,inExternalSubset);
this.entityLocation = entityLocation;
} // <init>(String,XMLResourceIdentifier, String)
//
// Entity methods
//
/** Returns true if this is an external entity. */
public final boolean isExternal() {
return true;
} // isExternal():boolean
/** Returns true if this is an unparsed entity. */
public final boolean isUnparsed() {
} // isUnparsed():boolean
/** Clears the entity. */
public void clear() {
super.clear();
} // clear()
/** Sets the values of the entity. */
} // setValues(Entity)
/** Sets the values of the entity. */
} // setValues(ExternalEntity)
} // class ExternalEntity
/**
* Entity state.
*
* @author nb131165
*/
public static class ScannedEntity
extends Entity {
/** Default buffer size (4096). */
//4096;
/**
* Buffer size. We get this value from a property. The default size
* is used if the input buffer size property is not specified.
* REVISIT: do we need a property for internal entity buffer size?
*/
/** Default buffer size before we've finished with the XMLDecl: */
/** Default internal entity buffer size (1024). */
//
// Data
//
// i/o
/** XXX let these field remain public right now, though we have defined methods for them.
* Input stream. */
/** XXX let these field remain public right now, though we have defined methods for them.
* Reader. */
// locator information
/** entity location information */
// encoding
/** Auto-detected encoding. */
// status
/** True if in a literal. */
public boolean literal;
// whether this is an external or internal scanned entity
public boolean isExternal;
// buffer
/** Character buffer. */
/** Position in character buffer at any point of time. */
public int position;
/** Count of characters present in buffer. */
public int count;
/** Line number. */
/** Column number. */
/** Encoding has been set externally for eg: using DOMInput*/
boolean declaredEncoding = false;
// status
/**
* Encoding has been set externally, for example
* using a SAX InputSource or a DOM LSInput.
*/
boolean externallySpecifiedEncoding = false;
/** XML version. **/
/** This variable is used to calculate the current position in the XML stream.
* Note that fCurrentEntity.position maintains the position relative to
* the buffer.
* At any point of time absolute position in the XML stream can be calculated
* as fTotalCountTillLastLoad + fCurrentEntity.position
*/
public int fTotalCountTillLastLoad ;
/** This variable stores the number of characters read during the load()
* operation. It is used to calculate fTotalCountTillLastLoad
*/
public int fLastCount ;
/** Base character offset for computing absolute character offset. */
public int baseCharOffset;
/** Start position in character buffer. */
public int startPosition;
// to allow the reader/inputStream to behave efficiently:
public boolean mayReadChunks;
// to know that prolog is read
public boolean xmlDeclChunkRead = false;
/** returns the name of the current encoding
* @return current encoding name
*/
return encoding ;
}
* @return String version of the enity, for an internal entity version would be null
*/
return version ;
}
* @param String version of the external parsed entity
*/
}
/** Returns the java.io.Reader associated with this entity.Readers are used
* to read from the file. Readers wrap any particular InputStream that was
* used to open the entity.
* @return java.io.Reader Reader associated with this entity
*/
return reader;
}
/** if entity was opened using the stream, return the associated inputstream
* with this entity
*@return java.io.InputStream InputStream associated with this entity
*/
return stream;
}
//
// Constructors
//
/** Constructs a scanned entity. */
this.entityLocation = entityLocation;
this.mayReadChunks = mayReadChunks;
this.isExternal = isExternal;
}
} // <init>(StringXMLResourceIdentifier,InputStream,Reader,String,boolean, boolean)
/**
* Release any resources associated with this entity.
*/
}
//
// Entity methods
//
/** Returns whether the encoding of this entity was externally specified. **/
public boolean isEncodingExternallySpecified() {
return externallySpecifiedEncoding;
}
/** Sets whether the encoding of this entity was externally specified. **/
}
public boolean isDeclaredEncoding() {
return declaredEncoding;
}
}
/** Returns true if this is an external entity. */
public final boolean isExternal() {
return isExternal;
} // isExternal():boolean
/** Returns true if this is an unparsed entity. */
public final boolean isUnparsed() {
return false;
} // isUnparsed():boolean
//
// Object methods
//
/** Returns a string representation of this object. */
} // toString():String
} // class ScannedEntity
} // class Entity