Author: oheger
Date: Sat Jan 10 12:19:29 2009
New Revision: 733334
URL: http://svn.apache.org/viewvc?rev=733334&view=rev
Log:
CONFIGURATION-358: Improved documentation in the user's guide for hierarchical
configurations. Tried to make it more explicit that the features described for
XMLConfiguration apply to other hierarchical configuration implementations as
well. Ported this fix to the configuration2 branch.
Modified:
commons/proper/configuration/branches/configuration2_experimental/xdocs/changes.xml
commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/howto_xml.xml
commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/user_guide.xml
Modified:
commons/proper/configuration/branches/configuration2_experimental/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/xdocs/changes.xml?rev=733334&r1=733333&r2=733334&view=diff
==============================================================================
---
commons/proper/configuration/branches/configuration2_experimental/xdocs/changes.xml
(original)
+++
commons/proper/configuration/branches/configuration2_experimental/xdocs/changes.xml
Sat Jan 10 12:19:29 2009
@@ -85,6 +85,9 @@
</release>
<release version="1.7" date="in SVN" description="">
+ <action dev="oheger" type="update" issue="CONFIGURATION-358">
+ Improvements of the user's guide for hierarchical configurations.
+ </action>
<action dev="oheger" type="fix" issue="CONFIGURATION-357">
The message of the ConversionException thrown by
AbstractConfiguration.getBigInteger() is now correct.
Modified:
commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/howto_xml.xml
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/howto_xml.xml?rev=733334&r1=733333&r2=733334&view=diff
==============================================================================
---
commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/howto_xml.xml
(original)
+++
commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/howto_xml.xml
Sat Jan 10 12:19:29 2009
@@ -19,12 +19,12 @@
<document>
<properties>
- <title>XML Howto</title>
+ <title>Hierarchical configurations and XML Howto</title>
<author email="[email protected]">Oliver Heger</author>
</properties>
<body>
- <section name="Using XML based Configurations">
+ <section name="Using Hierarchical Configurations">
<p>
This section explains how to use hierarchical
and structured XML datasets.
@@ -33,14 +33,33 @@
<section name="Hierarchical properties">
<p>
- Because of its
- tree-like nature XML documents can represent data that
is
- structured in many ways. This section explains how to
deal with
- such structured documents and demonstrates the enhanced
query
- facilities supported by the <a
href="apidocs/org/apache/commons/configuration/XMLConfiguration.html">
- <code>XMLConfiguration</code></a> class.
+ Many sources of configuration data have a hierarchical or tree-like
+ nature. They can represent data that is structured in many ways.
+ Such configuration sources are represented by classes derived from
+ <a
href="../apidocs/org/apache/commons/configuration/HierarchicalConfiguration.html">
+ <code>HierarchicalConfiguration</code></a>.
+ </p>
+ <p>
+ Prominent examples of hierarchical configuration sources are XML
+ documents. They can be read and written using the
+ <a
href="../apidocs/org/apache/commons/configuration/XMLConfiguration.html">
+ <code>XMLConfiguration</code></a> class. This section explains how
+ to deal with such structured data and demonstrates the enhanced
query
+ facilities supported by <code>HierarchicalConfiguration</code>. We
+ use XML documents as examples for structured configuration sources,
+ but the information provided here (especially the rules for
accessing
+ properties) applies to other hierarchical configurations as well.
+ Examples for other hierarchical configuration classes are
+ <ul>
+ <li><a
href="../apidocs/org/apache/commons/configuration/CombinedConfiguration.html">
+ <code>CombinedConfiguration</code></a></li>
+ <li><a
href="../apidocs/org/apache/commons/configuration/HierarchicalINIConfiguration.html">
+ <code>HierarchicalINIConfiguration</code></a></li>
+ <li><a
href="../apidocs/org/apache/commons/configuration/plist/PropertyListConfiguration.html">
+ <code>PropertyListConfiguration</code></a></li>
+ </ul>
</p>
- <subsection name="Accessing properties defined in XML documents">
+ <subsection name="Accessing properties in hierarchical configurations">
<p>
We will start with a simple XML document to show some basics
about accessing properties. The following file named
@@ -89,6 +108,8 @@
<p>
If no exception was thrown, the properties
defined in the
XML document are now available in the configuration object.
+ Other hierarchical configuration classes that operate on files
+ have corresponding constructors and methods for loading their
data.
The following fragment shows how the properties can be
accessed:
</p>
<source><![CDATA[
@@ -101,8 +122,8 @@
]]></source>
<p>
This listing demonstrates some important points
about constructing
- keys for accessing properties load from XML
documents and about
- features of <code>XMLConfiguration</code> in general:
+ keys for accessing properties in hierarchical
configuration sources and about
+ features of <code>HierarchicalConfiguration</code> in general:
<ul>
<li>
Nested elements are accessed
using a dot notation. In
@@ -149,7 +170,7 @@
document can be processed.
</p>
</subsection>
- <subsection name="Structured XML">
+ <subsection name="Complex hierarchical structures">
<p>
Consider the following scenario: An application
operates on
database tables and wants to load a definition
of the database
@@ -333,7 +354,7 @@
These examples should make the usage of indices
quite clear.
Because each configuration key can contain an
arbitrary number
of indices it is possible to navigate through
complex structures of
- XML documents; each XML element can be uniquely
identified.
+ hierarchical configurations; each property can
be uniquely identified.
</p>
<p>
Sometimes dealing with long property keys may become
inconvenient,
@@ -388,7 +409,7 @@
for(Iterator it = fields.iterator(); it.hasNext();)
{
HierarchicalConfiguration sub = (HierarchicalConfiguration) it.next();
- // sub contains now all data about a single field
+ // sub contains all data about a single field
String fieldName = sub.getString("name");
String fieldType = sub.getString("type");
...
@@ -396,7 +417,7 @@
<p>
The configurations returned by the <code>configurationAt()</code> and
<code>configurationsAt()</code> method are in fact instances of the
- <a
href="apidocs/org/apache/commons/configuration/SubnodeConfiguration.html">
+ <a
href="../apidocs/org/apache/commons/configuration/SubnodeConfiguration.html">
<code>SubnodeConfiguration</code></a> class. The API documentation of
this class contains more information about its features and
limitations.
@@ -477,7 +498,7 @@
</field>
<field>
<name>version</name>
- <name>size</name> <== Newly added property
+ <name>size</name> <== Newly added property
<type>int</type>
</field>
</fields>
@@ -542,11 +563,16 @@
<code>HierarchicalConfiguration</code>.
</p>
</subsection>
- <subsection name="Escaping dot characters in XML tags">
+ <subsection name="Escaping dot characters in property names">
<p>
- In XML the dot character used as delimiter by most
configuration
- classes is a legal character that can occur in any tag. So the
- following XML document is completely valid:
+ Per default the dot character is used as delimiter by most
+ configuration classes (we will learn how to change this for
+ hierarchical configurations in a later section). In some
+ configuration formats however, dots can be contained in the
+ names of properties. For instance, in XML the dot is a legal
+ character that can occur in any tag. The same is true for the
names
+ of properties in windows ini files. So the following XML
+ document is completely valid:
</p>
<source><![CDATA[
<?xml version="1.0" encoding="ISO-8859-1" ?>
@@ -587,11 +613,11 @@
dots in arbitrary combination. However, as you can see, the
escaping can be confusing sometimes. So if you have a choice,
you should avoid dots in the tag names of your XML
configuration
- files.
+ files or other configuration sources.
</p>
</subsection>
</section>
-
+
<section name="Expression engines">
<p>
In the previous chapters we saw many examples about how properties
@@ -610,7 +636,7 @@
becomes possible to plug in different expression engines into a
<code>HierarchicalConfiguration</code> object. So by providing
different implementations of the
- <a
href="apidocs/org/apache/commons/configuration/tree/ExpressionEngine.html">
+ <a
href="../apidocs/org/apache/commons/configuration/tree/ExpressionEngine.html">
<code>ExpressionEngine</code></a>
interface hierarchical configurations can support alternative
expression languages for accessing their data.
@@ -619,7 +645,7 @@
Before we discuss the available expression engines that ship
with Commons Configuration, it should be explained how an
expression engine can be associated with a configuration object.
- <a
href="apidocs/org/apache/commons/configuration/HierarchicalConfiguration.html">
+ <a
href="../apidocs/org/apache/commons/configuration/HierarchicalConfiguration.html">
<code>HierarchicalConfiguration</code></a> and all derived classes
provide a <code>setExpressionEngine()</code> method, which expects
an implementation of the <code>ExpressionEngine</code> interface as
@@ -647,9 +673,9 @@
<p>
The syntax described so far for property keys of hierarchical
configurations is implemented by a specific implementation of
the
- <a
href="apidocs/org/apache/commons/configuration/tree/ExpressionEngine.html">
+ <a
href="../apidocs/org/apache/commons/configuration/tree/ExpressionEngine.html">
<code>ExpressionEngine</code></a> interface called
- <a
href="apidocs/org/apache/commons/configuration/tree/DefaultExpressionEngine.html">
+ <a
href="../apidocs/org/apache/commons/configuration/tree/DefaultExpressionEngine.html">
<code>DefaultExpressionEngine</code></a>. An instance of this
class
is installed as the global expression engine in
<code>HierarchicalConfiguration</code>. So all newly created
@@ -753,7 +779,7 @@
</p>
<p>
For enabling XPATH syntax for property keys you need the
- <a
href="apidocs/org/apache/commons/configuration/tree/xpath/XPathExpressionEngine.html">
+ <a
href="../apidocs/org/apache/commons/configuration/tree/xpath/XPathExpressionEngine.html">
<code>XPathExpressionEngine</code></a> class. This class
implements the <code>ExpressionEngine</code> interface and can
be plugged into a <code>HierarchicalConfiguration</code> object
Modified:
commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/user_guide.xml
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/user_guide.xml?rev=733334&r1=733333&r2=733334&view=diff
==============================================================================
---
commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/user_guide.xml
(original)
+++
commons/proper/configuration/branches/configuration2_experimental/xdocs/userguide/user_guide.xml
Sat Jan 10 12:19:29 2009
@@ -78,11 +78,11 @@
</ul>
<li><a href="howto_xml.html#Hierarchical_properties">Hierarchical
properties</a></li>
<ul>
- <li><a
href="howto_xml.html#Accessing_properties_defined_in_XML_documents">Accessing
properties defined in XML documents</a></li>
- <li><a href="howto_xml.html#Structured_XML">Structured XML</a></li>
+ <li><a
href="howto_xml.html#Accessing_properties_in_hierarchical_configurations">Accessing
properties in hierarchical configurations</a></li>
+ <li><a href="howto_xml.html#Complex_hierarchical_structures">Complex
hierarchical structures</a></li>
<li><a href="howto_xml.html#Accessing_structured_properties">Accessing
structured properties</a></li>
<li><a href="howto_xml.html#Adding_new_properties">Adding new
properties</a></li>
- <li><a
href="howto_xml.html#Escaping_dot_characters_in_XML_tags">Escaping dot
characters in XML tags</a></li>
+ <li><a
href="howto_xml.html#Escaping_dot_characters_in_property_names">Escaping dot
characters in property names</a></li>
</ul>
<li><a href="howto_xml.html#Expression_engines">Expression
engines</a></li>
<ul>