Author: scolebourne
Date: Sat Nov  4 05:27:44 2006
New Revision: 471180

URL: http://svn.apache.org/viewvc?view=rev&rev=471180
Log:
Abstract*Decorator - Generify and use covariant return types

Modified:
    
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.java
    
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.java
    
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.java
    
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractMapDecorator.java
    
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractOrderedMapDecorator.java
    
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractSortedMapDecorator.java

Modified: 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.java?view=diff&rev=471180&r1=471179&r2=471180
==============================================================================
--- 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.java
 (original)
+++ 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.java
 Sat Nov  4 05:27:44 2006
@@ -38,8 +38,9 @@
  * @author Stephen Colebourne
  */
 public abstract class AbstractBidiMapDecorator
-        extends AbstractMapDecorator implements BidiMap {
-    
+        extends AbstractMapDecorator
+        implements BidiMap {
+
     /**
      * Constructor that wraps (not copies).
      *
@@ -54,26 +55,36 @@
      * Gets the map being decorated.
      * 
      * @return the decorated map
+     * @deprecated use decorated()
      */
     protected BidiMap getBidiMap() {
-        return (BidiMap) map;
+        return decorated();
+    }
+
+    /**
+     * Gets the map being decorated.
+     * 
+     * @return the decorated map
+     */
+    protected BidiMap decorated() {
+        return (BidiMap) super.decorated();
     }
 
     //-----------------------------------------------------------------------
     public MapIterator mapIterator() {
-        return getBidiMap().mapIterator();
+        return decorated().mapIterator();
     }
 
     public Object getKey(Object value) {
-        return getBidiMap().getKey(value);
+        return decorated().getKey(value);
     }
 
     public Object removeValue(Object value) {
-        return getBidiMap().removeValue(value);
+        return decorated().removeValue(value);
     }
 
     public BidiMap inverseBidiMap() {
-        return getBidiMap().inverseBidiMap();
+        return decorated().inverseBidiMap();
     }
 
 }

Modified: 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.java?view=diff&rev=471180&r1=471179&r2=471180
==============================================================================
--- 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.java
 (original)
+++ 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.java
 Sat Nov  4 05:27:44 2006
@@ -37,8 +37,9 @@
  * @author Stephen Colebourne
  */
 public abstract class AbstractOrderedBidiMapDecorator
-        extends AbstractBidiMapDecorator implements OrderedBidiMap {
-    
+        extends AbstractBidiMapDecorator
+        implements OrderedBidiMap {
+
     /**
      * Constructor that wraps (not copies).
      *
@@ -53,34 +54,44 @@
      * Gets the map being decorated.
      * 
      * @return the decorated map
+     * @deprecated use decorated()
      */
     protected OrderedBidiMap getOrderedBidiMap() {
-        return (OrderedBidiMap) map;
+        return decorated();
+    }
+
+    /**
+     * Gets the map being decorated.
+     * 
+     * @return the decorated map
+     */
+    protected OrderedBidiMap decorated() {
+        return (OrderedBidiMap) super.decorated();
     }
 
     //-----------------------------------------------------------------------
     public OrderedMapIterator orderedMapIterator() {
-        return getOrderedBidiMap().orderedMapIterator();
+        return decorated().orderedMapIterator();
     }
 
     public Object firstKey() {
-        return getOrderedBidiMap().firstKey();
+        return decorated().firstKey();
     }
 
     public Object lastKey() {
-        return getOrderedBidiMap().lastKey();
+        return decorated().lastKey();
     }
 
     public Object nextKey(Object key) {
-        return getOrderedBidiMap().nextKey(key);
+        return decorated().nextKey(key);
     }
 
     public Object previousKey(Object key) {
-        return getOrderedBidiMap().previousKey(key);
+        return decorated().previousKey(key);
     }
 
     public OrderedBidiMap inverseOrderedBidiMap() {
-        return getOrderedBidiMap().inverseOrderedBidiMap();
+        return decorated().inverseOrderedBidiMap();
     }
 
 }

Modified: 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.java?view=diff&rev=471180&r1=471179&r2=471180
==============================================================================
--- 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.java
 (original)
+++ 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.java
 Sat Nov  4 05:27:44 2006
@@ -39,8 +39,9 @@
  * @author Stephen Colebourne
  */
 public abstract class AbstractSortedBidiMapDecorator
-        extends AbstractOrderedBidiMapDecorator implements SortedBidiMap {
-    
+        extends AbstractOrderedBidiMapDecorator
+        implements SortedBidiMap {
+
     /**
      * Constructor that wraps (not copies).
      *
@@ -55,9 +56,19 @@
      * Gets the map being decorated.
      * 
      * @return the decorated map
+     * @deprecated use decorated()
      */
     protected SortedBidiMap getSortedBidiMap() {
-        return (SortedBidiMap) map;
+        return decorated();
+    }
+
+    /**
+     * Gets the map being decorated.
+     * 
+     * @return the decorated map
+     */
+    protected SortedBidiMap decorated() {
+        return (SortedBidiMap) super.decorated();
     }
 
     //-----------------------------------------------------------------------
@@ -66,19 +77,19 @@
     }
 
     public Comparator comparator() {
-        return getSortedBidiMap().comparator();
+        return decorated().comparator();
     }
 
     public SortedMap subMap(Object fromKey, Object toKey) {
-        return getSortedBidiMap().subMap(fromKey, toKey);
+        return decorated().subMap(fromKey, toKey);
     }
 
     public SortedMap headMap(Object toKey) {
-        return getSortedBidiMap().headMap(toKey);
+        return decorated().headMap(toKey);
     }
 
     public SortedMap tailMap(Object fromKey) {
-        return getSortedBidiMap().tailMap(fromKey);
+        return decorated().tailMap(fromKey);
     }
 
 }

Modified: 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractMapDecorator.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractMapDecorator.java?view=diff&rev=471180&r1=471179&r2=471180
==============================================================================
--- 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractMapDecorator.java
 (original)
+++ 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractMapDecorator.java
 Sat Nov  4 05:27:44 2006
@@ -33,16 +33,18 @@
  * implementation it would provide a loophole around the validation.
  * But, you might want that loophole, so this class is kept simple.
  *
+ * @param <K> the type of the keys in the map
+ * @param <V> the type of the values in the map
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
  * 
  * @author Daniel Rall
  * @author Stephen Colebourne
  */
-public abstract class AbstractMapDecorator implements Map {
+public abstract class AbstractMapDecorator<K, V> implements Map<K, V> {
 
     /** The map to decorate */
-    protected transient Map map;
+    protected transient Map<K, V> map;
 
     /**
      * Constructor only used in deserialization, do not use otherwise.
@@ -58,7 +60,7 @@
      * @param map  the map to decorate, must not be null
      * @throws IllegalArgumentException if the collection is null
      */
-    public AbstractMapDecorator(Map map) {
+    protected AbstractMapDecorator(Map<K, V> map) {
         if (map == null) {
             throw new IllegalArgumentException("Map must not be null");
         }
@@ -69,73 +71,83 @@
      * Gets the map being decorated.
      * 
      * @return the decorated map
+     * @deprecated use decorated()
      */
-    protected Map getMap() {
+    protected Map<K, V> getMap() {
+        return decorated();
+    }
+
+    /**
+     * Gets the map being decorated.
+     * 
+     * @return the decorated map
+     */
+    protected Map<K, V> decorated() {
         return map;
     }
 
     //-----------------------------------------------------------------------
     public void clear() {
-        map.clear();
+        decorated().clear();
     }
 
     public boolean containsKey(Object key) {
-        return map.containsKey(key);
+        return decorated().containsKey(key);
     }
 
     public boolean containsValue(Object value) {
-        return map.containsValue(value);
+        return decorated().containsValue(value);
     }
 
-    public Set entrySet() {
-        return map.entrySet();
+    public Set<Map.Entry<K, V>> entrySet() {
+        return decorated().entrySet();
     }
 
-    public Object get(Object key) {
-        return map.get(key);
+    public V get(Object key) {
+        return decorated().get(key);
     }
 
     public boolean isEmpty() {
-        return map.isEmpty();
+        return decorated().isEmpty();
     }
 
-    public Set keySet() {
-        return map.keySet();
+    public Set<K> keySet() {
+        return decorated().keySet();
     }
 
-    public Object put(Object key, Object value) {
-        return map.put(key, value);
+    public V put(K key, V value) {
+        return decorated().put(key, value);
     }
 
-    public void putAll(Map mapToCopy) {
-        map.putAll(mapToCopy);
+    public void putAll(Map<? extends K, ? extends V> mapToCopy) {
+        decorated().putAll(mapToCopy);
     }
 
-    public Object remove(Object key) {
-        return map.remove(key);
+    public V remove(Object key) {
+        return decorated().remove(key);
     }
 
     public int size() {
-        return map.size();
+        return decorated().size();
     }
 
-    public Collection values() {
-        return map.values();
+    public Collection<V> values() {
+        return decorated().values();
     }
    
     public boolean equals(Object object) {
         if (object == this) {
             return true;
         }
-        return map.equals(object);
+        return decorated().equals(object);
     }
 
     public int hashCode() {
-        return map.hashCode();
+        return decorated().hashCode();
     }
 
     public String toString() {
-        return map.toString();
+        return decorated().toString();
     }
 
 }

Modified: 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractOrderedMapDecorator.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractOrderedMapDecorator.java?view=diff&rev=471180&r1=471179&r2=471180
==============================================================================
--- 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractOrderedMapDecorator.java
 (original)
+++ 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractOrderedMapDecorator.java
 Sat Nov  4 05:27:44 2006
@@ -16,6 +16,8 @@
  */
 package org.apache.commons.collections.map;
 
+import java.util.Map;
+
 import org.apache.commons.collections.MapIterator;
 import org.apache.commons.collections.OrderedMap;
 import org.apache.commons.collections.OrderedMapIterator;
@@ -38,7 +40,8 @@
  * @author Stephen Colebourne
  */
 public abstract class AbstractOrderedMapDecorator
-        extends AbstractMapDecorator implements OrderedMap {
+        extends AbstractMapDecorator
+        implements OrderedMap {
 
     /**
      * Constructor only used in deserialization, do not use otherwise.
@@ -62,34 +65,44 @@
      * Gets the map being decorated.
      * 
      * @return the decorated map
+     * @deprecated use decorated()
      */
     protected OrderedMap getOrderedMap() {
-        return (OrderedMap) map;
+        return decorated();
+    }
+
+    /**
+     * Gets the map being decorated.
+     * 
+     * @return the decorated map
+     */
+    protected OrderedMap decorated() {
+        return (OrderedMap) super.decorated();
     }
 
     //-----------------------------------------------------------------------
     public Object firstKey() {
-        return getOrderedMap().firstKey();
+        return decorated().firstKey();
     }
 
     public Object lastKey() {
-        return getOrderedMap().lastKey();
+        return decorated().lastKey();
     }
 
     public Object nextKey(Object key) {
-        return getOrderedMap().nextKey(key);
+        return decorated().nextKey(key);
     }
 
     public Object previousKey(Object key) {
-        return getOrderedMap().previousKey(key);
+        return decorated().previousKey(key);
     }
 
     public MapIterator mapIterator() {
-        return getOrderedMap().mapIterator();
+        return decorated().mapIterator();
     }
 
     public OrderedMapIterator orderedMapIterator() {
-        return getOrderedMap().orderedMapIterator();
+        return decorated().orderedMapIterator();
     }
 
 }

Modified: 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractSortedMapDecorator.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractSortedMapDecorator.java?view=diff&rev=471180&r1=471179&r2=471180
==============================================================================
--- 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractSortedMapDecorator.java
 (original)
+++ 
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/AbstractSortedMapDecorator.java
 Sat Nov  4 05:27:44 2006
@@ -31,13 +31,16 @@
  * it would provide a loophole around the validation.
  * But, you might want that loophole, so this class is kept simple.
  *
+ * @param <K> the type of the keys in the map
+ * @param <V> the type of the values in the map
  * @since Commons Collections 3.0
  * @version $Revision$ $Date$
  * 
  * @author Stephen Colebourne
  */
-public abstract class AbstractSortedMapDecorator
-        extends AbstractMapDecorator implements SortedMap {
+public abstract class AbstractSortedMapDecorator<K, V>
+        extends AbstractMapDecorator<K, V>
+        implements SortedMap<K, V> {
 
     /**
      * Constructor only used in deserialization, do not use otherwise.
@@ -53,7 +56,7 @@
      * @param map  the map to decorate, must not be null
      * @throws IllegalArgumentException if the collection is null
      */
-    public AbstractSortedMapDecorator(SortedMap map) {
+    public AbstractSortedMapDecorator(SortedMap<K, V> map) {
         super(map);
     }
 
@@ -61,34 +64,44 @@
      * Gets the map being decorated.
      * 
      * @return the decorated map
+     * @deprecated use decorated()
      */
-    protected SortedMap getSortedMap() {
-        return (SortedMap) map;
+    protected SortedMap<K, V> getSortedMap() {
+        return decorated();
+    }
+
+    /**
+     * Gets the map being decorated.
+     * 
+     * @return the decorated map
+     */
+    protected SortedMap<K, V> decorated() {
+        return (SortedMap<K, V>) super.decorated();
     }
 
     //-----------------------------------------------------------------------
-    public Comparator comparator() {
-        return getSortedMap().comparator();
+    public Comparator<? super K> comparator() {
+        return decorated().comparator();
     }
 
-    public Object firstKey() {
-        return getSortedMap().firstKey();
+    public K firstKey() {
+        return decorated().firstKey();
     }
 
-    public SortedMap headMap(Object toKey) {
-        return getSortedMap().headMap(toKey);
+    public K lastKey() {
+        return decorated().lastKey();
     }
 
-    public Object lastKey() {
-        return getSortedMap().lastKey();
+    public SortedMap<K, V> subMap(K fromKey, K toKey) {
+        return decorated().subMap(fromKey, toKey);
     }
 
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        return getSortedMap().subMap(fromKey, toKey);
+    public SortedMap<K, V> headMap(K toKey) {
+        return decorated().headMap(toKey);
     }
 
-    public SortedMap tailMap(Object fromKey) {
-        return getSortedMap().tailMap(fromKey);
+    public SortedMap<K, V> tailMap(K fromKey) {
+        return decorated().tailMap(fromKey);
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to