org.apache.xerces.impl

## Class XMLEntityManager

- java.lang.Object
- - org.apache.xerces.impl.XMLEntityManager

- All Implemented Interfaces:
    org.apache.xerces.xni.parser.XMLComponent, org.apache.xerces.xni.parser.XMLEntityResolver

      public class XMLEntityManager
      extends java.lang.Object
      implements org.apache.xerces.xni.parser.XMLComponent, org.apache.xerces.xni.parser.XMLEntityResolver

  The entity manager handles the registration of general and parameter entities; resolves entities; and starts entities. The entity manager is a central component in a standard parser configuration and this class works directly with the entity scanner to manage the underlying xni.

  This component requires the following features and properties from the component manager that uses it:

  - http://xml.org/sax/features/validation
  - http://xml.org/sax/features/external-general-entities
  - http://xml.org/sax/features/external-parameter-entities
  - http://apache.org/xml/features/allow-java-encodings
  - http://apache.org/xml/properties/internal/symbol-table
  - http://apache.org/xml/properties/internal/error-reporter
  - http://apache.org/xml/properties/internal/entity-resolver
  Version:
    $Id: XMLEntityManager.java 1513559 2013-08-13 15:42:35Z mrglavas $
  Author:
    Andy Clark, IBM, Arnaud Le Hors, IBM

  # INTERNAL:

    Usage of this class is not supported. It may be altered or removed at any time.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `XMLEntityManager.Entity` Entity information.
    `protected static class` | `XMLEntityManager.ExternalEntity` External entity.
    `protected static class` | `XMLEntityManager.InternalEntity` Internal entity.
    `protected class` | `XMLEntityManager.RewindableInputStream` This class wraps the byte inputstreams we're presented with.
    `class` | `XMLEntityManager.ScannedEntity` Entity state.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.lang.String` | `ALLOW_JAVA_ENCODINGS` Feature identifier: allow Java encodings.
    `protected static java.lang.String` | `BUFFER_SIZE` property identifier: buffer size.
    `static int` | `DEFAULT_BUFFER_SIZE` Default buffer size (2048).
    `static int` | `DEFAULT_INTERNAL_BUFFER_SIZE` Default internal entity buffer size (512).
    `static int` | `DEFAULT_XMLDECL_BUFFER_SIZE` Default buffer size before we've finished with the XMLDecl:
    `protected static java.lang.String` | `ENTITY_RESOLVER` Property identifier: entity resolver.
    `protected static java.lang.String` | `ERROR_REPORTER` Property identifier: error reporter.
    `protected static java.lang.String` | `EXTERNAL_GENERAL_ENTITIES` Feature identifier: external general entities.
    `protected static java.lang.String` | `EXTERNAL_PARAMETER_ENTITIES` Feature identifier: external parameter entities.
    `protected boolean` | `fAllowJavaEncodings` Allow Java encoding names.
    `protected int` | `fBufferSize` Buffer size.
    `protected XMLEntityManager.ScannedEntity` | `fCurrentEntity` Current entity.
    `protected java.util.Hashtable` | `fDeclaredEntities` Shared declared entities.
    `protected java.util.Hashtable` | `fEntities` Entities.
    `protected int` | `fEntityExpansionCount`
    `protected int` | `fEntityExpansionLimit`
    `protected XMLEntityHandler` | `fEntityHandler` Entity handler.
    `protected org.apache.xerces.xni.parser.XMLEntityResolver` | `fEntityResolver` Entity resolver.
    `protected XMLEntityScanner` | `fEntityScanner` Current entity scanner.
    `protected java.util.Stack` | `fEntityStack` Entity stack.
    `protected XMLErrorReporter` | `fErrorReporter` Error reporter.
    `protected boolean` | `fExternalGeneralEntities` External general entities.
    `protected boolean` | `fExternalParameterEntities` External parameter entities.
    `protected boolean` | `fHasPEReferences` True if the current document contains parameter entity references.
    `protected boolean` | `fInExternalSubset`
    `protected java.util.Stack` | `fReaderStack`
    `protected SecurityManager` | `fSecurityManager`
    `protected boolean` | `fStandalone` True if the document entity is standalone.
    `protected boolean` | `fStrictURI` standard uri conformant (strict uri).
    `protected SymbolTable` | `fSymbolTable` Symbol table.
    `protected boolean` | `fValidation` Validation.
    `protected ValidationManager` | `fValidationManager` Validation manager.
    `protected boolean` | `fWarnDuplicateEntityDef` warn on duplicate Entity declaration.
    `protected XMLEntityScanner` | `fXML10EntityScanner` XML 1.0 entity scanner.
    `protected XMLEntityScanner` | `fXML11EntityScanner` XML 1.1 entity scanner.
    `protected static java.lang.String` | `PARSER_SETTINGS`
    `protected static java.lang.String` | `SECURITY_MANAGER` property identifier: security manager.
    `protected static java.lang.String` | `STANDARD_URI_CONFORMANT` Feature identifier: standard uri conformant
    `protected static java.lang.String` | `SYMBOL_TABLE` Property identifier: symbol table.
    `protected static java.lang.String` | `VALIDATION` Feature identifier: validation.
    `protected static java.lang.String` | `VALIDATION_MANAGER`
    `protected static java.lang.String` | `WARN_ON_DUPLICATE_ENTITYDEF` Feature identifier: warn on duplicate EntityDef

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XMLEntityManager()` Default constructor.
    `XMLEntityManager(XMLEntityManager entityManager)` Constructs an entity manager that shares the specified entity declarations during each parse.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `absolutizeAgainstUserDir(URI uri)` Absolutizes a URI using the current value of the "user.dir" property as the base URI.
    `void` | `addExternalEntity(java.lang.String name, java.lang.String publicId, java.lang.String literalSystemId, java.lang.String baseSystemId)` Adds an external entity declaration.
    `void` | `addInternalEntity(java.lang.String name, java.lang.String text)` Adds an internal entity declaration.
    `void` | `addInternalEntity(java.lang.String name, java.lang.String text, int paramEntityRefs)` Adds an internal entity declaration.
    `void` | `addUnparsedEntity(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String baseSystemId, java.lang.String notation)` Adds an unparsed entity declaration.
    `void` | `closeReaders()` Close all opened InputStreams and Readers opened by this parser.
    `static java.io.OutputStream` | `createOutputStream(java.lang.String uri)`
    `protected java.io.Reader` | `createReader(java.io.InputStream inputStream, java.lang.String encoding, java.lang.Boolean isBigEndian)` Creates a reader capable of reading the given input stream in the specified encoding.
    `void` | `endExternalSubset()`
    `static java.lang.String` | `expandSystemId(java.lang.String systemId, java.lang.String baseSystemId, boolean strict)` Expands a system id and returns the system id as a URI, if it can be expanded.
    `protected static java.lang.String` | `fixURI(java.lang.String str)` Fixes a platform dependent filename to standard URI form.
    `XMLEntityManager.ScannedEntity` | `getCurrentEntity()`
    `org.apache.xerces.xni.XMLResourceIdentifier` | `getCurrentResourceIdentifier()`
    `protected org.apache.xerces.impl.XMLEntityManager.EncodingInfo` | `getEncodingInfo(byte[] b4, int count)` Returns the IANA encoding name that is auto-detected from the bytes specified, with the endian-ness of that encoding where appropriate.
    `XMLEntityScanner` | `getEntityScanner()` Returns the entity scanner.
    `java.lang.Boolean` | `getFeatureDefault(java.lang.String featureId)` Returns the default state for a feature, or null if this component does not want to report a default value for this feature.
    `int` | `getParamEntityRefCount(java.lang.String entityName)` Returns the number of direct and indirect references to parameter entities in the value of the entity.
    `java.lang.Object` | `getPropertyDefault(java.lang.String propertyId)` Returns the default state for a property, or null if this component does not want to report a default value for this property.
    `java.lang.String[]` | `getRecognizedFeatures()` Returns a list of feature identifiers that are recognized by this component.
    `java.lang.String[]` | `getRecognizedProperties()` Returns a list of property identifiers that are recognized by this component.
    `boolean` | `isDeclaredEntity(java.lang.String entityName)` Checks whether an entity given by name is declared.
    `boolean` | `isEntityDeclInExternalSubset(java.lang.String entityName)` Checks whether the declaration of an entity given by name is // in the external subset.
    `boolean` | `isExternalEntity(java.lang.String entityName)` Checks whether an entity given by name is external.
    `boolean` | `isStandalone()` Returns true if the document entity is standalone.
    `boolean` | `isUnparsedEntity(java.lang.String entityName)` Checks whether an entity given by name is unparsed.
    `void` | `reset()`
    `void` | `reset(org.apache.xerces.xni.parser.XMLComponentManager componentManager)` Resets the component.
    `org.apache.xerces.xni.parser.XMLInputSource` | `resolveEntity(org.apache.xerces.xni.XMLResourceIdentifier resourceIdentifier)` Resolves the specified public and system identifiers.
    `void` | `setEntityHandler(XMLEntityHandler entityHandler)` Sets the entity handler.
    `void` | `setFeature(java.lang.String featureId, boolean state)` Sets the state of a feature.
    `void` | `setProperty(java.lang.String propertyId, java.lang.Object value)` Sets the value of a property.
    `void` | `setScannerVersion(short version)`
    `void` | `setStandalone(boolean standalone)` Sets whether the document entity is standalone.
    `java.lang.String` | `setupCurrentEntity(java.lang.String name, org.apache.xerces.xni.parser.XMLInputSource xmlInputSource, boolean literal, boolean isExternal)` This method uses the passed-in XMLInputSource to make fCurrentEntity usable for reading.
    `void` | `startDocumentEntity(org.apache.xerces.xni.parser.XMLInputSource xmlInputSource)` Starts the document entity.
    `void` | `startDTDEntity(org.apache.xerces.xni.parser.XMLInputSource xmlInputSource)` Starts the DTD entity.
    `void` | `startEntity(java.lang.String entityName, boolean literal)` Starts a named entity.
    `void` | `startEntity(java.lang.String name, org.apache.xerces.xni.parser.XMLInputSource xmlInputSource, boolean literal, boolean isExternal)` Starts an entity.
    `void` | `startExternalSubset()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT_BUFFER_SIZE

          public static final int DEFAULT_BUFFER_SIZE

      Default buffer size (2048).
      See Also:
        Constant Field Values

    - #### DEFAULT_XMLDECL_BUFFER_SIZE

          public static final int DEFAULT_XMLDECL_BUFFER_SIZE

      Default buffer size before we've finished with the XMLDecl:
      See Also:
        Constant Field Values

    - #### DEFAULT_INTERNAL_BUFFER_SIZE

          public static final int DEFAULT_INTERNAL_BUFFER_SIZE

      Default internal entity buffer size (512).
      See Also:
        Constant Field Values

    - #### VALIDATION

          protected static final java.lang.String VALIDATION

      Feature identifier: validation.
      See Also:
        Constant Field Values

    - #### EXTERNAL_GENERAL_ENTITIES

          protected static final java.lang.String EXTERNAL_GENERAL_ENTITIES

      Feature identifier: external general entities.
      See Also:
        Constant Field Values

    - #### EXTERNAL_PARAMETER_ENTITIES

          protected static final java.lang.String EXTERNAL_PARAMETER_ENTITIES

      Feature identifier: external parameter entities.
      See Also:
        Constant Field Values

    - #### ALLOW_JAVA_ENCODINGS

          protected static final java.lang.String ALLOW_JAVA_ENCODINGS

      Feature identifier: allow Java encodings.
      See Also:
        Constant Field Values

    - #### WARN_ON_DUPLICATE_ENTITYDEF

          protected static final java.lang.String WARN_ON_DUPLICATE_ENTITYDEF

      Feature identifier: warn on duplicate EntityDef
      See Also:
        Constant Field Values

    - #### STANDARD_URI_CONFORMANT

          protected static final java.lang.String STANDARD_URI_CONFORMANT

      Feature identifier: standard uri conformant
      See Also:
        Constant Field Values

    - #### PARSER_SETTINGS

          protected static final java.lang.String PARSER_SETTINGS

      See Also:
        Constant Field Values

    - #### SYMBOL_TABLE

          protected static final java.lang.String SYMBOL_TABLE

      Property identifier: symbol table.
      See Also:
        Constant Field Values

    - #### ERROR_REPORTER

          protected static final java.lang.String ERROR_REPORTER

      Property identifier: error reporter.
      See Also:
        Constant Field Values

    - #### ENTITY_RESOLVER

          protected static final java.lang.String ENTITY_RESOLVER

      Property identifier: entity resolver.
      See Also:
        Constant Field Values

    - #### VALIDATION_MANAGER

          protected static final java.lang.String VALIDATION_MANAGER

      See Also:
        Constant Field Values

    - #### BUFFER_SIZE

          protected static final java.lang.String BUFFER_SIZE

      property identifier: buffer size.
      See Also:
        Constant Field Values

    - #### SECURITY_MANAGER

          protected static final java.lang.String SECURITY_MANAGER

      property identifier: security manager.
      See Also:
        Constant Field Values

    - #### fValidation

          protected boolean fValidation

      Validation. This feature identifier is: http://xml.org/sax/features/validation

    - #### fExternalGeneralEntities

          protected boolean fExternalGeneralEntities

      External general entities. This feature identifier is: http://xml.org/sax/features/external-general-entities

    - #### fExternalParameterEntities

          protected boolean fExternalParameterEntities

      External parameter entities. This feature identifier is: http://xml.org/sax/features/external-parameter-entities

    - #### fAllowJavaEncodings

          protected boolean fAllowJavaEncodings

      Allow Java encoding names. This feature identifier is: http://apache.org/xml/features/allow-java-encodings

    - #### fWarnDuplicateEntityDef

          protected boolean fWarnDuplicateEntityDef

      warn on duplicate Entity declaration. http://apache.org/xml/features/warn-on-duplicate-entitydef

    - #### fStrictURI

          protected boolean fStrictURI

      standard uri conformant (strict uri). http://apache.org/xml/features/standard-uri-conformant

    - #### fSymbolTable

          protected SymbolTable fSymbolTable

      Symbol table. This property identifier is: http://apache.org/xml/properties/internal/symbol-table

    - #### fErrorReporter

          protected XMLErrorReporter fErrorReporter

      Error reporter. This property identifier is: http://apache.org/xml/properties/internal/error-reporter

    - #### fEntityResolver

          protected org.apache.xerces.xni.parser.XMLEntityResolver fEntityResolver

      Entity resolver. This property identifier is: http://apache.org/xml/properties/internal/entity-resolver

    - #### fValidationManager

          protected ValidationManager fValidationManager

      Validation manager. This property identifier is: http://apache.org/xml/properties/internal/validation-manager

    - #### fBufferSize

          protected int fBufferSize

      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?

    - #### fSecurityManager

          protected SecurityManager fSecurityManager

    - #### fStandalone

          protected boolean fStandalone

      True if the document entity is standalone. This should really only be set by the document source (e.g. XMLDocumentScanner).

    - #### fHasPEReferences

          protected boolean fHasPEReferences

      True if the current document contains parameter entity references.

    - #### fInExternalSubset

          protected boolean fInExternalSubset

    - #### fEntityHandler

          protected XMLEntityHandler fEntityHandler

      Entity handler.

    - #### fEntityScanner

          protected XMLEntityScanner fEntityScanner

      Current entity scanner.

    - #### fXML10EntityScanner

          protected XMLEntityScanner fXML10EntityScanner

      XML 1.0 entity scanner.

    - #### fXML11EntityScanner

          protected XMLEntityScanner fXML11EntityScanner

      XML 1.1 entity scanner.

    - #### fEntityExpansionLimit

          protected int fEntityExpansionLimit

    - #### fEntityExpansionCount

          protected int fEntityExpansionCount

    - #### fEntities

          protected final java.util.Hashtable fEntities

      Entities.

    - #### fEntityStack

          protected final java.util.Stack fEntityStack

      Entity stack.

    - #### fCurrentEntity

          protected XMLEntityManager.ScannedEntity fCurrentEntity

      Current entity.

    - #### fDeclaredEntities

          protected java.util.Hashtable fDeclaredEntities

      Shared declared entities.

    - #### fReaderStack

          protected java.util.Stack fReaderStack

  - ### Constructor Detail

    - #### XMLEntityManager

          public XMLEntityManager()

      Default constructor.

    - #### XMLEntityManager

          public XMLEntityManager(XMLEntityManager entityManager)

      Constructs an entity manager that shares the specified entity declarations during each parse.

      REVISIT: We might want to think about the "right" way to expose the list of declared entities. For now, the knowledge how to access the entity declarations is implicit.

  - ### Method Detail

    - #### setStandalone

          public void setStandalone(boolean standalone)

      Sets whether the document entity is standalone.
      Parameters:
        `standalone` - True if document entity is standalone.

    - #### isStandalone

          public boolean isStandalone()

      Returns true if the document entity is standalone.

    - #### setEntityHandler

          public void setEntityHandler(XMLEntityHandler entityHandler)

      Sets the entity handler. When an entity starts and ends, the entity handler is notified of the change.
      Parameters:
        `entityHandler` - The new entity handler.

    - #### getCurrentResourceIdentifier

          public org.apache.xerces.xni.XMLResourceIdentifier getCurrentResourceIdentifier()

    - #### getCurrentEntity

          public XMLEntityManager.ScannedEntity getCurrentEntity()

    - #### addInternalEntity

          public void addInternalEntity(java.lang.String name,
                               java.lang.String text,
                               int paramEntityRefs)

      Adds an internal entity declaration.

      Note: This method ignores subsequent entity declarations.

      Note: The name should be a unique symbol. The SymbolTable can be used for this purpose.

      Parameters:
        `name` - The name of the entity.
        `text` - The text of the entity.
        `paramEntityRefs` - Count of direct and indirect references to parameter entities in the value of the entity.
      See Also:
        `SymbolTable`

    - #### addInternalEntity

          public void addInternalEntity(java.lang.String name,
                               java.lang.String text)

      Adds an internal entity declaration.

      Note: This method ignores subsequent entity declarations.

      Note: The name should be a unique symbol. The SymbolTable can be used for this purpose.

      Parameters:
        `name` - The name of the entity.
        `text` - The text of the entity.
      See Also:
        `SymbolTable`

    - #### getParamEntityRefCount

          public int getParamEntityRefCount(java.lang.String entityName)

      Returns the number of direct and indirect references to parameter entities in the value of the entity. This value will only be non-zero for an internal parameter entity.
      Parameters:
        `entityName` - The name of the entity to check.
      Returns:
        Count of direct and indirect references to parameter entities in the value of the entity

    - #### addExternalEntity

          public void addExternalEntity(java.lang.String name,
                               java.lang.String publicId,
                               java.lang.String literalSystemId,
                               java.lang.String baseSystemId)
                                 throws java.io.IOException

      Adds an external entity declaration.

      Note: This method ignores subsequent entity declarations.

      Note: The name should be a unique symbol. The SymbolTable can be used for this purpose.

      Parameters:
        `name` - The name of the entity.
        `publicId` - The public identifier of the entity.
        `literalSystemId` - The system identifier of the entity.
        `baseSystemId` - The base system identifier of the entity. This is the system identifier of the entity where the entity being added and is used to expand the system identifier when the system identifier is a relative URI. When null the system identifier of the first external entity on the stack is used instead.
      Throws:
        `java.io.IOException`
      See Also:
        `SymbolTable`

    - #### isExternalEntity

          public boolean isExternalEntity(java.lang.String entityName)

      Checks whether an entity given by name is external.
      Parameters:
        `entityName` - The name of the entity to check.
      Returns:
        True if the entity is external, false otherwise (including when the entity is not declared).

    - #### isEntityDeclInExternalSubset

          public boolean isEntityDeclInExternalSubset(java.lang.String entityName)

      Checks whether the declaration of an entity given by name is // in the external subset.
      Parameters:
        `entityName` - The name of the entity to check.
      Returns:
        True if the entity was declared in the external subset, false otherwise (including when the entity is not declared).

    - #### addUnparsedEntity

          public void addUnparsedEntity(java.lang.String name,
                               java.lang.String publicId,
                               java.lang.String systemId,
                               java.lang.String baseSystemId,
                               java.lang.String notation)

      Adds an unparsed entity declaration.

      Note: This method ignores subsequent entity declarations.

      Note: The name should be a unique symbol. The SymbolTable can be used for this purpose.

      Parameters:
        `name` - The name of the entity.
        `publicId` - The public identifier of the entity.
        `systemId` - The system identifier of the entity.
        `notation` - The name of the notation.
      See Also:
        `SymbolTable`

    - #### isUnparsedEntity

          public boolean isUnparsedEntity(java.lang.String entityName)

      Checks whether an entity given by name is unparsed.
      Parameters:
        `entityName` - The name of the entity to check.
      Returns:
        True if the entity is unparsed, false otherwise (including when the entity is not declared).

    - #### isDeclaredEntity

          public boolean isDeclaredEntity(java.lang.String entityName)

      Checks whether an entity given by name is declared.
      Parameters:
        `entityName` - The name of the entity to check.
      Returns:
        True if the entity is declared, false otherwise.

    - #### resolveEntity

          public org.apache.xerces.xni.parser.XMLInputSource resolveEntity(org.apache.xerces.xni.XMLResourceIdentifier resourceIdentifier)
                                                                    throws java.io.IOException,
                                                                           org.apache.xerces.xni.XNIException

      Resolves the specified public and system identifiers. This method first attempts to resolve the entity based on the EntityResolver registered by the application. If no entity resolver is registered or if the registered entity handler is unable to resolve the entity, then default entity resolution will occur.
      Specified by:
        `resolveEntity` in interface `org.apache.xerces.xni.parser.XMLEntityResolver`
      Parameters:
        `resourceIdentifier` - The XMLResourceIdentifier for the resource to resolve.
      Returns:
        Returns an input source that wraps the resolved entity. This method will never return null.
      Throws:
        `java.io.IOException` - Thrown on i/o error.
        `org.apache.xerces.xni.XNIException` - Thrown by entity resolver to signal an error.
      See Also:
        `XMLResourceIdentifier`

    - #### startEntity

          public void startEntity(java.lang.String entityName,
                         boolean literal)
                           throws java.io.IOException,
                                  org.apache.xerces.xni.XNIException

      Starts a named entity.
      Parameters:
        `entityName` - The name of the entity to start.
        `literal` - True if this entity is started within a literal value.
      Throws:
        `java.io.IOException` - Thrown on i/o error.
        `org.apache.xerces.xni.XNIException` - Thrown by entity handler to signal an error.

    - #### startDocumentEntity

          public void startDocumentEntity(org.apache.xerces.xni.parser.XMLInputSource xmlInputSource)
                                   throws java.io.IOException,
                                          org.apache.xerces.xni.XNIException

      Starts the document entity. The document entity has the "[xml]" pseudo-name.
      Parameters:
        `xmlInputSource` - The input source of the document entity.
      Throws:
        `java.io.IOException` - Thrown on i/o error.
        `org.apache.xerces.xni.XNIException` - Thrown by entity handler to signal an error.

    - #### startDTDEntity

          public void startDTDEntity(org.apache.xerces.xni.parser.XMLInputSource xmlInputSource)
                              throws java.io.IOException,
                                     org.apache.xerces.xni.XNIException

      Starts the DTD entity. The DTD entity has the "[dtd]" pseudo-name.
      Parameters:
        `xmlInputSource` - The input source of the DTD entity.
      Throws:
        `java.io.IOException` - Thrown on i/o error.
        `org.apache.xerces.xni.XNIException` - Thrown by entity handler to signal an error.

    - #### startExternalSubset

          public void startExternalSubset()

    - #### endExternalSubset

          public void endExternalSubset()

    - #### startEntity

          public void startEntity(java.lang.String name,
                         org.apache.xerces.xni.parser.XMLInputSource xmlInputSource,
                         boolean literal,
                         boolean isExternal)
                           throws java.io.IOException,
                                  org.apache.xerces.xni.XNIException

      Starts an entity.

      This method can be used to insert an application defined XML entity stream into the parsing stream.

      Parameters:
        `name` - The name of the entity.
        `xmlInputSource` - The input source of the entity.
        `literal` - True if this entity is started within a literal value.
        `isExternal` - whether this entity should be treated as an internal or external entity.
      Throws:
        `java.io.IOException` - Thrown on i/o error.
        `org.apache.xerces.xni.XNIException` - Thrown by entity handler to signal an error.

    - #### setupCurrentEntity

          public java.lang.String setupCurrentEntity(java.lang.String name,
                                            org.apache.xerces.xni.parser.XMLInputSource xmlInputSource,
                                            boolean literal,
                                            boolean isExternal)
                                              throws java.io.IOException,
                                                     org.apache.xerces.xni.XNIException

      This method uses the passed-in XMLInputSource to make fCurrentEntity usable for reading.
      Parameters:
        `name` - name of the entity (XML is it's the document entity)
        `xmlInputSource` - the input source, with sufficient information to begin scanning characters.
        `literal` - True if this entity is started within a literal value.
        `isExternal` - whether this entity should be treated as an internal or external entity.
      Returns:
        the encoding of the new entity or null if a character stream was employed
      Throws:
        `java.io.IOException` - if anything can't be read XNIException If any parser-specific goes wrong.
        `org.apache.xerces.xni.XNIException`

    - #### setScannerVersion

          public void setScannerVersion(short version)

    - #### getEntityScanner

          public XMLEntityScanner getEntityScanner()

      Returns the entity scanner.

    - #### closeReaders

          public void closeReaders()

      Close all opened InputStreams and Readers opened by this parser.

    - #### reset

          public void reset(org.apache.xerces.xni.parser.XMLComponentManager componentManager)
                     throws org.apache.xerces.xni.parser.XMLConfigurationException

      Resets the component. The component can query the component manager about any features and properties that affect the operation of the component.
      Specified by:
        `reset` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Parameters:
        `componentManager` - The component manager.
      Throws:
        `SAXException` - Thrown by component on initialization error. For example, if a feature or property is required for the operation of the component, the component manager may throw a SAXNotRecognizedException or a SAXNotSupportedException.
        `org.apache.xerces.xni.parser.XMLConfigurationException`

    - #### reset

          public void reset()

    - #### getRecognizedFeatures

          public java.lang.String[] getRecognizedFeatures()

      Returns a list of feature identifiers that are recognized by this component. This method may return null if no features are recognized by this component.
      Specified by:
        `getRecognizedFeatures` in interface `org.apache.xerces.xni.parser.XMLComponent`

    - #### setFeature

          public void setFeature(java.lang.String featureId,
                        boolean state)
                          throws org.apache.xerces.xni.parser.XMLConfigurationException

      Sets the state of a feature. This method is called by the component manager any time after reset when a feature changes state.

      Note: Components should silently ignore features that do not affect the operation of the component.

      Specified by:
        `setFeature` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Parameters:
        `featureId` - The feature identifier.
        `state` - The state of the feature.
      Throws:
        `SAXNotRecognizedException` - The component should not throw this exception.
        `SAXNotSupportedException` - The component should not throw this exception.
        `org.apache.xerces.xni.parser.XMLConfigurationException` - Thrown for configuration error. In general, components should only throw this exception if it is really a critical error.

    - #### getRecognizedProperties

          public java.lang.String[] getRecognizedProperties()

      Returns a list of property identifiers that are recognized by this component. This method may return null if no properties are recognized by this component.
      Specified by:
        `getRecognizedProperties` in interface `org.apache.xerces.xni.parser.XMLComponent`

    - #### setProperty

          public void setProperty(java.lang.String propertyId,
                         java.lang.Object value)
                           throws org.apache.xerces.xni.parser.XMLConfigurationException

      Sets the value of a property. This method is called by the component manager any time after reset when a property changes value.

      Note: Components should silently ignore properties that do not affect the operation of the component.

      Specified by:
        `setProperty` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Parameters:
        `propertyId` - The property identifier.
        `value` - The value of the property.
      Throws:
        `SAXNotRecognizedException` - The component should not throw this exception.
        `SAXNotSupportedException` - The component should not throw this exception.
        `org.apache.xerces.xni.parser.XMLConfigurationException` - Thrown for configuration error. In general, components should only throw this exception if it is really a critical error.

    - #### getFeatureDefault

          public java.lang.Boolean getFeatureDefault(java.lang.String featureId)

      Returns the default state for a feature, or null if this component does not want to report a default value for this feature.
      Specified by:
        `getFeatureDefault` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Parameters:
        `featureId` - The feature identifier.
      Since:
        Xerces 2.2.0

    - #### getPropertyDefault

          public java.lang.Object getPropertyDefault(java.lang.String propertyId)

      Returns the default state for a property, or null if this component does not want to report a default value for this property.
      Specified by:
        `getPropertyDefault` in interface `org.apache.xerces.xni.parser.XMLComponent`
      Parameters:
        `propertyId` - The property identifier.
      Since:
        Xerces 2.2.0

    - #### absolutizeAgainstUserDir

          public static void absolutizeAgainstUserDir(URI uri)
                                               throws URI.MalformedURIException

      Absolutizes a URI using the current value of the "user.dir" property as the base URI. If the URI is already absolute, this is a no-op.
      Parameters:
        `uri` - the URI to absolutize
      Throws:
        `URI.MalformedURIException`

    - #### expandSystemId

          public static java.lang.String expandSystemId(java.lang.String systemId,
                                        java.lang.String baseSystemId,
                                        boolean strict)
                                                 throws URI.MalformedURIException

      Expands a system id and returns the system id as a URI, if it can be expanded. A return value of null means that the identifier is already expanded. An exception thrown indicates a failure to expand the id.
      Parameters:
        `systemId` - The systemId to be expanded.
      Returns:
        Returns the URI string representing the expanded system identifier. A null value indicates that the given system identifier is already expanded.
      Throws:
        `URI.MalformedURIException`

    - #### createOutputStream

          public static java.io.OutputStream createOutputStream(java.lang.String uri)
                                                         throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getEncodingInfo

          protected org.apache.xerces.impl.XMLEntityManager.EncodingInfo getEncodingInfo(byte[] b4,
                                                                             int count)

      Returns the IANA encoding name that is auto-detected from the bytes specified, with the endian-ness of that encoding where appropriate.
      Parameters:
        `b4` - The first four bytes of the input.
        `count` - The number of bytes actually read.
      Returns:
        an instance of EncodingInfo which represents the auto-detected encoding.

    - #### createReader

          protected java.io.Reader createReader(java.io.InputStream inputStream,
                                    java.lang.String encoding,
                                    java.lang.Boolean isBigEndian)
                                         throws java.io.IOException

      Creates a reader capable of reading the given input stream in the specified encoding.
      Parameters:
        `inputStream` - The input stream.
        `encoding` - The encoding name that the input stream is encoded using. If the user has specified that Java encoding names are allowed, then the encoding name may be a Java encoding name; otherwise, it is an ianaEncoding name.
        `isBigEndian` - For encodings (like uCS-4), whose names cannot specify a byte order, this tells whether the order is bigEndian. Null means unknown or not relevant.
      Returns:
        Returns a reader.
      Throws:
        `java.io.IOException`

    - #### fixURI

          protected static java.lang.String fixURI(java.lang.String str)

      Fixes a platform dependent filename to standard URI form.
      Parameters:
        `str` - The string to fix.
      Returns:
        Returns the fixed URI string.

Copyright © 1999-2022 The Apache Software Foundation. All Rights Reserved.