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]