Author: oheger
Date: Mon Oct 30 12:22:50 2006
New Revision: 469259
URL: http://svn.apache.org/viewvc?view=rev&rev=469259
Log:
Updated ConfigurationDynaBean to better work together with different types of
configurations; fix for CONFIGURATION-227
Added:
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/beanutils/TestConfigurationDynaBeanXMLConfig.java
(with props)
Modified:
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/beanutils/ConfigurationDynaBean.java
jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
Modified:
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/beanutils/ConfigurationDynaBean.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/beanutils/ConfigurationDynaBean.java?view=diff&rev=469259&r1=469258&r2=469259
==============================================================================
---
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/beanutils/ConfigurationDynaBean.java
(original)
+++
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/beanutils/ConfigurationDynaBean.java
Mon Oct 30 12:22:50 2006
@@ -25,6 +25,7 @@
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationMap;
import org.apache.commons.configuration.ConversionException;
+import org.apache.commons.configuration.SubsetConfiguration;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -44,12 +45,20 @@
* [EMAIL PROTECTED]
org.apache.commons.configuration.Configuration#getList(String)}
* method. Setting an indexed property always throws an exception.</p>
*
+ * <p>Note: Some of the methods expect that a dot (".") is used as
+ * property delimitor for the wrapped configuration. This is true for most of
+ * the default configurations. Hierarchical configurations, for which a
specific
+ * expression engine is set, may cause problems.</p>
+ *
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Gladwell</a>
* @version $Revision$, $Date$
* @since 1.0-rc1
*/
public class ConfigurationDynaBean extends ConfigurationMap implements DynaBean
{
+ /** Constant for the property delimiter.*/
+ private static final String PROPERTY_DELIMITER = ".";
+
/** The logger.*/
private static Log log = LogFactory.getLog(ConfigurationDynaBean.class);
@@ -184,10 +193,10 @@
if (result == null)
{
// otherwise attempt to create bean from configuration subset
- Configuration subset = getConfiguration().subset(name);
+ Configuration subset = new SubsetConfiguration(getConfiguration(),
name, PROPERTY_DELIMITER);
if (!subset.isEmpty())
{
- result = new
ConfigurationDynaBean(getConfiguration().subset(name));
+ result = new ConfigurationDynaBean(subset);
}
}
@@ -265,11 +274,7 @@
*/
public void remove(String name, String key)
{
- Configuration subset = getConfiguration().subset(name);
- if (subset == null)
- {
- throw new IllegalArgumentException("Mapped property '" + name + "'
does not exist.");
- }
+ Configuration subset = new SubsetConfiguration(getConfiguration(),
name, PROPERTY_DELIMITER);
subset.setProperty(key, null);
}
@@ -290,6 +295,7 @@
{
List list = (List) property;
list.set(index, value);
+ getConfiguration().setProperty(name, list);
}
else if (property.getClass().isArray())
{
Added:
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/beanutils/TestConfigurationDynaBeanXMLConfig.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/beanutils/TestConfigurationDynaBeanXMLConfig.java?view=auto&rev=469259
==============================================================================
---
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/beanutils/TestConfigurationDynaBeanXMLConfig.java
(added)
+++
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/beanutils/TestConfigurationDynaBeanXMLConfig.java
Mon Oct 30 12:22:50 2006
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.configuration.beanutils;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.XMLConfiguration;
+
+/**
+ * An additional test class for ConfigurationDynaBean. This test class performs
+ * the same tests as the default test class, but uses a XMLConfiguration as
+ * underlying configuration object.
+ *
+ * @author <a
+ *
href="http://jakarta.apache.org/commons/configuration/team-list.html">Commons
+ * Configuration team</a>
+ * @version $Id$
+ */
+public class TestConfigurationDynaBeanXMLConfig extends
+ TestConfigurationDynaBean
+{
+ /**
+ * Creates the underlying configuration object. This implementation will
+ * create a XMLConfiguration.
+ * @return the underlying configuration
+ */
+ protected Configuration createConfiguration()
+ {
+ return new XMLConfiguration();
+ }
+}
Propchange:
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/beanutils/TestConfigurationDynaBeanXMLConfig.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/beanutils/TestConfigurationDynaBeanXMLConfig.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/beanutils/TestConfigurationDynaBeanXMLConfig.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?view=diff&rev=469259&r1=469258&r2=469259
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Mon Oct 30
12:22:50 2006
@@ -23,6 +23,10 @@
<body>
<release version="1.4-dev" date="in SVN">
+ <action dev="oheger" type="update" issue="CONFIGURATION-227">
+ The compatibility of ConfigurationDynaBean with other configuration
types
+ than those that inherit from BaseConfiguration was improved.
+ </action>
<action dev="oheger" type="update" issue="CONFIGURATION-233"
due-to="Rainer Jung">
The getList() method of CompositeConfiguration does now fully support
variable interpolation. So it is possible to refer to a variable in
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]