scolebourne    2003/12/11 14:55:25

  Modified:    collections/src/java/org/apache/commons/collections/map
                        FixedSizeSortedMap.java FixedSizeMap.java
                        LRUMap.java
  Log:
  Implement BoundedMap interface
  
  Revision  Changes    Path
  1.2       +54 -10    
jakarta-commons/collections/src/java/org/apache/commons/collections/map/FixedSizeSortedMap.java
  
  Index: FixedSizeSortedMap.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/map/FixedSizeSortedMap.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FixedSizeSortedMap.java   16 Nov 2003 00:05:45 -0000      1.1
  +++ FixedSizeSortedMap.java   11 Dec 2003 22:55:25 -0000      1.2
  @@ -57,9 +57,16 @@
    */
   package org.apache.commons.collections.map;
   
  -import java.util.Comparator;
  +import java.util.Collection;
  +import java.util.Iterator;
  +import java.util.Map;
  +import java.util.Set;
   import java.util.SortedMap;
   
  +import org.apache.commons.collections.BoundedMap;
  +import org.apache.commons.collections.collection.UnmodifiableCollection;
  +import org.apache.commons.collections.set.UnmodifiableSet;
  +
   /**
    * Decorates another <code>SortedMap</code> to fix the size blocking add/remove.
    * <p>
  @@ -79,7 +86,8 @@
    * @author Stephen Colebourne
    * @author Paul Jack
    */
  -public class FixedSizeSortedMap extends FixedSizeMap implements SortedMap {
  +public class FixedSizeSortedMap extends AbstractSortedMapDecorator
  +        implements SortedMap, BoundedMap {
   
       /**
        * Factory method to create a fixed size sorted map.
  @@ -112,18 +120,46 @@
       }
   
       //-----------------------------------------------------------------------
  -    public Object firstKey() {
  -        return getSortedMap().firstKey();
  +    public Object put(Object key, Object value) {
  +        if (map.containsKey(key) == false) {
  +            throw new IllegalArgumentException("Cannot put new key/value pair - Map 
is fixed size");
  +        }
  +        return map.put(key, value);
  +    }
  +
  +    public void putAll(Map mapToCopy) {
  +        for (Iterator it = mapToCopy.keySet().iterator(); it.hasNext(); ) {
  +            if (mapToCopy.containsKey(it.next()) == false) {
  +                throw new IllegalArgumentException("Cannot put new key/value pair - 
Map is fixed size");
  +            }
  +        }
  +        map.putAll(mapToCopy);
  +    }
  +
  +    public void clear() {
  +        throw new UnsupportedOperationException("Map is fixed size");
  +    }
  +
  +    public Object remove(Object key) {
  +        throw new UnsupportedOperationException("Map is fixed size");
       }
   
  -    public Object lastKey() {
  -        return getSortedMap().lastKey();
  +    public Set entrySet() {
  +        Set set = map.entrySet();
  +        return UnmodifiableSet.decorate(set);
       }
   
  -    public Comparator comparator() {
  -        return getSortedMap().comparator();
  +    public Set keySet() {
  +        Set set = map.keySet();
  +        return UnmodifiableSet.decorate(set);
       }
   
  +    public Collection values() {
  +        Collection coll = map.values();
  +        return UnmodifiableCollection.decorate(coll);
  +    }
  +
  +    //-----------------------------------------------------------------------
       public SortedMap subMap(Object fromKey, Object toKey) {
           SortedMap map = getSortedMap().subMap(fromKey, toKey);
           return new FixedSizeSortedMap(map);
  @@ -139,4 +175,12 @@
           return new FixedSizeSortedMap(map);
       }
   
  +    public boolean isFull() {
  +        return true;
  +    }
  +
  +    public int maxSize() {
  +        return size();
  +    }
  +   
   }
  
  
  
  1.2       +13 -3     
jakarta-commons/collections/src/java/org/apache/commons/collections/map/FixedSizeMap.java
  
  Index: FixedSizeMap.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/map/FixedSizeMap.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FixedSizeMap.java 16 Nov 2003 00:05:45 -0000      1.1
  +++ FixedSizeMap.java 11 Dec 2003 22:55:25 -0000      1.2
  @@ -62,6 +62,7 @@
   import java.util.Map;
   import java.util.Set;
   
  +import org.apache.commons.collections.BoundedMap;
   import org.apache.commons.collections.collection.UnmodifiableCollection;
   import org.apache.commons.collections.set.UnmodifiableSet;
   
  @@ -84,7 +85,8 @@
    * @author Stephen Colebourne
    * @author Paul Jack
    */
  -public class FixedSizeMap extends AbstractMapDecorator implements Map {
  +public class FixedSizeMap extends AbstractMapDecorator
  +        implements Map, BoundedMap {
   
       /**
        * Factory method to create a fixed size map.
  @@ -145,6 +147,14 @@
       public Collection values() {
           Collection coll = map.values();
           return UnmodifiableCollection.decorate(coll);
  +    }
  +
  +    public boolean isFull() {
  +        return true;
  +    }
  +
  +    public int maxSize() {
  +        return size();
       }
      
   }
  
  
  
  1.4       +6 -3      
jakarta-commons/collections/src/java/org/apache/commons/collections/map/LRUMap.java
  
  Index: LRUMap.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/map/LRUMap.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LRUMap.java       11 Dec 2003 00:46:12 -0000      1.3
  +++ LRUMap.java       11 Dec 2003 22:55:25 -0000      1.4
  @@ -63,6 +63,8 @@
   import java.io.Serializable;
   import java.util.Map;
   
  +import org.apache.commons.collections.BoundedMap;
  +
   /**
    * A <code>Map</code> implementation with a fixed maximum size which removes
    * the least recently used entry if an entry is added when full.
  @@ -87,7 +89,8 @@
    * @author Morgan Delagrange
    * @author Stephen Colebourne
    */
  -public class LRUMap extends AbstractLinkedMap implements Serializable, Cloneable {
  +public class LRUMap extends AbstractLinkedMap
  +        implements BoundedMap, Serializable, Cloneable {
       
       /** Serialisation version */
       static final long serialVersionUID = -612114643488955218L;
  
  
  

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

Reply via email to