You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ep...@apache.org on 2003/10/17 10:11:52 UTC
cvs commit: jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration BaseConfiguration.java AbstractConfiguration.java
epugh 2003/10/17 01:11:52
Modified: configuration/xdocs changes.xml
configuration/src/java/org/apache/commons/configuration
BaseConfiguration.java AbstractConfiguration.java
Log:
Patch from Oliver Heger to faciliate extending configuration classes
Revision Changes Path
1.3 +4 -0 jakarta-commons-sandbox/configuration/xdocs/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/configuration/xdocs/changes.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- changes.xml 7 Oct 2003 10:58:56 -0000 1.2
+++ changes.xml 17 Oct 2003 08:11:52 -0000 1.3
@@ -7,6 +7,10 @@
<body>
<release version="1.0-dev-4" date="">
+ <action dev="oheger" type="update">
+ AbstractConfiguration addProperty now delegates to an abstract addPropertyDirect
+ implemented by BaseConfiguration.
+ </action>
<action dev="kshaposhnikov" type="update">
Changed getString() method to throw a NoSuchElementException instead of "" if the
configuration property doesn't exist.
1.16 +35 -2 jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration/BaseConfiguration.java
Index: BaseConfiguration.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration/BaseConfiguration.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- BaseConfiguration.java 12 Oct 2003 09:32:30 -0000 1.15
+++ BaseConfiguration.java 17 Oct 2003 08:11:52 -0000 1.16
@@ -79,6 +79,7 @@
* @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
* @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
* @author <a href="mailto:ksh@scand.com">Konstantin Shaposhnikov</a>
+ * @author <a href="mailto:oliver.heger@t-online.de">Oliver Heger</a>
*
* @version $Id$
*/
@@ -115,7 +116,39 @@
*/
protected void addPropertyDirect(String key, Object obj)
{
- store.put(key, obj);
+ Object o = getPropertyDirect(key);
+ Object objAdd = null;
+
+ if(o == null)
+ {
+ objAdd = obj;
+ }
+ else
+ {
+ if (o instanceof Container)
+ {
+ ((Container) o).add(obj);
+ }
+ else
+ {
+ // The token key is not a container.
+ Container c = new Container();
+
+ // There is an element. Put it into the container
+ // at the first position
+ c.add(o);
+
+ // Now gobble up the supplied object
+ c.add(obj);
+
+ objAdd = c;
+ }
+ }
+
+ if(objAdd != null)
+ {
+ store.put(key, objAdd);
+ }
}
/**
1.3 +9 -55 jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration/AbstractConfiguration.java
Index: AbstractConfiguration.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration/AbstractConfiguration.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractConfiguration.java 12 Oct 2003 09:32:30 -0000 1.2
+++ AbstractConfiguration.java 17 Oct 2003 08:11:52 -0000 1.3
@@ -69,6 +69,7 @@
* then you should implement only abstract methods from this class.
*
* @author <a href="mailto:ksh@scand.com">Konstantin Shaposhnikov</a>
+ * @author <a href="mailto:oliver.heger@t-online.de">Oliver Heger</a>
* @version $Id$
*/
public abstract class AbstractConfiguration implements Configuration
@@ -124,11 +125,13 @@
*/
public void addProperty(String key, Object token)
{
- List tokenAdd = null;
-
if (token instanceof String)
{
- tokenAdd = processString((String) token);
+ for(Iterator it = processString((String) token).iterator();
+ it.hasNext();)
+ {
+ addPropertyDirect(key, it.next());
+ }
}
else if (token instanceof Collection)
{
@@ -136,59 +139,10 @@
{
addProperty(key, it.next());
}
- return;
- }
- else
- {
- tokenAdd = new Vector(1);
- tokenAdd.add(token);
- }
-
- Object o = getPropertyDirect(key);
-
- if (o instanceof Container)
- {
- // There is already a container for our key in the config
- // Simply add the new tokens
- for (Iterator it = tokenAdd.iterator(); it.hasNext();)
- {
- ((Container) o).add(it.next());
- }
}
else
{
- // No Key at all or the token key is not a container.
- Container c = new Container();
-
- if (o != null)
- {
- // There is an element. Put it into the container
- // at the first position
- c.add(o);
- }
-
- // Now gobble up the supplied objects
- for (Iterator it = tokenAdd.iterator(); it.hasNext();)
- {
- c.add(it.next());
- }
-
- // Do we have a key? If not, we simply add either the container
- // (If the element was a CSV) or the first element of the
- // Container (if its size is 1)
-
- if (o == null && c.size() == 1)
- {
- // No Key existed and only one got put into the container. Then
- // add the key direct. Do not mess with the container
- addPropertyDirect(key, c.get(0));
- }
- else
- {
- // Either a key already existed or there was a CSV supplied
- // Add the Container to the Store
- addPropertyDirect(key, c);
- }
+ addPropertyDirect(key, token);
}
}
@@ -1550,7 +1504,7 @@
* Private Wrapper class for Vector, so we can distinguish between
* Vector objects and our container
*/
- class Container
+ static class Container
{
/** We're wrapping a List object (A vector) */
private List l = null;
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org