Author: kwin
Date: Mon Jun  8 11:24:47 2015
New Revision: 1684151

URL: http://svn.apache.org/r1684151
Log:
SLING-4784 implement equals and hashCode for ValueMapDecorator

Modified:
    
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java
    
sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java

Modified: 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java?rev=1684151&r1=1684150&r2=1684151&view=diff
==============================================================================
--- 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java
 (original)
+++ 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/ValueMapDecorator.java
 Mon Jun  8 11:24:47 2015
@@ -221,4 +221,22 @@ public class ValueMapDecorator implement
     public String toString() {
         return super.toString() + " : " + this.base.toString();
     }
+
+    @Override
+    /**
+     * {@inheritDoc}
+     */
+    public int hashCode() {
+        return base.hashCode();
+    }
+
+    @Override
+    /**
+     * {@inheritDoc}
+     */
+    public boolean equals(Object obj) {
+        return base.equals(obj);
+    }
+    
+    
 }
\ No newline at end of file

Modified: 
sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java?rev=1684151&r1=1684150&r2=1684151&view=diff
==============================================================================
--- 
sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java
 (original)
+++ 
sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/ValueMapDecoratorTest.java
 Mon Jun  8 11:24:47 2015
@@ -86,5 +86,55 @@ public class ValueMapDecoratorTest {
                Assert.assertNull("ValueMap should not support conversion to 
array of primitive type", valueMap.get("prop1", int[].class));
        }
        
+       @Test 
+       public void testEqualsAndHashCodeOfEqualValueMapsWithNonArrayTypes() {
+               map.put("prop1", "some string");
+                ValueMapDecorator valueMap2 = new ValueMapDecorator(map);
+                Assert.assertTrue("Two ValueMapDecorators based on the same 
map should be equal", valueMap.equals(valueMap2));
+                Assert.assertEquals("Two equal ValueMapDecorators should have 
the same hash code", valueMap.hashCode(), valueMap2.hashCode());
+                
+                ValueMapDecorator valueMap3 = new ValueMapDecorator(new 
HashMap<String, Object>());
+                valueMap3.put("prop1", "some string");
+                Assert.assertEquals(valueMap, valueMap3);
+                Assert.assertEquals("Two equal ValueMapDecorators should have 
the same hash code", valueMap.hashCode(), valueMap3.hashCode());
+                
+                Assert.assertEquals(map, valueMap);
+                Assert.assertEquals(valueMap, map);
+       }
+       
+       @Ignore("SLING-4784")
+       @Test
+        public void testEqualsAndHashCodeOfEqualValueMapsWithArrayTypes() {
+                map.put("prop1", new String[] {"1", "2"});
+                ValueMapDecorator valueMap2 = new ValueMapDecorator(map);
+                Assert.assertTrue("Two ValueMapDecorators based on the same 
map should be equal", valueMap.equals(valueMap2));
+                Assert.assertEquals("Two equal ValueMapDecorators should have 
the same hash code", valueMap.hashCode(), valueMap2.hashCode());
+                
+                ValueMapDecorator valueMap3 = new ValueMapDecorator(new 
HashMap<String, Object>());
+                valueMap3.put("prop1", new String[] {"1", "2"});
+                Assert.assertEquals(valueMap, valueMap3);
+                Assert.assertEquals("Two equal ValueMapDecorators should have 
the same hash code", valueMap.hashCode(), valueMap3.hashCode());
+        }
+       
+       @Test 
+        public void testEqualsOfInequalValueMapsWithNonArrayTypes() {
+                valueMap.put("prop", "value");
+                ValueMapDecorator valueMap2 = new ValueMapDecorator(new 
HashMap<String, Object>());
+                valueMap2.put("prop", "value2");
+                Assert.assertFalse("Two ValueMapDecorators based on maps with 
different entries should not be equal", valueMap.equals(valueMap2));
+                
+        }
+       
+       @Test 
+        public void testEqualsOfInequalValueMapsWithArrayTypes() {
+                valueMap.put("prop", new String[] {"1", "2"});
+                ValueMapDecorator valueMap2 = new ValueMapDecorator(new 
HashMap<String, Object>());
+                valueMap2.put("prop", new String[] {"3", "4"});
+                Assert.assertFalse("Two ValueMapDecorators based on maps with 
different entries should not be equal", valueMap.equals(valueMap2));
+        }
        
+       @Test 
+        public void testEqualsOfValueMapAndUnderlyingMap() {
+                
+        }
 }


Reply via email to