Fields Summary |
---|
protected static final String | VALIDATIONFeature identifier: validation. |
protected static final String | NAMESPACESFeature identifier: namespaces. |
protected static final String | EXTERNAL_GENERAL_ENTITIESFeature identifier: external general entities. |
protected static final String | EXTERNAL_PARAMETER_ENTITIESFeature identifier: external parameter entities. |
protected static final String | XML_STRINGProperty identifier: xml string. |
protected static final String | SYMBOL_TABLEProperty identifier: symbol table. |
protected static final String | ERROR_HANDLERProperty identifier: error handler. |
protected static final String | ENTITY_RESOLVERProperty identifier: entity resolver. |
protected SymbolTable | fSymbolTableSymbol table. |
protected Locale | fLocaleLocale. |
protected ArrayList | fComponentsComponents. |
protected XMLDocumentHandler | fDocumentHandlerThe document handler. |
protected XMLDTDHandler | fDTDHandlerThe DTD handler. |
protected XMLDTDContentModelHandler | fDTDContentModelHandlerThe DTD content model handler. |
protected XMLDocumentSource | fLastComponentLast component in the document pipeline |
Constructors Summary |
---|
protected BasicParserConfiguration()Default Constructor.
//
// Constructors
//
this(null, null);
|
protected BasicParserConfiguration(SymbolTable symbolTable)Constructs a parser configuration using the specified symbol table.
this(symbolTable, null);
|
protected BasicParserConfiguration(SymbolTable symbolTable, XMLComponentManager parentSettings)Constructs a parser configuration using the specified symbol table
and parent settings.
super(parentSettings);
// create a vector to hold all the components in use
fComponents = new ArrayList();
// create storage for recognized features and properties
fRecognizedFeatures = new ArrayList();
fRecognizedProperties = new ArrayList();
// create table for features and properties
fFeatures = new HashMap();
fProperties = new HashMap();
// add default recognized features
final String[] recognizedFeatures = {
PARSER_SETTINGS,
VALIDATION,
NAMESPACES,
EXTERNAL_GENERAL_ENTITIES,
EXTERNAL_PARAMETER_ENTITIES,
};
addRecognizedFeatures(recognizedFeatures);
fFeatures.put(PARSER_SETTINGS, Boolean.TRUE);
// set state for default features
fFeatures.put(VALIDATION, Boolean.FALSE);
fFeatures.put(NAMESPACES, Boolean.TRUE);
fFeatures.put(EXTERNAL_GENERAL_ENTITIES, Boolean.TRUE);
fFeatures.put(EXTERNAL_PARAMETER_ENTITIES, Boolean.TRUE);
// add default recognized properties
final String[] recognizedProperties = {
XML_STRING,
SYMBOL_TABLE,
ERROR_HANDLER,
ENTITY_RESOLVER,
};
addRecognizedProperties(recognizedProperties);
if (symbolTable == null) {
symbolTable = new SymbolTable();
}
fSymbolTable = symbolTable;
fProperties.put(SYMBOL_TABLE, fSymbolTable);
|
Methods Summary |
---|
protected void | addComponent(com.sun.org.apache.xerces.internal.xni.parser.XMLComponent component)Adds a component to the parser configuration. This method will
also add all of the component's recognized features and properties
to the list of default recognized features and properties.
// don't add a component more than once
if (fComponents.contains(component)) {
return;
}
fComponents.add(component);
// register component's recognized features
String[] recognizedFeatures = component.getRecognizedFeatures();
addRecognizedFeatures(recognizedFeatures);
// register component's recognized properties
String[] recognizedProperties = component.getRecognizedProperties();
addRecognizedProperties(recognizedProperties);
// set default values
if (recognizedFeatures != null) {
for (int i = 0; i < recognizedFeatures.length; i++) {
String featureId = recognizedFeatures[i];
Boolean state = component.getFeatureDefault(featureId);
if (state != null) {
super.setFeature(featureId, state.booleanValue());
}
}
}
if (recognizedProperties != null) {
for (int i = 0; i < recognizedProperties.length; i++) {
String propertyId = recognizedProperties[i];
Object value = component.getPropertyDefault(propertyId);
if (value != null) {
super.setProperty(propertyId, value);
}
}
}
|
protected void | checkFeature(java.lang.String featureId)Check a feature. If feature is know and supported, this method simply
returns. Otherwise, the appropriate exception is thrown.
//
// Xerces Features
//
if (featureId.startsWith(Constants.XERCES_FEATURE_PREFIX)) {
final int suffixLength = featureId.length() - Constants.XERCES_FEATURE_PREFIX.length();
//
// special performance feature: no one by component manager is allowed to set it
//
if (suffixLength == Constants.PARSER_SETTINGS.length() &&
featureId.endsWith(Constants.PARSER_SETTINGS)) {
short type = XMLConfigurationException.NOT_SUPPORTED;
throw new XMLConfigurationException(type, featureId);
}
}
super.checkFeature(featureId);
|
protected void | checkProperty(java.lang.String propertyId)Check a property. If the property is known and supported, this method
simply returns. Otherwise, the appropriate exception is thrown.
// special cases
if (propertyId.startsWith(Constants.SAX_PROPERTY_PREFIX)) {
final int suffixLength = propertyId.length() - Constants.SAX_PROPERTY_PREFIX.length();
//
// http://xml.org/sax/properties/xml-string
// Value type: String
// Access: read-only
// Get the literal string of characters associated with the
// current event. If the parser recognises and supports this
// property but is not currently parsing text, it should return
// null (this is a good way to check for availability before the
// parse begins).
//
if (suffixLength == Constants.XML_STRING_PROPERTY.length() &&
propertyId.endsWith(Constants.XML_STRING_PROPERTY)) {
// REVISIT - we should probably ask xml-dev for a precise
// definition of what this is actually supposed to return, and
// in exactly which circumstances.
short type = XMLConfigurationException.NOT_SUPPORTED;
throw new XMLConfigurationException(type, propertyId);
}
}
// check property
super.checkProperty(propertyId);
|
public com.sun.org.apache.xerces.internal.xni.XMLDTDContentModelHandler | getDTDContentModelHandler()Returns the registered DTD content model handler.
return fDTDContentModelHandler;
|
public com.sun.org.apache.xerces.internal.xni.XMLDTDHandler | getDTDHandler()Returns the registered DTD handler.
return fDTDHandler;
|
public com.sun.org.apache.xerces.internal.xni.XMLDocumentHandler | getDocumentHandler()Returns the registered document handler.
return fDocumentHandler;
|
public com.sun.org.apache.xerces.internal.xni.parser.XMLEntityResolver | getEntityResolver()Return the current entity resolver.
// REVISIT: Should this be a property?
return (XMLEntityResolver)fProperties.get(ENTITY_RESOLVER);
|
public com.sun.org.apache.xerces.internal.xni.parser.XMLErrorHandler | getErrorHandler()Return the current error handler.
// REVISIT: Should this be a property?
return (XMLErrorHandler)fProperties.get(ERROR_HANDLER);
|
public java.util.Locale | getLocale()Returns the locale.
return fLocale;
|
public abstract void | parse(com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource inputSource)Parse an XML document.
The parser can use this method to instruct this configuration
to begin parsing an XML document from any valid input source
(a character stream, a byte stream, or a URI).
Parsers may not invoke this method while a parse is in progress.
Once a parse is complete, the parser may then parse another XML
document.
This method is synchronous: it will not return until parsing
has ended. If a client application wants to terminate
parsing early, it should throw an exception.
|
protected void | reset()reset all components before parsing and namespace context
// reset every component
int count = fComponents.size();
for (int i = 0; i < count; i++) {
XMLComponent c = (XMLComponent) fComponents.get(i);
c.reset(this);
}
|
public void | setDTDContentModelHandler(com.sun.org.apache.xerces.internal.xni.XMLDTDContentModelHandler handler)Sets the DTD content model handler.
fDTDContentModelHandler = handler;
|
public void | setDTDHandler(com.sun.org.apache.xerces.internal.xni.XMLDTDHandler dtdHandler)Sets the DTD handler.
fDTDHandler = dtdHandler;
|
public void | setDocumentHandler(com.sun.org.apache.xerces.internal.xni.XMLDocumentHandler documentHandler)Sets the document handler on the last component in the pipeline
to receive information about the document.
fDocumentHandler = documentHandler;
if (fLastComponent != null) {
fLastComponent.setDocumentHandler(fDocumentHandler);
if (fDocumentHandler !=null){
fDocumentHandler.setDocumentSource(fLastComponent);
}
}
|
public void | setEntityResolver(com.sun.org.apache.xerces.internal.xni.parser.XMLEntityResolver resolver)Sets the resolver used to resolve external entities. The EntityResolver
interface supports resolution of public and system identifiers.
// REVISIT: Should this be a property?
fProperties.put(ENTITY_RESOLVER, resolver);
|
public void | setErrorHandler(com.sun.org.apache.xerces.internal.xni.parser.XMLErrorHandler errorHandler)Allow an application to register an error event handler.
If the application does not register an error handler, all
error events reported by the SAX parser will be silently
ignored; however, normal processing may not continue. It is
highly recommended that all SAX applications implement an
error handler to avoid unexpected bugs.
Applications may register a new or different handler in the
middle of a parse, and the SAX parser must begin using the new
handler immediately.
// REVISIT: Should this be a property?
fProperties.put(ERROR_HANDLER, errorHandler);
|
public void | setFeature(java.lang.String featureId, boolean state)Set the state of a feature.
Set the state of any feature in a SAX2 parser. The parser
might not recognize the feature, and if it does recognize
it, it might not be able to fulfill the request.
// forward to every component
int count = fComponents.size();
for (int i = 0; i < count; i++) {
XMLComponent c = (XMLComponent) fComponents.get(i);
c.setFeature(featureId, state);
}
// save state if noone "objects"
super.setFeature(featureId, state);
|
public void | setLocale(java.util.Locale locale)Set the locale to use for messages.
fLocale = locale;
|
public void | setProperty(java.lang.String propertyId, java.lang.Object value)setProperty
// forward to every component
int count = fComponents.size();
for (int i = 0; i < count; i++) {
XMLComponent c = (XMLComponent) fComponents.get(i);
c.setProperty(propertyId, value);
}
// store value if noone "objects"
super.setProperty(propertyId, value);
|