Skip navigation links

Overview | Package | Class | Tree | Index | Help
| Oracle® Coherence Java API Reference Release 3.6.0.0 E15725-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.tangosol.util.processor
Class ConditionalPutAll

`java.lang.Object
com.tangosol.util.Base
com.tangosol.util.processor.AbstractProcessor
com.tangosol.util.processor.ConditionalPutAll`

All Implemented Interfaces:
  ExternalizableLite, PortableObject, InvocableMap.EntryProcessor, Serializable

      public class ConditionalPutAll

extends AbstractProcessor
implements ExternalizableLite, PortableObject

ConditionalPutAll is an EntryProcessor that performs a `Entry.setValue` operation for multiple entries that satisfy the specified condition. <p/> Consider such methods of the ConcurrentMap interface as replace(key, value) and putIfAbsent(key, value). While the regular put(key, value) method has the "multi-put" flavor putAll(map), there are no analogous "bulk" operations for those ConcurrentMap methods. The ConditionalPutAll processor provides the corresponding functionality when used in conjunction with the `invokeAll(keys, processor)` API. For example, the replaceAll(map) method could be implemented as:

       filter = PresentFilter.INSTANCE;
       cache.invokeAll(map.keySet(), new ConditionalPutAll(filter, map));

and the putAllIfAbsent(map) could be done by inverting the filter:

       filter = new NotFilter(PresentFilter.INSTANCE);

<p/> Obviously, using more specific, fine-tuned filters may provide additional flexibility and efficiency allowing the multi-put operations to be performed conditionally on values of specific attributes (or even calculations) instead of a simple existence check.

Since:
  Coherence 3.2
Author:
  gg 2006.04.28

Field Summary
`protected Filter` | `m_filter` The underlying filter.
`protected Map` | `m_map` Specifies the map of new values.

Constructor Summary
`ConditionalPutAll()` Default constructor (necessary for the ExternalizableLite interface).
`ConditionalPutAll(Filter filter, Map map)` Construct a ConditionalPutAll processor that updates an entry with a new value if and only if the filter applied to the entry evaluates to true.

Method Summary
`boolean` | `equals(Object o)` Compare the ConditionalPutAll with another object to determine equality.
`int` | `hashCode()` Determine a hash value for the ConditionalPutAll object according to the general `Object.hashCode()` contract.
`Object` | `process(InvocableMap.Entry entry)` Process a Map.Entry object.
`Map` | `processAll(Set setEntries)` Process a Set of InvocableMap.Entry objects. This method is semantically equivalent to:
       Map mapResults = new ListMap();
       for (Iterator iter = setEntries.iterator(); iter.hasNext(); )
           {
           Entry entry = (Entry) iter.next();
           mapResults.put(entry.getKey(), process(entry));
           }
       return mapResults;
Note: if processAll() call throws an exception, entries that were removed from the setEntries would be considered successfully processed and corresponding changes will be made to the underlying Map.
`void` | `readExternal(DataInput in)` Restore the contents of this object by loading the object's state from the passed DataInput object.
`void` | `readExternal(PofReader in)` Restore the contents of a user type instance by reading its state using the specified PofReader object.
`String` | `toString()` Return a human-readable description for this ConditionalPutAll.
`void` | `writeExternal(DataOutput out)` Save the contents of this object by storing the object's state into the passed DataOutput object.
`void` | `writeExternal(PofWriter out)` Save the contents of a POF user type instance by writing its state using the specified PofWriter object.

Field Detail

### m_filter

    protected Filter m_filter

  The underlying filter.

### m_map

    protected Map m_map

  Specifies the map of new values.

Constructor Detail

### ConditionalPutAll

    public ConditionalPutAll()

  Default constructor (necessary for the ExternalizableLite interface).

### ConditionalPutAll

    public ConditionalPutAll(Filter filter,
                             Map map)

  Construct a ConditionalPutAll processor that updates an entry with a new value if and only if the filter applied to the entry evaluates to true. The new value is extracted from the specified map based on the entry's key.
  Parameters:
    `filter` - the filter to evaluate all supplied entries
    `map` - a map of values to update entries with

Method Detail

### process

    public Object process(InvocableMap.Entry entry)

  Process a Map.Entry object.
  Specified by:
    `process` in interface `InvocableMap.EntryProcessor`
  Parameters:
    `entry` - the Entry to process
  Returns:
    the result of the processing, if any

### processAll

    public Map processAll(Set setEntries)

  Process a Set of InvocableMap.Entry objects. This method is semantically equivalent to:

         Map mapResults = new ListMap();
         for (Iterator iter = setEntries.iterator(); iter.hasNext(); )
             {
             Entry entry = (Entry) iter.next();
             mapResults.put(entry.getKey(), process(entry));
             }
         return mapResults;

  Note: if processAll() call throws an exception, entries that were removed from the setEntries would be considered successfully processed and corresponding changes will be made to the underlying Map.
  Specified by:
    `processAll` in interface `InvocableMap.EntryProcessor`
  Overrides:
    `processAll` in class `AbstractProcessor`
  Parameters:
    `setEntries` - a Set of InvocableMap.Entry objects to process
  Returns:
    a Map containing the results of the processing, up to one entry for each InvocableMap.Entry that was processed, keyed by the keys of the Map that were processed, with a corresponding value being the result of the processing for each key

### equals

    public boolean equals(Object o)

  Compare the ConditionalPutAll with another object to determine equality.
  Returns:
    true iff this ConditionalPutAll and the passed object are equivalent ConditionalPutAll

### hashCode

    public int hashCode()

  Determine a hash value for the ConditionalPutAll object according to the general `Object.hashCode()` contract.
  Returns:
    an integer hash value for this ConditionalPutAll object

### toString

    public String toString()

  Return a human-readable description for this ConditionalPutAll.
  Returns:
    a String description of the ConditionalPutAll

### readExternal

    public void readExternal(DataInput in)
                      throws IOException

  Restore the contents of this object by loading the object's state from the passed DataInput object.
  Specified by:
    `readExternal` in interface `ExternalizableLite`
  Parameters:
    `in` - the DataInput stream to read data from in order to restore the state of this object
  Throws:
    `IOException` - if an I/O exception occurs
    `NotActiveException` - if the object is not in its initial state, and therefore cannot be deserialized into

### writeExternal

    public void writeExternal(DataOutput out)
                       throws IOException

  Save the contents of this object by storing the object's state into the passed DataOutput object.
  Specified by:
    `writeExternal` in interface `ExternalizableLite`
  Parameters:
    `out` - the DataOutput stream to write the state of this object to
  Throws:
    `IOException` - if an I/O exception occurs

### readExternal

    public void readExternal(PofReader in)
                      throws IOException

  Restore the contents of a user type instance by reading its state using the specified PofReader object.
  Specified by:
    `readExternal` in interface `PortableObject`
  Parameters:
    `in` - the PofReader from which to read the object's state
  Throws:
    `IOException` - if an I/O error occurs

### writeExternal

    public void writeExternal(PofWriter out)
                       throws IOException

  Save the contents of a POF user type instance by writing its state using the specified PofWriter object.
  Specified by:
    `writeExternal` in interface `PortableObject`
  Parameters:
    `out` - the PofWriter to which to write the object's state
  Throws:
    `IOException` - if an I/O error occurs

Skip navigation links

Overview | Package | Class | Tree | Index | Help
| Oracle® Coherence Java API Reference Release 3.6.0.0 E15725-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000, 2010, Oracle and/or its affiliates. All rights reserved.