org.pentaho.reporting.libraries.xmlns.parser
Class AbstractXmlResourceFactory

java.lang.Object
  extended by org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlResourceFactory
All Implemented Interfaces:
org.pentaho.reporting.libraries.resourceloader.ResourceFactory

public abstract class AbstractXmlResourceFactory
extends java.lang.Object
implements org.pentaho.reporting.libraries.resourceloader.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 java.lang.String CONTENTBASE_KEY
          A key for the content base.
 
Fields inherited from interface org.pentaho.reporting.libraries.resourceloader.ResourceFactory
CONFIG_PREFIX
 
Method Summary
 org.pentaho.reporting.libraries.resourceloader.Resource create(org.pentaho.reporting.libraries.resourceloader.ResourceManager manager, org.pentaho.reporting.libraries.resourceloader.ResourceData data, org.pentaho.reporting.libraries.resourceloader.ResourceKey context)
          Creates a resource by interpreting the data given in the resource-data object.
 void initializeDefaults()
          Loads all XmlFactoryModule-implementations from the given configuration.
 java.lang.Object parseDirectly(org.pentaho.reporting.libraries.resourceloader.ResourceManager manager, org.xml.sax.InputSource input, org.pentaho.reporting.libraries.resourceloader.ResourceKey context, java.util.Map parameters)
          A method to allow to invoke the parsing without accessing the LibLoader layer.
 void registerModule(XmlFactoryModule factoryModule)
          Registers a factory module for being used during the parsing.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.pentaho.reporting.libraries.resourceloader.ResourceFactory
getFactoryType
 

Field Detail

CONTENTBASE_KEY

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

See Also:
Constant Field Values
Method Detail

create

public org.pentaho.reporting.libraries.resourceloader.Resource create(org.pentaho.reporting.libraries.resourceloader.ResourceManager manager,
                                                                      org.pentaho.reporting.libraries.resourceloader.ResourceData data,
                                                                      org.pentaho.reporting.libraries.resourceloader.ResourceKey context)
                                                               throws org.pentaho.reporting.libraries.resourceloader.ResourceCreationException,
                                                                      org.pentaho.reporting.libraries.resourceloader.ResourceLoadingException
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.

Specified by:
create in interface org.pentaho.reporting.libraries.resourceloader.ResourceFactory
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:
org.pentaho.reporting.libraries.resourceloader.ResourceCreationException - if the resource could not be parsed due to syntaxctial or logical errors in the data.
org.pentaho.reporting.libraries.resourceloader.ResourceLoadingException - if the resource could not be accessed from the physical storage.

parseDirectly

public java.lang.Object parseDirectly(org.pentaho.reporting.libraries.resourceloader.ResourceManager manager,
                                      org.xml.sax.InputSource input,
                                      org.pentaho.reporting.libraries.resourceloader.ResourceKey context,
                                      java.util.Map parameters)
                               throws org.pentaho.reporting.libraries.resourceloader.ResourceKeyCreationException,
                                      org.pentaho.reporting.libraries.resourceloader.ResourceCreationException,
                                      org.pentaho.reporting.libraries.resourceloader.ResourceLoadingException
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:
org.pentaho.reporting.libraries.resourceloader.ResourceCreationException - if the resource could not be parsed due to syntaxctial or logical errors in the data.
org.pentaho.reporting.libraries.resourceloader.ResourceLoadingException - if the resource could not be accessed from the physical storage.
org.pentaho.reporting.libraries.resourceloader.ResourceKeyCreationException - if creating the context key failed.

initializeDefaults

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

Specified by:
initializeDefaults in interface org.pentaho.reporting.libraries.resourceloader.ResourceFactory
See Also:
getConfiguration()

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:
java.lang.NullPointerException - if the module given is null.