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 2012/09/20 21:52:45 UTC

svn commit: r1388185 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration/tree/DefaultConfigurationKey.java test/java/org/apache/commons/configuration/tree/TestDefaultConfigurationKey.java

Author: oheger
Date: Thu Sep 20 19:52:44 2012
New Revision: 1388185

URL: http://svn.apache.org/viewvc?rev=1388185&view=rev
Log:
Some improvements of DefaultConfigurationKey:
- Made fields final.
- Made equals() implementation comply to the general contract of equals().

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/tree/DefaultConfigurationKey.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/tree/TestDefaultConfigurationKey.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/tree/DefaultConfigurationKey.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/tree/DefaultConfigurationKey.java?rev=1388185&r1=1388184&r2=1388185&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/tree/DefaultConfigurationKey.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/tree/DefaultConfigurationKey.java Thu Sep 20 19:52:44 2012
@@ -57,34 +57,47 @@ public class DefaultConfigurationKey
     private static final int INITIAL_SIZE = 32;
 
     /** Stores a reference to the associated expression engine. */
-    private DefaultExpressionEngine expressionEngine;
+    private final DefaultExpressionEngine expressionEngine;
 
     /** Holds a buffer with the so far created key. */
-    private StringBuilder keyBuffer;
+    private final StringBuilder keyBuffer;
 
     /**
      * Creates a new instance of {@code DefaultConfigurationKey} and sets
      * the associated expression engine.
      *
-     * @param engine the expression engine
+     * @param engine the expression engine (must not be <b>null</b>)
+     * @throws IllegalArgumentException if the expression engine is <b>null</b>
      */
     public DefaultConfigurationKey(DefaultExpressionEngine engine)
     {
-        keyBuffer = new StringBuilder(INITIAL_SIZE);
-        setExpressionEngine(engine);
+        this(engine, null);
     }
 
     /**
-     * Creates a new instance of {@code DefaultConfigurationKey} and sets
-     * the associated expression engine and an initial key.
+     * Creates a new instance of {@code DefaultConfigurationKey} and sets the
+     * associated expression engine and an initial key.
      *
-     * @param engine the expression engine
+     * @param engine the expression engine (must not be <b>null</b>)
      * @param key the key to be wrapped
+     * @throws IllegalArgumentException if the expression engine is <b>null</b>
      */
     public DefaultConfigurationKey(DefaultExpressionEngine engine, String key)
     {
-        setExpressionEngine(engine);
-        keyBuffer = new StringBuilder(trim(key));
+        if (engine == null)
+        {
+            throw new IllegalArgumentException(
+                    "Expression engine must not be null!");
+        }
+        expressionEngine = engine;
+        if (key != null)
+        {
+            keyBuffer = new StringBuilder(trim(key));
+        }
+        else
+        {
+            keyBuffer = new StringBuilder(INITIAL_SIZE);
+        }
     }
 
     /**
@@ -98,21 +111,6 @@ public class DefaultConfigurationKey
     }
 
     /**
-     * Sets the associated expression engine.
-     *
-     * @param expressionEngine the expression engine (must not be <b>null</b>)
-     */
-    public void setExpressionEngine(DefaultExpressionEngine expressionEngine)
-    {
-        if (expressionEngine == null)
-        {
-            throw new IllegalArgumentException(
-                    "Expression engine must not be null!");
-        }
-        this.expressionEngine = expressionEngine;
-    }
-
-    /**
      * Appends the name of a property to this key. If necessary, a property
      * delimiter will be added. If the boolean argument is set to <b>true</b>,
      * property delimiters contained in the property name will be escaped.
@@ -280,20 +278,27 @@ public class DefaultConfigurationKey
     }
 
     /**
-     * Checks if two {@code ConfigurationKey} objects are equal. The
-     * method can be called with strings or other objects, too.
+     * Checks if two {@code ConfigurationKey} objects are equal. Two instances
+     * of this class are considered equal if they have the same content (i.e.
+     * their internal string representation is equal). The expression engine
+     * property is not taken into account.
      *
-     * @param c the object to compare
+     * @param obj the object to compare
      * @return a flag if both objects are equal
      */
     @Override
-    public boolean equals(Object c)
+    public boolean equals(Object obj)
     {
-        if (c == null)
+        if (this == obj)
+        {
+            return true;
+        }
+        if (!(obj instanceof DefaultConfigurationKey))
         {
             return false;
         }
 
+        DefaultConfigurationKey c = (DefaultConfigurationKey) obj;
         return keyBuffer.toString().equals(c.toString());
     }
 

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/tree/TestDefaultConfigurationKey.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/tree/TestDefaultConfigurationKey.java?rev=1388185&r1=1388184&r2=1388185&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/tree/TestDefaultConfigurationKey.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/tree/TestDefaultConfigurationKey.java Thu Sep 20 19:52:44 2012
@@ -74,7 +74,7 @@ public class TestDefaultConfigurationKey
     @Test(expected = IllegalArgumentException.class)
     public void testSetNullExpressionEngine()
     {
-        key.setExpressionEngine(null);
+        new DefaultConfigurationKey(null);
     }
 
     /**
@@ -304,15 +304,16 @@ public class TestDefaultConfigurationKey
     public void testEquals()
     {
         DefaultConfigurationKey k1 = key(TESTKEY);
+        assertTrue("Key not equal to itself", k1.equals(k1));
         DefaultConfigurationKey k2 = key(TESTKEY);
         assertTrue("Keys are not equal", k1.equals(k2));
         assertTrue("Not reflexiv", k2.equals(k1));
         assertEquals("Hash codes not equal", k1.hashCode(), k2.hashCode());
         k2.append("anotherPart");
         assertFalse("Keys considered equal", k1.equals(k2));
-        assertFalse("Keys considered equal", k2.equals(k1));
+        assertFalse("Keys considered equal (2)", k2.equals(k1));
         assertFalse("Key equals null key", k1.equals(null));
-        assertTrue("Faild comparison with string", k1.equals(TESTKEY));
+        assertFalse("Equal with string", k1.equals(TESTKEY));
     }
 
     /**