| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.apache.commons.configuration.tree.xpath.XPathExpressionEngine
 A specialized implementation of the ExpressionEngine interface
 that is able to evaluate XPATH expressions.
 
This class makes use of Commons JXPath for handling XPath expressions and mapping them to the nodes of a hierarchical configuration. This makes the rich and powerful XPATH syntax available for accessing properties from a configuration object.
 For selecting properties arbitrary XPATH expressions can be used, which
 select single or multiple configuration nodes. The associated
 Configuration instance will directly pass the specified
 property keys into this engine. If a key is not syntactically correct, an
 exception will be thrown.
 
For adding new properties, this expression engine uses a specific syntax: the "key" of a new property must consist of two parts that are separated by whitespace:
addProperty() method follow:
 
 
"/tables/table[1] type"
 This will add a new type node as a child of the first
 table element.
 
"/tables/table[1] @type"
 Similar to the example above, but this time a new attribute named
 type will be added to the first table element.
 
"/tables table/fields/field/name"
 This example shows how a complex path can be added. Parent node is the
 tables element. Here a new branch consisting of the nodes
 table, fields, field, and
 name will be added.
 
"/tables table/fields/field@type"
This is similar to the last example, but in this case a complex path ending with an attribute is defined.
 Note: This extended syntax for adding properties only works
 with the addProperty() method. setProperty() does
 not support creating new nodes this way.
 
| Constructor Summary | |
| XPathExpressionEngine() | |
| Method Summary | |
| protected  org.apache.commons.jxpath.JXPathContext | createContext(ConfigurationNode root,
              String key)Creates the JXPathContextused for executing a query. | 
| protected  void | initNodeAddData(NodeAddData data,
                String path)Initializes most properties of a NodeAddDataobject. | 
|  String | nodeKey(ConfigurationNode node,
        String parentKey)Returns a (canonic) key for the given node based on the parent's key. | 
|  NodeAddData | prepareAdd(ConfigurationNode root,
           String key)Prepares an add operation for a configuration property. | 
|  List | query(ConfigurationNode root,
      String key)Executes a query. | 
| Methods inherited from class java.lang.Object | 
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Constructor Detail | 
public XPathExpressionEngine()
| Method Detail | 
public List query(ConfigurationNode root,
                  String key)
query in interface ExpressionEngineroot - the configuration root nodekey - the query to be executed
public String nodeKey(ConfigurationNode node,
                      String parentKey)
nodeKey() implementation of
 DefaultExpressionEngine
nodeKey in interface ExpressionEnginenode - the node for which a key is to be constructedparentKey - the key of the parent node
public NodeAddData prepareAdd(ConfigurationNode root,
                              String key)
prepareAdd in interface ExpressionEngineroot - the configuration's root nodekey - the key describing the target of the add operation and the
 path of the new node
protected org.apache.commons.jxpath.JXPathContext createContext(ConfigurationNode root,
                                                                String key)
JXPathContext used for executing a query. This
 method will create a new context and ensure that it is correctly
 initialized.
root - the configuration root nodekey - the key to be queried
protected void initNodeAddData(NodeAddData data,
                               String path)
NodeAddData object. This
 method is called by prepareAdd() after the parent node has
 been found. Its task is to interpret the passed in path of the new node.
data - the data object to initializepath - the path of the new node| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||