Created a branch for working on immutable node structures. It is not yet clear how this works out. During integration with existing code, the build is going to fail for a while. Therefore, it makes sense to do this on a separate branch.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1561338 13f79535-47bb-0310-9956-ffa450edef68
Initial implementation of InMemoryNodeModel.

Currently, only the functionality related to the NodeHandler interface has been
implemented.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1563461 13f79535-47bb-0310-9956-ffa450edef68
Reworked NodeAddData class.

Made the class immutable. It now has a generic parameter for the type of nodes
supported.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1563462 13f79535-47bb-0310-9956-ffa450edef68
Added QueryResult class.

This class represents the results of a query() operation of an
ExpressionEngine. Results can be both nodes and attributes.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1563463 13f79535-47bb-0310-9956-ffa450edef68
Reworked ExpressionEngine interface.

An expression engine can now deal with nodes of different types; a NodeHandler
for the type desired has to be passed when invoking a method. A few methods
have been added for generating specific kinds of keys.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1563464 13f79535-47bb-0310-9956-ffa450edef68
Reworked DefaultExpressionEngine to handle arbitrary nodes.

DefaultExpressionEngine was adapted to the modified ExpressionEngine interface.
It now uses a passed in NodeHandler to access the properties of the nodes it
has to process.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1563465 13f79535-47bb-0310-9956-ffa450edef68
Changes on ConfigurationNodePointer related to managing a NodeHandler.

These changes are required for adapting the NodeIterator implementations to
work with arbitrary node types supported by a NodeHandler.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565789 13f79535-47bb-0310-9956-ffa450edef68
Adapted ConfigurationNodeIteratorBase.

This class is now able to provide a NodeHandler to its sub classes. Some
functionality related to the iteration has now to be implemented by sub
classes.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565790 13f79535-47bb-0310-9956-ffa450edef68
Reworked AbstractXPathTest.

This base class (which provides common functionality for tests of several
implementation classes of the XPath expression engine) now operates on
ImmutableNode objects which can be accessed by a NodeHandler object.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565791 13f79535-47bb-0310-9956-ffa450edef68
Reworked ConfigurationNodeIteratorChildren to use a NodeHandler.

Now arbitrary types of nodes for which a handler is available can be supported.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565793 13f79535-47bb-0310-9956-ffa450edef68
Reworked ConfigurationNodeIteratorAttribute to use a NodeHandler.

Attributes can now also be processed with the help of a NodeHandler.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565795 13f79535-47bb-0310-9956-ffa450edef68
Added a special NodePointer implementation for attributes.

This implementation wraps a single attribute of a configuration node which is
represented by a QueryResult object.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565796 13f79535-47bb-0310-9956-ffa450edef68
Reworked ConfigurationNodePointer to use a NodeHandler.

The pointer can now handle arbitrary nodes for which a NodeHandler
implementation exists.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565797 13f79535-47bb-0310-9956-ffa450edef68
Added a factory class for creating JXPathContext objects.

This class simplifies testing of the XPath expression engine.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565799 13f79535-47bb-0310-9956-ffa450edef68
ConfigurationNodePointerFactory now supports arbitrary nodes with a handler.

A specialized node wrapper instance is created to detect configuration nodes
and to associate them with the correct node handler.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565800 13f79535-47bb-0310-9956-ffa450edef68
Reworked XPathExpressionEngine.

The class now correctly implements the extended ExpressionEngine interface.
This means that XPATH expressions can be executed on arbitrary node models
for which a NodeHandler implementation exists.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565802 13f79535-47bb-0310-9956-ffa450edef68
Adapted test class for ConfigurationNodePointerFactory.

Now a node structure of ImmutableNode objects is queried.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565803 13f79535-47bb-0310-9956-ffa450edef68
Merged changes from trunk into branch.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1565807 13f79535-47bb-0310-9956-ffa450edef68
Added NodeUpdateData class.

Similar to NodeAddData, this class stores all information to perform an update
operation on a node model.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1568646 13f79535-47bb-0310-9956-ffa450edef68
Added NodeKeyResolver interface.

This interface allows a concrete node model implementation to interact with an
ExpressionEngine providing some more functionality than the engine itself.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/configuration/branches/immutableNodes@1568647 13f79535-47bb-0310-9956-ffa450edef68