You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2011/09/16 02:42:59 UTC

svn commit: r1171344 - /sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java

Author: justin
Date: Fri Sep 16 00:42:59 2011
New Revision: 1171344

URL: http://svn.apache.org/viewvc?rev=1171344&view=rev
Log:
SLING-2221 - making Java 5 compatible (boo hiss)

Modified:
    sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java

Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java?rev=1171344&r1=1171343&r2=1171344&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java Fri Sep 16 00:42:59 2011
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
 import java.lang.reflect.Array;
-import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collection;
@@ -210,7 +209,7 @@ public class JcrPropertyMap
             Set<Map.Entry<String, Object>> result = new LinkedHashSet<Map.Entry<String, Object>>(cache.size());
             for (Map.Entry<String, JcrPropertyMapCacheEntry> entry : cache.entrySet()) {
                 try {
-                    Map.Entry<String, Object> newEntry = new AbstractMap.SimpleEntry<String, Object>(entry.getKey(), entry.getValue().getDefaultValue());
+                    Map.Entry<String, Object> newEntry = new SimpleImmutableEntry<String, Object>(entry.getKey(), entry.getValue().getDefaultValue());
                     result.add(newEntry);
                 } catch (RepositoryException e) {
                     
@@ -516,4 +515,85 @@ public class JcrPropertyMap
             return super.resolveClass(classDesc);
         }
     }
+    
+    /**
+     * Adapted from edu.emory.mathcs.backport.java.util.AbstractMap.SimpleImmutableEntry
+     * which is public domain
+     */
+    private static class SimpleImmutableEntry<K,V> implements Entry<K, V> {
+        private final K key;
+        private final V value;
+
+        /**
+         * Creates an entry representing a mapping from the specified
+         * key to the specified value.
+         *
+         * @param key the key represented by this entry
+         * @param value the value represented by this entry
+         */
+        public SimpleImmutableEntry(K key, V value) {
+            this.key   = key;
+            this.value = value;
+        }
+
+        /**
+         * Returns the key corresponding to this entry.
+         *
+         * @return the key corresponding to this entry
+         */
+        public K getKey() {
+            return key;
+        }
+
+        /**
+         * Returns the value corresponding to this entry.
+         *
+         * @return the value corresponding to this entry
+         */
+        public V getValue() {
+            return value;
+        }
+
+        /**
+         * Replaces the value corresponding to this entry with the specified
+         * value (optional operation).  This implementation simply throws
+         * <tt>UnsupportedOperationException</tt>, as this class implements
+         * an <i>immutable</i> map entry.
+         *
+         * @param value new value to be stored in this entry
+         * @return (Does not return)
+         * @throws UnsupportedOperationException always
+         */
+        public V setValue(V value) {
+            throw new UnsupportedOperationException();
+        }
+
+        public boolean equals(Object o) {
+            if (!(o instanceof Map.Entry))
+                return false;
+            Map.Entry<?,?> e = (Map.Entry<?,?>)o;
+            return eq(key, e.getKey()) && eq(value, e.getValue());
+        }
+
+        public int hashCode() {
+            return ((key   == null) ? 0 :   key.hashCode()) ^
+                   ((value == null) ? 0 : value.hashCode());
+        }
+
+        /**
+         * Returns a String representation of this map entry.  This
+         * implementation returns the string representation of this
+         * entry's key followed by the equals character ("<tt>=</tt>")
+         * followed by the string representation of this entry's value.
+         *
+         * @return a String representation of this map entry
+         */
+        public String toString() {
+            return key + "=" + value;
+        }
+
+        private static boolean eq(Object o1, Object o2) {
+            return (o1 == null ? o2 == null : o1.equals(o2));
+        }
+    }
 }