PropertyManagerpublic class PropertyManager extends Object This class manages different properties related to Stax specification and its implementation.
This class constructor also takes itself (PropertyManager object) as parameter and initializes the
object with the property taken from the object passed. |
Fields Summary |
---|
public static final String | STAX_NOTATIONS | public static final String | STAX_ENTITIES | private static final String | STRING_INTERNING | HashMap | supportedProps | public static final int | CONTEXT_READER | public static final int | CONTEXT_WRITER |
Constructors Summary |
---|
public PropertyManager(int context)Creates a new instance of PropertyManager
switch(context){
case CONTEXT_READER:{
initConfigurableReaderProperties();
break;
}
case CONTEXT_WRITER:{
initWriterProps();
break;
}
}
| public PropertyManager(PropertyManager propertyManager)Initialize this object with the properties taken from passed PropertyManager object.
HashMap properties = propertyManager.getProperties();
supportedProps.putAll(properties);
|
Methods Summary |
---|
public boolean | containsProperty(java.lang.String property)public void reset(){
supportedProps.clear() ;
}
return supportedProps.containsKey(property) ;
| private java.util.HashMap | getProperties()
return supportedProps ;
| public java.lang.Object | getProperty(java.lang.String property)
return supportedProps.get(property);
| private void | initConfigurableReaderProperties()Important point:
1. We are not exposing Xerces namespace property. Application should configure namespace through
Stax specific property.
//spec default values
supportedProps.put(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.TRUE);
supportedProps.put(XMLInputFactory.IS_VALIDATING, Boolean.FALSE);
supportedProps.put(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.TRUE);
supportedProps.put(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.TRUE);
supportedProps.put(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
supportedProps.put(XMLInputFactory.SUPPORT_DTD, Boolean.TRUE);
supportedProps.put(XMLInputFactory.REPORTER, null);
supportedProps.put(XMLInputFactory.RESOLVER, null);
supportedProps.put(XMLInputFactory.ALLOCATOR, null);
supportedProps.put(STAX_NOTATIONS,null );
//zephyr (implementation) specific properties which can be set by the application.
//interning is always done
supportedProps.put(Constants.SAX_FEATURE_PREFIX + Constants.STRING_INTERNING_FEATURE , new Boolean(true));
//recognizing java encoding names by default
supportedProps.put(Constants.XERCES_FEATURE_PREFIX + Constants.ALLOW_JAVA_ENCODINGS_FEATURE, new Boolean(true)) ;
//in stax mode, namespace declarations are not added as attributes
supportedProps.put(Constants.ADD_NAMESPACE_DECL_AS_ATTRIBUTE , Boolean.FALSE) ;
supportedProps.put(Constants.READER_IN_DEFINED_STATE, new Boolean(true));
supportedProps.put(Constants.REUSE_INSTANCE, new Boolean(true));
supportedProps.put(Constants.ZEPHYR_PROPERTY_PREFIX + Constants.STAX_REPORT_CDATA_EVENT , new Boolean(false));
supportedProps.put(Constants.XERCES_FEATURE_PREFIX + Constants.WARN_ON_DUPLICATE_ATTDEF_FEATURE, new Boolean(false));
supportedProps.put(Constants.XERCES_FEATURE_PREFIX + Constants.WARN_ON_DUPLICATE_ENTITYDEF_FEATURE, new Boolean(false));
supportedProps.put(Constants.XERCES_FEATURE_PREFIX + Constants.WARN_ON_UNDECLARED_ELEMDEF_FEATURE, new Boolean(false));
| private void | initWriterProps()
supportedProps.put(XMLOutputFactory.IS_REPAIRING_NAMESPACES , Boolean.FALSE);
//default value of escaping characters is 'true'
supportedProps.put(Constants.ESCAPE_CHARACTERS , Boolean.TRUE);
supportedProps.put(Constants.REUSE_INSTANCE, new Boolean(true));
| public void | setProperty(java.lang.String property, java.lang.Object value)
String equivalentProperty = null ;
if(property == XMLInputFactory.IS_NAMESPACE_AWARE || property.equals(XMLInputFactory.IS_NAMESPACE_AWARE)){
equivalentProperty = Constants.XERCES_FEATURE_PREFIX + Constants.NAMESPACES_FEATURE ;
}
else if(property == XMLInputFactory.IS_VALIDATING || property.equals(XMLInputFactory.IS_VALIDATING)){
if( (value instanceof Boolean) && ((Boolean)value).booleanValue()){
throw new java.lang.IllegalArgumentException("true value of isValidating not supported") ;
}
}
else if(property == STRING_INTERNING || property.equals(STRING_INTERNING)){
if( (value instanceof Boolean) && !((Boolean)value).booleanValue()){
throw new java.lang.IllegalArgumentException("false value of " + STRING_INTERNING + "feature is not supported") ;
}
}
else if(property == XMLInputFactory.RESOLVER || property.equals(XMLInputFactory.RESOLVER)){
//add internal stax property
supportedProps.put( Constants.XERCES_PROPERTY_PREFIX + Constants.STAX_ENTITY_RESOLVER_PROPERTY , new StaxEntityResolverWrapper((XMLResolver)value)) ;
}
supportedProps.put(property, value ) ;
if(equivalentProperty != null){
supportedProps.put(equivalentProperty, value ) ;
}
| public java.lang.String | toString()
return supportedProps.toString();
|
|