org.apache.cocoon.components.modules.input
Class XMLFileModule

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.cocoon.components.modules.input.AbstractInputModule
          extended by org.apache.cocoon.components.modules.input.AbstractJXPathModule
              extended by org.apache.cocoon.components.modules.input.XMLFileModule
All Implemented Interfaces:
Disposable, Component, Composable, Configurable, LogEnabled, ThreadSafe, InputModule

public class XMLFileModule
extends AbstractJXPathModule
implements Composable, ThreadSafe

This module provides an Input Module interface to any XML document, by using XPath expressions as attribute keys. The XML can be obtained from any Cocoon Source (e.g., cocoon:/..., context://.., and regular URLs). Sources can be held in memory for better performance and reloaded if changed.

Caching and reloading can be turned on / off (default: caching on, reloading off) through <reloadable>false</reloadable> and <cacheable>false</cacheable>. The file (source) to use is specified through <file src="protocol:path/to/file.xml" reloadable="true" cacheable="true"/> optionally overriding defaults for caching and/or reloading.

In addition, xpath expressions are cached for higher performance. Thus, if an expression has been evaluated for a file, the result is cached and will be reused, the expression is not evaluated a second time. This can be turned off using the cache-expressions configuration option.

Version:
$Id: XMLFileModule.html 1304258 2012-03-23 10:09:27Z ilgrosso $
Author:
Jeff Turner, Christian Haul

Nested Class Summary
protected static class XMLFileModule.DocumentHelper
          Takes care of (re-)loading and caching of sources.
 
Field Summary
 
Fields inherited from class org.apache.cocoon.components.modules.input.AbstractJXPathModule
configuration, parameter
 
Fields inherited from class org.apache.cocoon.components.modules.input.AbstractInputModule
settings
 
Fields inherited from interface org.apache.cocoon.components.modules.input.InputModule
ROLE
 
Constructor Summary
XMLFileModule()
           
 
Method Summary
 void compose(ComponentManager manager)
          Set the current ComponentManager instance used by this Composable.
 void configure(Configuration config)
          Static (cocoon.xconf) configuration.
 void dispose()
          Dispose this component
protected  void flushCache()
           
 Object getAttribute(String name, Configuration modeConf, Map objectModel)
          Standard access to an attribute's value.
 Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
          Returns an array of String objects containing all of the values the given attribute has, or null if the attribute does not exist.
protected  Object getContextObject(Configuration modeConf, Map objectModel)
          Get the DOM object that JXPath will operate on when evaluating attributes.
 
Methods inherited from class org.apache.cocoon.components.modules.input.AbstractJXPathModule
getAttributeNames
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XMLFileModule

public XMLFileModule()
Method Detail

compose

public void compose(ComponentManager manager)
             throws ComponentException
Set the current ComponentManager instance used by this Composable.

Specified by:
compose in interface Composable
Throws:
ComponentException

configure

public void configure(Configuration config)
               throws ConfigurationException
Static (cocoon.xconf) configuration. Configuration is expected to be of the form: <...> <reloadable>true|false</reloadable> <cacheable>true|false</cacheable> <file src="src1" reloadable="true|false" cacheable="true|false"/> <file src="src2" reloadable="true|false" cacheable="true|false"/> ... </...> Each <file/> element pre-loads an XML DOM for querying. Typically only one <file> is specified, and its src is used as a default if not overridden in the getContextObject(Configuration, Map)

Specified by:
configure in interface Configurable
Overrides:
configure in class AbstractJXPathModule
Parameters:
config - a Configuration value, as described above.
Throws:
ConfigurationException - if an error occurs

dispose

public void dispose()
Dispose this component

Specified by:
dispose in interface Disposable
Overrides:
dispose in class AbstractInputModule

getContextObject

protected Object getContextObject(Configuration modeConf,
                                  Map objectModel)
                           throws ConfigurationException
Get the DOM object that JXPath will operate on when evaluating attributes. This DOM is loaded from a Source, specified in the modeConf, or (if modeConf is null) from the configure(Configuration).

Specified by:
getContextObject in class AbstractJXPathModule
Parameters:
modeConf - The dynamic configuration for the current operation. May be null, in which case static (cocoon.xconf) configuration is used. Configuration is expected to have a <file> child node, and be of the form: <...> <file src="..." reloadable="true|false"/> </...>
objectModel - Object Model for the current module operation.
Throws:
ConfigurationException

getAttribute

public Object getAttribute(String name,
                           Configuration modeConf,
                           Map objectModel)
                    throws ConfigurationException
Description copied from interface: InputModule
Standard access to an attribute's value. If more than one value exists, the first is returned. If the value does not exist, null is returned. To get all values, use InputModule.getAttributeValues(String, Configuration, Map) or InputModule.getAttributeNames(Configuration, Map) and InputModule.getAttribute(String, Configuration, Map) to get them one by one.

Specified by:
getAttribute in interface InputModule
Overrides:
getAttribute in class AbstractJXPathModule
Parameters:
name - a String that specifies what the caller thinks would identify an attribute. This is mainly a fallback if no modeConf is present.
modeConf - column's mode configuration from resource description. This argument is optional.
Throws:
ConfigurationException

getAttributeValues

public Object[] getAttributeValues(String name,
                                   Configuration modeConf,
                                   Map objectModel)
                            throws ConfigurationException
Description copied from interface: InputModule
Returns an array of String objects containing all of the values the given attribute has, or null if the attribute does not exist. As an alternative, InputModule.getAttributeNames(Configuration, Map) together with InputModule.getAttribute(String, Configuration, Map) can be used to get the values one by one.

Specified by:
getAttributeValues in interface InputModule
Overrides:
getAttributeValues in class AbstractJXPathModule
Parameters:
name - a String that specifies what the caller thinks would identify an attributes. This is mainly a fallback if no modeConf is present.
modeConf - column's mode configuration from resource description. This argument is optional.
Throws:
ConfigurationException

flushCache

protected void flushCache()


Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.