org.pentaho.reporting.libraries.xmlns.parser

Class AbstractXmlResourceFactory

public abstract class AbstractXmlResourceFactory extends Object implements ResourceFactory

A base-class for resource-factories that load their resources from XML files. This class provides a multiplexing option. For this, the parser looks at the root-element of the document to be parsed and selects the most suitable XmlFactoryModule implementation registered.

Author: Thomas Morgner

Field Summary
static StringCONTENTBASE_KEY
A key for the content base.
Constructor Summary
protected AbstractXmlResourceFactory()
Default-Constructor.
Method Summary
protected voidconfigureReader(XMLReader reader, MultiplexRootElementHandler handler)
Configures the xml reader.
Resourcecreate(ResourceManager manager, ResourceData data, ResourceKey context)
Creates a resource by interpreting the data given in the resource-data object.
protected ResourcecreateResource(ResourceKey targetKey, MultiplexRootElementHandler handler, Object createdProduct)
Creates a Resource object for the given product.
protected ObjectfinishResult(Object res, ResourceManager manager, ResourceData data, ResourceKey context)
Finishes up the result.
protected abstract ConfigurationgetConfiguration()
Returns the configuration that should be used to initialize this factory.
protected ErrorHandlergetErrorHandler()
Returns the XML-Error handler that should be registered with the XML parser.
protected SAXParsergetParser()
Returns a SAX parser.
voidinitializeDefaults()
Loads all XmlFactoryModule-implementations from the given configuration.
ObjectparseDirectly(ResourceManager manager, InputSource input, ResourceKey context, Map parameters)
A method to allow to invoke the parsing without accessing the LibLoader layer.
voidregisterModule(XmlFactoryModule factoryModule)
Registers a factory module for being used during the parsing.

Field Detail

CONTENTBASE_KEY

public static final String CONTENTBASE_KEY
A key for the content base.

Constructor Detail

AbstractXmlResourceFactory

protected AbstractXmlResourceFactory()
Default-Constructor.

Method Detail

configureReader

protected void configureReader(XMLReader reader, MultiplexRootElementHandler handler)
Configures the xml reader. Use this to set features or properties before the documents get parsed.

Parameters: handler the parser implementation that will handle the SAX-Callbacks. reader the xml reader that should be configured.

create

public Resource create(ResourceManager manager, ResourceData data, ResourceKey context)
Creates a resource by interpreting the data given in the resource-data object. If additional datastreams need to be parsed, the provided resource manager should be used. This method parses the given resource-data as XML stream.

Parameters: manager the resource manager used for all resource loading. data the resource-data from where the binary data is read. context the resource context used to resolve relative resource paths.

Returns: the parsed result, never null.

Throws: ResourceCreationException if the resource could not be parsed due to syntaxctial or logical errors in the data. ResourceLoadingException if the resource could not be accessed from the physical storage.

createResource

protected Resource createResource(ResourceKey targetKey, MultiplexRootElementHandler handler, Object createdProduct)
Creates a Resource object for the given product. By default this returns a compound-resource that holds all the key that identify the resources used during the content production.

Parameters: targetKey the target key. handler the root handler used for the parsing. createdProduct the created product.

Returns: the product wrapped into a resource object.

finishResult

protected Object finishResult(Object res, ResourceManager manager, ResourceData data, ResourceKey context)
Finishes up the result. This can be used for general clean up and post-parse initializaion of the result. The default implementation does nothing and just returns the object itself.

Parameters: res the parsed resource. manager the resource manager that was used to load the resource. data the data object from where the resource is loaded. context the context that resolves relative resource paths.

Returns: the parsed resource.

Throws: ResourceCreationException if the post initialization fails. ResourceLoadingException if loading external resources failed with an IO error.

getConfiguration

protected abstract Configuration getConfiguration()
Returns the configuration that should be used to initialize this factory.

Returns: the configuration for initializing the factory.

getErrorHandler

protected ErrorHandler getErrorHandler()
Returns the XML-Error handler that should be registered with the XML parser. By default, this returns a logger.

Returns: the error handler.

getParser

protected SAXParser getParser()
Returns a SAX parser.

Returns: a SAXParser.

Throws: ParserConfigurationException if there is a problem configuring the parser. SAXException if there is a problem with the parser initialisation

initializeDefaults

public void initializeDefaults()
Loads all XmlFactoryModule-implementations from the given configuration.

See Also: getConfiguration

parseDirectly

public Object parseDirectly(ResourceManager manager, InputSource input, ResourceKey context, Map parameters)
A method to allow to invoke the parsing without accessing the LibLoader layer. The data to be parsed is held in the given InputSource object.

Parameters: manager the resource manager used for all resource loading. input the raw-data given as SAX-InputSource. context the resource context used to resolve relative resource paths. parameters the parse parameters.

Returns: the parsed result, never null.

Throws: ResourceCreationException if the resource could not be parsed due to syntaxctial or logical errors in the data. ResourceLoadingException if the resource could not be accessed from the physical storage. ResourceKeyCreationException if creating the context key failed.

registerModule

public void registerModule(XmlFactoryModule factoryModule)
Registers a factory module for being used during the parsing. If the factory module does not return a result that matches the factory's type, the parsing will always fail.

Parameters: factoryModule the factory module.

Throws: NullPointerException if the module given is null.