You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2014/04/19 19:58:46 UTC
svn commit: r1588679 - in
/commons/proper/configuration/branches/immutableNodes/src:
main/java/org/apache/commons/configuration/builder/combined/
test/java/org/apache/commons/configuration/builder/combined/
Author: oheger
Date: Sat Apr 19 17:58:45 2014
New Revision: 1588679
URL: http://svn.apache.org/r1588679
Log:
Reworked ConfigurationDeclaration.
The class was adapted to the changes of its base class XMLBeanDeclaration.
Modified:
commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/builder/combined/ConfigurationDeclaration.java
commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/builder/combined/TestConfigurationDeclaration.java
Modified: commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/builder/combined/ConfigurationDeclaration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/builder/combined/ConfigurationDeclaration.java?rev=1588679&r1=1588678&r2=1588679&view=diff
==============================================================================
--- commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/builder/combined/ConfigurationDeclaration.java (original)
+++ commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/builder/combined/ConfigurationDeclaration.java Sat Apr 19 17:58:45 2014
@@ -16,9 +16,10 @@
*/
package org.apache.commons.configuration.builder.combined;
+import java.util.Set;
+
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.configuration.beanutils.XMLBeanDeclaration;
-import org.apache.commons.configuration.tree.ConfigurationNode;
/**
* <p>
@@ -50,7 +51,7 @@ public class ConfigurationDeclaration ex
* @param config the configuration this declaration is based onto
*/
public ConfigurationDeclaration(CombinedConfigurationBuilder builder,
- HierarchicalConfiguration config)
+ HierarchicalConfiguration<?> config)
{
super(config);
configurationBuilder = builder;
@@ -168,43 +169,28 @@ public class ConfigurationDeclaration ex
}
/**
- * Checks whether the given node is reserved. This method will take further
- * reserved attributes into account
- *
- * @param nd the node
- * @return a flag whether this node is reserved
+ * {@inheritDoc} This implementation checks for additional reserved
+ * attribute names. Note that in some cases the presence of other attribute
+ * names determine whether a name is reserved or not. For instance, per
+ * default the attribute {@code config-at} is reserved. However, if this
+ * attribute is not present, the attribute {@code at} is also considered as
+ * a reserved attribute. (This is mainly done for dealing with legacy
+ * configuration files supported by earlier versions of this library.)
*/
@Override
- protected boolean isReservedNode(ConfigurationNode nd)
+ protected boolean isReservedAttributeName(String name)
{
- if (super.isReservedNode(nd))
+ if (super.isReservedAttributeName(name))
{
return true;
}
- return nd.isAttribute()
- && ((CombinedConfigurationBuilder.ATTR_ATNAME.equals(nd
- .getName()) && nd.getParentNode().getAttributeCount(
- RESERVED_PREFIX
- + CombinedConfigurationBuilder.ATTR_ATNAME) == 0) || (CombinedConfigurationBuilder.ATTR_OPTIONALNAME
- .equals(nd.getName()) && nd
- .getParentNode()
- .getAttributeCount(
- RESERVED_PREFIX
- + CombinedConfigurationBuilder.ATTR_OPTIONALNAME) == 0));
- }
-
-// /**
-// * Performs interpolation. This implementation will delegate interpolation
-// * to the configuration builder, which takes care that the currently
-// * constructed configuration is taken into account, too.
-// *
-// * @param value the value to be interpolated
-// * @return the interpolated value
-// */
-// @Override
-// protected Object interpolate(Object value)
-// {
-// return getConfigurationBuilder().interpolate(value);
-// }
+ Set<String> attributes = getAttributeNames();
+ return (CombinedConfigurationBuilder.ATTR_ATNAME.equals(name) && !attributes
+ .contains(RESERVED_PREFIX
+ + CombinedConfigurationBuilder.ATTR_ATNAME))
+ || (CombinedConfigurationBuilder.ATTR_OPTIONALNAME.equals(name) && !attributes
+ .contains(RESERVED_PREFIX
+ + CombinedConfigurationBuilder.ATTR_OPTIONALNAME));
+ }
}
Modified: commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/builder/combined/TestConfigurationDeclaration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/builder/combined/TestConfigurationDeclaration.java?rev=1588679&r1=1588678&r2=1588679&view=diff
==============================================================================
--- commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/builder/combined/TestConfigurationDeclaration.java (original)
+++ commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/builder/combined/TestConfigurationDeclaration.java Sat Apr 19 17:58:45 2014
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertTru
import org.apache.commons.configuration.BaseHierarchicalConfiguration;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.configuration.ex.ConfigurationRuntimeException;
-import org.apache.commons.configuration.tree.DefaultConfigurationNode;
import org.junit.Test;
/**
@@ -42,9 +41,9 @@ public class TestConfigurationDeclaratio
* @return the test object
*/
private static ConfigurationDeclaration createDeclaration(
- HierarchicalConfiguration conf)
+ HierarchicalConfiguration<?> conf)
{
- HierarchicalConfiguration config =
+ HierarchicalConfiguration<?> config =
(conf != null) ? conf : new BaseHierarchicalConfiguration();
return new ConfigurationDeclaration(null, config);
}
@@ -56,23 +55,11 @@ public class TestConfigurationDeclaratio
public void testConfigurationDeclarationIsReserved()
{
ConfigurationDeclaration decl = createDeclaration(null);
- DefaultConfigurationNode parent = new DefaultConfigurationNode();
- DefaultConfigurationNode nd = new DefaultConfigurationNode("at");
- parent.addAttribute(nd);
- assertTrue("Attribute at not recognized", decl.isReservedNode(nd));
- nd = new DefaultConfigurationNode("optional");
- parent.addAttribute(nd);
- assertTrue("Attribute optional not recognized", decl.isReservedNode(nd));
- nd = new DefaultConfigurationNode("config-class");
- parent.addAttribute(nd);
+ assertTrue("Attribute at not recognized", decl.isReservedAttributeName("at"));
+ assertTrue("Attribute optional not recognized", decl.isReservedAttributeName("optional"));
assertTrue("Inherited attribute not recognized",
- decl.isReservedNode(nd));
- nd = new DefaultConfigurationNode("different");
- parent.addAttribute(nd);
- assertFalse("Wrong reserved attribute", decl.isReservedNode(nd));
- nd = new DefaultConfigurationNode("at");
- parent.addChild(nd);
- assertFalse("Node type not evaluated", decl.isReservedNode(nd));
+ decl.isReservedAttributeName("config-class"));
+ assertFalse("Wrong reserved attribute", decl.isReservedAttributeName("different"));
}
/**
@@ -104,19 +91,17 @@ public class TestConfigurationDeclaratio
*/
private void checkOldReservedAttribute(String name)
{
- ConfigurationDeclaration decl = createDeclaration(null);
- DefaultConfigurationNode parent = new DefaultConfigurationNode();
- DefaultConfigurationNode nd =
- new DefaultConfigurationNode("config-" + name);
- parent.addAttribute(nd);
- assertTrue("config-" + name + " attribute not recognized",
- decl.isReservedNode(nd));
- DefaultConfigurationNode nd2 = new DefaultConfigurationNode(name);
- parent.addAttribute(nd2);
+ String prefixName = "config-" + name;
+ BaseHierarchicalConfiguration config = new BaseHierarchicalConfiguration();
+ config.addProperty(String.format("[@%s]", prefixName), Boolean.TRUE);
+ ConfigurationDeclaration decl = createDeclaration(config);
+ assertTrue(prefixName + " attribute not recognized",
+ decl.isReservedAttributeName(prefixName));
+ config.addProperty(String.format("[@%s]", name), Boolean.TRUE);
assertFalse(name + " is reserved though config- exists",
- decl.isReservedNode(nd2));
+ decl.isReservedAttributeName(name));
assertTrue("config- attribute not recognized when " + name + " exists",
- decl.isReservedNode(nd));
+ decl.isReservedAttributeName(prefixName));
}
/**
@@ -126,26 +111,32 @@ public class TestConfigurationDeclaratio
@Test
public void testConfigurationDeclarationGetAttributes()
{
- HierarchicalConfiguration config = new BaseHierarchicalConfiguration();
+ HierarchicalConfiguration<?> config = new BaseHierarchicalConfiguration();
config.addProperty("xml.fileName", "test.xml");
ConfigurationDeclaration decl =
createDeclaration(config.configurationAt("xml"));
assertNull("Found an at attribute", decl.getAt());
assertFalse("Found an optional attribute", decl.isOptional());
config.addProperty("xml[@config-at]", "test1");
+ decl = createDeclaration(config.configurationAt("xml"));
assertEquals("Wrong value of at attribute", "test1", decl.getAt());
config.addProperty("xml[@at]", "test2");
+ decl = createDeclaration(config.configurationAt("xml"));
assertEquals("Wrong value of config-at attribute", "test1",
decl.getAt());
config.clearProperty("xml[@config-at]");
+ decl = createDeclaration(config.configurationAt("xml"));
assertEquals("Old at attribute not detected", "test2", decl.getAt());
config.addProperty("xml[@config-optional]", "true");
+ decl = createDeclaration(config.configurationAt("xml"));
assertTrue("Wrong value of optional attribute", decl.isOptional());
config.addProperty("xml[@optional]", "false");
+ decl = createDeclaration(config.configurationAt("xml"));
assertTrue("Wrong value of config-optional attribute",
decl.isOptional());
config.clearProperty("xml[@config-optional]");
config.setProperty("xml[@optional]", Boolean.TRUE);
+ decl = createDeclaration(config.configurationAt("xml"));
assertTrue("Old optional attribute not detected", decl.isOptional());
}
@@ -155,11 +146,11 @@ public class TestConfigurationDeclaratio
@Test(expected = ConfigurationRuntimeException.class)
public void testConfigurationDeclarationOptionalAttributeInvalid()
{
- HierarchicalConfiguration factory = new BaseHierarchicalConfiguration();
+ HierarchicalConfiguration<?> factory = new BaseHierarchicalConfiguration();
factory.addProperty("xml.fileName", "test.xml");
+ factory.setProperty("xml[@optional]", "invalid value");
ConfigurationDeclaration decl =
createDeclaration(factory.configurationAt("xml"));
- factory.setProperty("xml[@optional]", "invalid value");
decl.isOptional();
}
}