The services that this bundle activator enables a bundle to provide are:
javax.xml.parsers.SAXParserFactory(SAXFACTORYNAME)javax.xml.parsers.DocumentBuilderFactory( DOMFACTORYNAME
)The algorithm to find the implementations of the abstract parsers is derived from the JAR file specifications, specifically the Services API.
An XMLParserActivator assumes that it can find the class file names of the factory classes in the following files:
/META-INF/services/javax.xml.parsers.SAXParserFactory is a file
contained in a jar available to the runtime which contains the implementation
class name(s) of the SAXParserFactory./META-INF/services/javax.xml.parsers.DocumentBuilderFactory is a
file contained in a jar available to the runtime which contains the
implementation class name(s) of the DocumentBuilderFactory
If either of the files does not exist, XMLParserActivator assumes
that the parser does not support that parser type.
XMLParserActivator attempts to instantiate both the
SAXParserFactory and the DocumentBuilderFactory. It registers
each factory with the framework along with service properties:
PARSER_VALIDATING- indicates if this factory supports validating
parsers. It's value is a Boolean.PARSER_NAMESPACEAWARE- indicates if this factory supports
namespace aware parsers It's value is a Boolean.
Individual parser implementations may have additional features, properties,
or attributes which could be used to select a parser with a filter. These can
be added by extending this class and overriding the setSAXProperties
and setDOMProperties methods.
| Modifier and Type | Field and Description |
|---|---|
| private volatile BundleContext | bundleContext
Context of this bundle |
| public static final String | DOMCLASSFILE
Fully qualified path name of DOM Parser Factory Class Name file |
| private static final String | DOMFACTORYDESCRIPTION
DOM Factory Service Description |
| public static final String | DOMFACTORYNAME
Filename containing the DOM Parser Factory Class name. |
| private static final String | FACTORYNAMEKEY
Key for parser factory name property - this must be saved in the parsers properties hashtable so that the parser factory can be instantiated from a ServiceReference |
| public static final String | PARSER_NAMESPACEAWARE
Service property specifying if factory is configured to support namespace aware parsers. |
| public static final String | PARSER_VALIDATING
Service property specifying if factory is configured to support validating parsers. |
| private static final String | PARSERCLASSFILEPATH
Path to the factory class name files |
| public static final String | SAXCLASSFILE
Fully qualified path name of SAX Parser Factory Class Name file |
| private static final String | SAXFACTORYDESCRIPTION
SAX Factory Service Description |
| public static final String | SAXFACTORYNAME
Filename containing the SAX Parser Factory Class name. |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| private Object | Returns: a parserFactoryClass ObjectA parserFactoryClassName)String object containing the name
of the parser factory classGiven a parser factory class name, instantiate that class. |
| private List | Returns: A List of strings containing the parser class names.The URL of the service file containing the parser class
names parserUrl)Given the URL for a file, reads and returns the parser class names. |
| public Object | Returns: A new, configured XML Parser Factory object or null if a configuration error was encounteredThe bundle using the service. bundle, ServiceRegistration<Object> The registration)ServiceRegistration object for the
service.Implements org. Creates a new XML Parser Factory object. |
| private void | registerDOMParsers(List<String>
- a parserFactoryClassNames)List of String objects
containing the names of the parser Factory ClassesRegister DOM Parser Factory Services with the framework. |
| private void | registerSAXParsers(List<String>
- a parserFactoryClassNames)List of String objects
containing the names of the parser Factory ClassesRegister SAX Parser Factory Services with the framework. |
| private void | setDefaultDOMProperties(DocumentBuilderFactory
The factory, Hashtable<String, Object> DocumentBuilderFactory objectHashtable of service properties.Set the DOM parser service properties. |
| private void | setDefaultSAXProperties(SAXParserFactory
The factory, Hashtable<String, Object> SAXParserFactory objectHashtable of service properties.Set the SAX Parser Service Properties. |
| public void | setDOMProperties(DocumentBuilderFactory
- the DocumentBuilderFactory object factory, Hashtable<String, Object> - Hashtable of service properties. props)Set the customizable DOM Parser Service Properties. |
| public void | setSAXProperties(SAXParserFactory
- the SAXParserFactory object factory, Hashtable<String, Object> - the properties object for the service properties)Set the customizable SAX Parser Service Properties. |
| public void | start(BundleContext
The execution context of the bundle being started. context)Implements org. Called when this bundle is started so the Framework can perform the bundle-specific activities necessary to start this bundle. |
| public void | stop(BundleContext
The execution context of the bundle being stopped. context)Implements org. This method has nothing to do as all active service registrations will automatically get unregistered when the bundle stops. |
| public void | ungetService(Bundle
The bundle releasing the service. bundle, ServiceRegistration<Object> The registration, Object ServiceRegistration object for the
service.The XML Parser Factory object returned by a previous call
to the service)getService method.Implements org. Releases a XML Parser Factory object. |
| bundleContext | back to summary |
|---|---|
| private volatile BundleContext bundleContext Context of this bundle | |
| DOMCLASSFILE | back to summary |
|---|---|
| public static final String DOMCLASSFILE Fully qualified path name of DOM Parser Factory Class Name file | |
| DOMFACTORYDESCRIPTION | back to summary |
|---|---|
| private static final String DOMFACTORYDESCRIPTION DOM Factory Service Description | |
| DOMFACTORYNAME | back to summary |
|---|---|
| public static final String DOMFACTORYNAME Filename containing the DOM Parser Factory Class name. Also used as the
basis for the | |
| FACTORYNAMEKEY | back to summary |
|---|---|
| private static final String FACTORYNAMEKEY Key for parser factory name property - this must be saved in the parsers properties hashtable so that the parser factory can be instantiated from a ServiceReference | |
| PARSER_NAMESPACEAWARE | back to summary |
|---|---|
| public static final String PARSER_NAMESPACEAWARE Service property specifying if factory is configured to support namespace
aware parsers. The value is of type | |
| PARSER_VALIDATING | back to summary |
|---|---|
| public static final String PARSER_VALIDATING Service property specifying if factory is configured to support
validating parsers. The value is of type | |
| PARSERCLASSFILEPATH | back to summary |
|---|---|
| private static final String PARSERCLASSFILEPATH Path to the factory class name files | |
| SAXCLASSFILE | back to summary |
|---|---|
| public static final String SAXCLASSFILE Fully qualified path name of SAX Parser Factory Class Name file | |
| SAXFACTORYDESCRIPTION | back to summary |
|---|---|
| private static final String SAXFACTORYDESCRIPTION SAX Factory Service Description | |
| SAXFACTORYNAME | back to summary |
|---|---|
| public static final String SAXFACTORYNAME Filename containing the SAX Parser Factory Class name. Also used as the
basis for the | |
| XMLParserActivator | back to summary |
|---|---|
| public XMLParserActivator() | |
| getFactory | back to summary |
|---|---|
| private Object getFactory(String parserFactoryClassName) throws FactoryConfigurationError Given a parser factory class name, instantiate that class. | |
| getParserFactoryClassNames | back to summary |
|---|---|
| private List Given the URL for a file, reads and returns the parser class names. There may be multiple classes specified in this file, one per line. There may also be comment lines in the file, which begin with "#".
| |
| getService | back to summary |
|---|---|
| public Object getService(Bundle bundle, ServiceRegistration<Object> registration) Implements org. Creates a new XML Parser Factory object. A unique XML Parser Factory object is returned for each call to this method. The returned XML Parser Factory object will be configured for validating and namespace aware support as specified in the service properties of the specified ServiceRegistration object. This method can be overridden to configure additional features in the returned XML Parser Factory object.
| |
| registerDOMParsers | back to summary |
|---|---|
| private void registerDOMParsers(List<String> parserFactoryClassNames) throws FactoryConfigurationError Register DOM Parser Factory Services with the framework.
| |
| registerSAXParsers | back to summary |
|---|---|
| private void registerSAXParsers(List<String> parserFactoryClassNames) throws FactoryConfigurationError Register SAX Parser Factory Services with the framework.
| |
| setDefaultDOMProperties | back to summary |
|---|---|
| private void setDefaultDOMProperties(DocumentBuilderFactory factory, Hashtable<String, Object> props, int index) Set the DOM parser service properties. By default, the following properties are set:
| |
| setDefaultSAXProperties | back to summary |
|---|---|
| private void setDefaultSAXProperties(SAXParserFactory factory, Hashtable<String, Object> props, int index) Set the SAX Parser Service Properties. By default, the following properties are set:
| |
| setDOMProperties | back to summary |
|---|---|
| public void setDOMProperties(DocumentBuilderFactory factory, Hashtable<String, Object> props) Set the customizable DOM Parser Service Properties. This method attempts to instantiate a validating parser and a namespace aware parser to determine if the parser can support those features. The appropriate properties are then set in the specified props object. This method can be overridden to add additional DOM2 features and properties. If you want to be able to filter searches of the OSGi service registry, this method must put a key, value pair into the properties object for each feature or property. For example, properties.put("http://www.acme.com/features/foo", Boolean.TRUE);
| |
| setSAXProperties | back to summary |
|---|---|
| public void setSAXProperties(SAXParserFactory factory, Hashtable<String, Object> properties) Set the customizable SAX Parser Service Properties. This method attempts to instantiate a validating parser and a namespace aware parser to determine if the parser can support those features. The appropriate properties are then set in the specified properties object. This method can be overridden to add additional SAX2 features and properties. If you want to be able to filter searches of the OSGi service registry, this method must put a key, value pair into the properties object for each feature or property. For example, properties.put("http://www.acme.com/features/foo", Boolean.TRUE);
| |
| start | back to summary |
|---|---|
| public void start(BundleContext context) throws Exception Implements org. Called when this bundle is started so the Framework can perform the bundle-specific activities necessary to start this bundle. This method can be used to register services or to allocate any resources that this bundle needs. This method must complete and return to its caller in a timely manner. This method attempts to register a SAX and DOM parser with the Framework's service registry.
| |
| stop | back to summary |
|---|---|
| public void stop(BundleContext context) throws Exception Implements org. This method has nothing to do as all active service registrations will automatically get unregistered when the bundle stops.
| |
| ungetService | back to summary |
|---|---|
| public void ungetService(Bundle bundle, ServiceRegistration<Object> registration, Object service) Implements org. Releases a XML Parser Factory object.
| |