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 2013/05/05 22:21:20 UTC

svn commit: r1479374 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration/ main/java/org/apache/commons/configuration/web/ test/java/org/apache/commons/configuration/

Author: oheger
Date: Sun May  5 20:21:20 2013
New Revision: 1479374

URL: http://svn.apache.org/r1479374
Log:
Added final containsKey() method in AbstractConfiguration.

A protected abstract containsKeyInternal() was added, too, which has to be
defined by concrete subclasses.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/CompositeConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DataConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DatabaseConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DynamicCombinedConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/JNDIConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PatternSubtreeConfigurationWrapper.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/SubsetConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/web/BaseWebConfiguration.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/NonCloneableConfiguration.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationBasicFeatures.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationSynchronization.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractConfiguration.java Sun May  5 20:21:20 2013
@@ -956,6 +956,35 @@ public abstract class AbstractConfigurat
      */
     protected abstract boolean isEmptyInternal();
 
+    /**
+     * {@inheritDoc} This implementation handles synchronization and delegates
+     * to {@code containsKeyInternal()}.
+     */
+    public final boolean containsKey(String key)
+    {
+        getSynchronizer().beginRead();
+        try
+        {
+            return containsKeyInternal(key);
+        }
+        finally
+        {
+            getSynchronizer().endRead();
+        }
+    }
+
+    /**
+     * Actually checks whether the specified key is contained in this
+     * configuration. This method is called by {@code containsKey()}. It has to
+     * be defined by concrete subclasses.
+     *
+     * @param key the key in question
+     * @return <b>true</b> if this key is contained in this configuration,
+     *         <b>false</b> otherwise
+     * @since 2.0
+     */
+    protected abstract boolean containsKeyInternal(String key);
+
     public Properties getProperties(String key)
     {
         return getProperties(key, null);

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseConfiguration.java Sun May  5 20:21:20 2013
@@ -120,7 +120,8 @@ public class BaseConfiguration extends A
      * @return {@code true} if Configuration contain given key,
      * {@code false} otherwise.
      */
-    public boolean containsKey(String key)
+    @Override
+    protected boolean containsKeyInternal(String key)
     {
         return store.containsKey(key);
     }
@@ -133,10 +134,7 @@ public class BaseConfiguration extends A
     @Override
     protected void clearPropertyDirect(String key)
     {
-        if (containsKey(key))
-        {
-            store.remove(key);
-        }
+        store.remove(key);
     }
 
     @Override

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java Sun May  5 20:21:20 2013
@@ -751,12 +751,13 @@ public class BaseHierarchicalConfigurati
      * value but children (either defined or undefined), this method will still
      * return <b>false </b>.
      *
-     * @param key the key to be chekced
+     * @param key the key to be checked
      * @return a flag if this key is contained in this configuration
      */
-    public boolean containsKey(String key)
+    @Override
+    protected boolean containsKeyInternal(String key)
     {
-        return getProperty(key) != null;
+        return getPropertyInternal(key) != null;
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/CompositeConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/CompositeConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/CompositeConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/CompositeConfiguration.java Sun May  5 20:21:20 2013
@@ -329,7 +329,8 @@ implements Cloneable
         }
     }
 
-    public boolean containsKey(String key)
+    @Override
+    protected boolean containsKeyInternal(String key)
     {
         for (Configuration config : configList)
         {

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DataConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DataConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DataConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DataConfiguration.java Sun May  5 20:21:20 2013
@@ -154,7 +154,8 @@ public class DataConfiguration extends A
         return configuration.isEmpty();
     }
 
-    public boolean containsKey(String key)
+    @Override
+    protected boolean containsKeyInternal(String key)
     {
         return configuration.containsKey(key);
     }

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DatabaseConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DatabaseConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DatabaseConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DatabaseConfiguration.java Sun May  5 20:21:20 2013
@@ -468,7 +468,8 @@ public class DatabaseConfiguration exten
      * @param key the key to be checked
      * @return a flag whether this key is defined
      */
-    public boolean containsKey(final String key)
+    @Override
+    protected boolean containsKeyInternal(final String key)
     {
         JdbcOperation<Boolean> op = new JdbcOperation<Boolean>(EVENT_READ_PROPERTY, key, null)
         {

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DynamicCombinedConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DynamicCombinedConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DynamicCombinedConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DynamicCombinedConfiguration.java Sun May  5 20:21:20 2013
@@ -351,7 +351,7 @@ public class DynamicCombinedConfiguratio
     }
 
     @Override
-    public boolean containsKey(String key)
+    protected boolean containsKeyInternal(String key)
     {
         return this.getCurrentConfig().containsKey(key);
     }

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/JNDIConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/JNDIConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/JNDIConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/JNDIConfiguration.java Sun May  5 20:21:20 2013
@@ -345,7 +345,8 @@ public class JNDIConfiguration extends A
      * @param key the key to check
      * @return a flag whether this key is stored in this configuration
      */
-    public boolean containsKey(String key)
+    @Override
+    protected boolean containsKeyInternal(String key)
     {
         if (clearedProperties.contains(key))
         {

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/MapConfiguration.java Sun May  5 20:21:20 2013
@@ -207,7 +207,8 @@ public class MapConfiguration extends Ab
         return map.isEmpty();
     }
 
-    public boolean containsKey(String key)
+    @Override
+    protected boolean containsKeyInternal(String key)
     {
         return map.containsKey(key);
     }

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PatternSubtreeConfigurationWrapper.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PatternSubtreeConfigurationWrapper.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PatternSubtreeConfigurationWrapper.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/PatternSubtreeConfigurationWrapper.java Sun May  5 20:21:20 2013
@@ -101,7 +101,7 @@ public class PatternSubtreeConfiguration
     }
 
     @Override
-    public boolean containsKey(String key)
+    protected boolean containsKeyInternal(String key)
     {
         return config.containsKey(makePath(key));
     }

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/SubsetConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/SubsetConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/SubsetConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/SubsetConfiguration.java Sun May  5 20:21:20 2013
@@ -166,7 +166,8 @@ public class SubsetConfiguration extends
         return !getKeysInternal().hasNext();
     }
 
-    public boolean containsKey(String key)
+    @Override
+    protected boolean containsKeyInternal(String key)
     {
         return parent.containsKey(getParentKey(key));
     }

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/web/BaseWebConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/web/BaseWebConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/web/BaseWebConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/web/BaseWebConfiguration.java Sun May  5 20:21:20 2013
@@ -58,9 +58,10 @@ abstract class BaseWebConfiguration exte
      * @param key the key
      * @return a flag whether this key exists in this configuration
      */
-    public boolean containsKey(String key)
+    @Override
+    protected boolean containsKeyInternal(String key)
     {
-        return getProperty(key) != null;
+        return getPropertyInternal(key) != null;
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/NonCloneableConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/NonCloneableConfiguration.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/NonCloneableConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/NonCloneableConfiguration.java Sun May  5 20:21:20 2013
@@ -48,7 +48,8 @@ public class NonCloneableConfiguration e
     /**
      * Dummy implementation of this method.
      */
-    public boolean containsKey(String key)
+    @Override
+    protected boolean containsKeyInternal(String key)
     {
         return false;
     }

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationBasicFeatures.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationBasicFeatures.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationBasicFeatures.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationBasicFeatures.java Sun May  5 20:21:20 2013
@@ -609,7 +609,8 @@ public class TestAbstractConfigurationBa
             config.addPropertyDirect(key, value);
         }
 
-        public boolean containsKey(String key)
+        @Override
+        protected boolean containsKeyInternal(String key)
         {
             return config.containsKey(key);
         }

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationSynchronization.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationSynchronization.java?rev=1479374&r1=1479373&r2=1479374&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationSynchronization.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestAbstractConfigurationSynchronization.java Sun May  5 20:21:20 2013
@@ -23,7 +23,6 @@ import static org.junit.Assert.assertTru
 
 import org.apache.commons.configuration.io.FileHandler;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -124,8 +123,6 @@ public class TestAbstractConfigurationSy
      * Tests whether containsKey() is correctly synchronized.
      */
     @Test
-    @Ignore
-    // TODO prevent subclasses from overriding containsKey()
     public void testContainsKeySychronized()
     {
         assertTrue("Wrong result", config.containsKey(PROP));