com.acsinet_solutions.util.adt
Class MapDelegator<K,V>

java.lang.Object
  extended by com.acsinet_solutions.util.adt.MapDelegator<K,V>
All Implemented Interfaces:
java.util.Map<K,V>
Direct Known Subclasses:
ExceptionMap, LazyMap

public class MapDelegator<K,V>
extends java.lang.Object
implements java.util.Map<K,V>

Abstract convenience class that implements a skeleton for objects that implement Map but delegate responsability into a mutable or immutable Map object.

Mutability is provided via protected methods getCurrent() and setCurrent()

Author:
Santiago Arriaga

Nested Class Summary
 
Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry<K,V>
 
Constructor Summary
MapDelegator(java.util.Map<K,V> current, boolean mutable)
          Public constructor.
 
Method Summary
 void clear()
           
 boolean containsKey(java.lang.Object key)
           
 boolean containsValue(java.lang.Object value)
           
 java.util.Set<java.util.Map.Entry<K,V>> entrySet()
           
 V get(java.lang.Object key)
           
protected  java.util.Map<K,V> getCurrent()
          Get the value of the current iteration node
 boolean isEmpty()
           
 java.util.Set<K> keySet()
           
 V put(K key, V value)
           
 void putAll(java.util.Map<? extends K,? extends V> map)
           
 V remove(java.lang.Object key)
           
protected  void setCurrent(java.util.Map<K,V> current)
          Set the value of the current Map
 int size()
           
 java.util.Collection<V> values()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode
 

Constructor Detail

MapDelegator

public MapDelegator(java.util.Map<K,V> current,
                    boolean mutable)
Public constructor.

Parameters:
current - The map to which this delegator will be delegating to. It must be not-null if the delegation is marked as immutable.
mutable - true if the delegated map can change; false otherwise
Throws:
java.lang.IllegalStateException - If the delegation is marked as immutable and no Map is initially provided
Method Detail

clear

public void clear()
Specified by:
clear in interface java.util.Map<K,V>

containsKey

public boolean containsKey(java.lang.Object key)
Specified by:
containsKey in interface java.util.Map<K,V>

containsValue

public boolean containsValue(java.lang.Object value)
Specified by:
containsValue in interface java.util.Map<K,V>

entrySet

public java.util.Set<java.util.Map.Entry<K,V>> entrySet()
Specified by:
entrySet in interface java.util.Map<K,V>

get

public V get(java.lang.Object key)
Specified by:
get in interface java.util.Map<K,V>

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Map<K,V>

keySet

public java.util.Set<K> keySet()
Specified by:
keySet in interface java.util.Map<K,V>

put

public V put(K key,
             V value)
Specified by:
put in interface java.util.Map<K,V>

putAll

public void putAll(java.util.Map<? extends K,? extends V> map)
Specified by:
putAll in interface java.util.Map<K,V>

remove

public V remove(java.lang.Object key)
Specified by:
remove in interface java.util.Map<K,V>

size

public int size()
Specified by:
size in interface java.util.Map<K,V>

values

public java.util.Collection<V> values()
Specified by:
values in interface java.util.Map<K,V>

getCurrent

protected final java.util.Map<K,V> getCurrent()
Get the value of the current iteration node

Returns:
a Map instance; null if there is no current delegated Map

setCurrent

protected final void setCurrent(java.util.Map<K,V> current)
Set the value of the current Map

Parameters:
current - A maybe-null Map instance