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

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
All Implemented Interfaces:
Disposable, Component, Configurable, LogEnabled, InputModule
Direct Known Subclasses:
FlowAttributeModule, FlowContinuationModule, PropertiesFileModule, RequestModule, SessionModule, SystemPropertyModule, XMLFileModule

public abstract class AbstractJXPathModule
extends AbstractInputModule

JXPathModule allows to access properties of any object in generic way. JXPath provides APIs for the traversal of graphs of JavaBeans, DOM and other types of objects using the XPath syntax.

Note: JXPathMetaModule is based on this class and duplicates the code since multiple inheritance is not possible. Please keep both classes in sync.

Configuration

<lenient>false</lenient> When set to true, non-existing attributes return null; when set to false, an exception is thrown. Default is true.
<parameter>foo</parameter> When set overrides attribute name passed to module.
<function name="java.lang.String" prefix="str"/> Imports the class "String" as extension class to the JXPathContext using the prefix "str". Thus "str:length(xpath)" would apply the method "length" to the string object obtained from the xpath expression. Please note that the class needs to be fully qualified.
<package name="java.util" prefix="util"/> Imports all classes in the package "java.util" as extension classes to the JXPathContext using the prefix "util". Thus "util:Date.new()" would create a new java.util.Date object.
<namespace uri="uri:foo" prefix="bar"/> Registers the namespace identified by URI uri:foo with the JXPathContext using the prefix bar. Thus expressions can query XML with nodes in this namespace using registered prefix.

Version:
$Id: AbstractJXPathModule.html 1304258 2012-03-23 10:09:27Z ilgrosso $
Author:
Konstantin Piroumian, Christian Haul, Vadim Gritsenko

Field Summary
protected  JXPathHelperConfiguration configuration
          Contains all globally registered extension classes and packages.
protected  String parameter
          Overrides attribute name
 
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
AbstractJXPathModule()
           
 
Method Summary
 void configure(Configuration config)
          Configure component.
 Object getAttribute(String name, Configuration modeConf, Map objectModel)
          Standard access to an attribute's value.
 Iterator getAttributeNames(Configuration modeConf, Map objectModel)
          Returns an Iterator of String objects containing the names of the attributes available.
 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 abstract  Object getContextObject(Configuration modeConf, Map objectModel)
          Returns the object which should be used as JXPath context.
 
Methods inherited from class org.apache.cocoon.components.modules.input.AbstractInputModule
dispose
 
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
 

Field Detail

configuration

protected JXPathHelperConfiguration configuration
Contains all globally registered extension classes and packages. Thus the lookup and loading of globally registered extensions is done only once.


parameter

protected String parameter
Overrides attribute name

Constructor Detail

AbstractJXPathModule

public AbstractJXPathModule()
Method Detail

configure

public void configure(Configuration config)
               throws ConfigurationException
Configure component. Preprocess list of packages and functions to add to JXPath context later.

Specified by:
configure in interface Configurable
Overrides:
configure in class AbstractInputModule
Parameters:
config - a Configuration value
Throws:
ConfigurationException - if an error occurs

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 AbstractInputModule
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

getAttributeNames

public Iterator getAttributeNames(Configuration modeConf,
                                  Map objectModel)
                           throws ConfigurationException
Description copied from interface: InputModule
Returns an Iterator of String objects containing the names of the attributes available. If no attributes are available, the method returns an empty Iterator.

Specified by:
getAttributeNames in interface InputModule
Overrides:
getAttributeNames in class AbstractInputModule
Parameters:
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 AbstractInputModule
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

getContextObject

protected abstract Object getContextObject(Configuration modeConf,
                                           Map objectModel)
                                    throws ConfigurationException
Returns the object which should be used as JXPath context. Descendants should override this method to return a specific object that is requried by the implementing class. Examples are: request, session and application context objects.

Throws:
ConfigurationException


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