Class AbstractInputCheckedMapDecorator<K,​V>

  • All Implemented Interfaces:
    java.util.Map<K,​V>, Get<K,​V>, IterableGet<K,​V>, IterableMap<K,​V>, Put<K,​V>
    Direct Known Subclasses:
    PredicatedMap, TransformedMap

    abstract class AbstractInputCheckedMapDecorator<K,​V>
    extends AbstractMapDecorator<K,​V>
    An abstract base class that simplifies the task of creating map decorators.

    The Map API is very difficult to decorate correctly, and involves implementing lots of different classes. This class exists to provide a simpler API.

    Special hook methods are provided that are called when objects are added to the map. By overriding these methods, the input can be validated or manipulated. In addition to the main map methods, the entrySet is also affected, which is the hardest part of writing map implementations.

    This class is package-scoped, and may be withdrawn or replaced in future versions of Commons Collections.

    Since:
    3.1
    • Constructor Detail

      • AbstractInputCheckedMapDecorator

        protected AbstractInputCheckedMapDecorator()
        Constructor only used in deserialization, do not use otherwise.
      • AbstractInputCheckedMapDecorator

        protected AbstractInputCheckedMapDecorator​(java.util.Map<K,​V> map)
        Constructor that wraps (not copies).
        Parameters:
        map - the map to decorate, must not be null
        Throws:
        java.lang.NullPointerException - if map is null
    • Method Detail

      • checkSetValue

        protected abstract V checkSetValue​(V value)
        Hook method called when a value is being set using setValue.

        An implementation may validate the value and throw an exception or it may transform the value into another object.

        This implementation returns the input value.

        Parameters:
        value - the value to check
        Returns:
        the input value
        Throws:
        java.lang.UnsupportedOperationException - if the map may not be changed by setValue
        java.lang.IllegalArgumentException - if the specified value is invalid
        java.lang.ClassCastException - if the class of the specified value is invalid
        java.lang.NullPointerException - if the specified value is null and nulls are invalid
      • isSetValueChecking

        protected boolean isSetValueChecking()
        Hook method called to determine if checkSetValue has any effect.

        An implementation should return false if the checkSetValue method has no effect as this optimises the implementation.

        This implementation returns true.

        Returns:
        true always
      • entrySet

        public java.util.Set<java.util.Map.Entry<K,​V>> entrySet()
        Specified by:
        entrySet in interface Get<K,​V>
        Specified by:
        entrySet in interface java.util.Map<K,​V>
        Overrides:
        entrySet in class AbstractMapDecorator<K,​V>
        Returns:
        a set view of the mappings contained in this map
        See Also:
        Map.entrySet()