org.apache.commons.collections.map

Class PredicatedMap

public class PredicatedMap extends AbstractInputCheckedMapDecorator implements Serializable

Decorates another Map to validate that additions match a specified predicate.

This map exists to provide validation for the decorated map. It is normally created to decorate an empty map. If an object cannot be added to the map, an IllegalArgumentException is thrown.

One usage would be to ensure that no null keys are added to the map.

Map map = PredicatedSet.decorate(new HashMap(), NotNullPredicate.INSTANCE, null);

Note that PredicatedMap is not synchronized and is not thread-safe. If you wish to use this map from multiple threads concurrently, you must use appropriate synchronization. The simplest approach is to wrap this map using java.util.Collections#synchronizedMap(Map). This class may throw exceptions when accessed by concurrent threads without synchronization.

This class is Serializable from Commons Collections 3.1.

Since: Commons Collections 3.0

Version: $Revision: 348007 $ $Date: 2005-11-21 22:52:57 +0000 (Mon, 21 Nov 2005) $

Author: Stephen Colebourne Paul Jack

Field Summary
protected PredicatekeyPredicate
The key predicate to use
protected PredicatevaluePredicate
The value predicate to use
Constructor Summary
protected PredicatedMap(Map map, Predicate keyPredicate, Predicate valuePredicate)
Constructor that wraps (not copies).
Method Summary
protected ObjectcheckSetValue(Object value)
Override to validate an object set into the map via setValue.
static Mapdecorate(Map map, Predicate keyPredicate, Predicate valuePredicate)
Factory method to create a predicated (validating) map.
protected booleanisSetValueChecking()
Override to only return true when there is a value transformer.
Objectput(Object key, Object value)
voidputAll(Map mapToCopy)
protected voidvalidate(Object key, Object value)
Validates a key value pair.

Field Detail

keyPredicate

protected final Predicate keyPredicate
The key predicate to use

valuePredicate

protected final Predicate valuePredicate
The value predicate to use

Constructor Detail

PredicatedMap

protected PredicatedMap(Map map, Predicate keyPredicate, Predicate valuePredicate)
Constructor that wraps (not copies).

Parameters: map the map to decorate, must not be null keyPredicate the predicate to validate the keys, null means no check valuePredicate the predicate to validate to values, null means no check

Throws: IllegalArgumentException if the map is null

Method Detail

checkSetValue

protected Object checkSetValue(Object value)
Override to validate an object set into the map via setValue.

Parameters: value the value to validate

Throws: IllegalArgumentException if invalid

Since: Commons Collections 3.1

decorate

public static Map decorate(Map map, Predicate keyPredicate, Predicate valuePredicate)
Factory method to create a predicated (validating) map.

If there are any elements already in the list being decorated, they are validated.

Parameters: map the map to decorate, must not be null keyPredicate the predicate to validate the keys, null means no check valuePredicate the predicate to validate to values, null means no check

Throws: IllegalArgumentException if the map is null

isSetValueChecking

protected boolean isSetValueChecking()
Override to only return true when there is a value transformer.

Returns: true if a value predicate is in use

Since: Commons Collections 3.1

put

public Object put(Object key, Object value)

putAll

public void putAll(Map mapToCopy)

validate

protected void validate(Object key, Object value)
Validates a key value pair.

Parameters: key the key to validate value the value to validate

Throws: IllegalArgumentException if invalid

Copyright © 2001-2008 Apache Software Foundation. All Rights Reserved.