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 ConditionalRemove

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

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

      public class ConditionalRemove

extends AbstractProcessor
implements ExternalizableLite, PortableObject

ConditionalRemove is an EntryProcessor that performs an `Entry.remove` operation if the specified condition is satisfied. <p/> While the ConditionalRemove processing could be implemented via direct key-based QueryMap operations, it is more efficient and enforces concurrency control without explicit locking. <p/> For example, the following operations are functionally similar, but the InvocableMap versions (a) perform significantly better for partitioned caches; (b) provide all necessary concurrency control (which is ommited from the QueryMap examples):

InvocableMap | QueryMap
--- | ---
cache.invoke(key, new ConditionalRemove(filter)); (*) | if (filter.evaluate(cache.get(key)) cache.remove(key);
cache.invokeAll(setKeys, new ConditionalRemove(filter)); | for (Object key : setKeys) if (filter.evaluate(cache.get(key)) cache.remove(key);
cache.invokeAll(filter1, new ConditionalRemove(filter2); | for (Object key : cache.setKeys(filter1)) if (filter2.evaluate(cache.get(key)) cache.remove(key);
cache.invokeAll(filter, new ConditionalRemove(AlwaysFilter.INSTANCE)); | Set setKeys = cache.keySet(filter); cache.keySet().removeAll(setKeys);

(*) If the filter is assigned as the following: `filter = new EqualsFilter(IdentityExtractor.INSTANCE, oValue);`
this operation also becomes functionally equivalent to the remove method of the ConcurrentMap interface (available with JDK 1.5).

Since:
  Coherence 3.2
Author:
  gg 2006.03.15

Field Summary
`protected Filter` | `m_filter` The underlying filter.
`protected boolean` | `m_fReturn` Specifies whether or not a return value is required.

Constructor Summary
`ConditionalRemove()` Default constructor (necessary for the ExternalizableLite interface).
`ConditionalRemove(Filter filter)` Construct a ConditionalRemove processor that removes an InvocableMap entry if and only if the filter applied to the entry evaluates to true.
`ConditionalRemove(Filter filter, boolean fReturn)` Construct a ConditionalRemove processor that removes an InvocableMap entry if and only if the filter applied to the entry evaluates to true.

Method Summary
`boolean` | `equals(Object o)` Compare the ConditionalRemove with another object to determine equality.
`int` | `hashCode()` Determine a hash value for the ConditionalRemove 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 ConditionalRemove.
`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_fReturn

    protected boolean m_fReturn

  Specifies whether or not a return value is required.

Constructor Detail

### ConditionalRemove

    public ConditionalRemove()

  Default constructor (necessary for the ExternalizableLite interface).

### ConditionalRemove

    public ConditionalRemove(Filter filter)

  Construct a ConditionalRemove processor that removes an InvocableMap entry if and only if the filter applied to the entry evaluates to true. The result of the `process(com.tangosol.util.InvocableMap.Entry)` invocation does not return any result.
  Parameters:
    `filter` - the filter to evaluate an entry

### ConditionalRemove

    public ConditionalRemove(Filter filter,
                             boolean fReturn)

  Construct a ConditionalRemove processor that removes an InvocableMap entry if and only if the filter applied to the entry evaluates to true. This processor may optionally return the current value as a result of the invocation if it has not been removed (the filter evaluated to false).
  Parameters:
    `filter` - the filter to evaluate an entry
    `fReturn` - specifies whether or not the processor should return the current value if it has not been removed

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 ConditionalRemove with another object to determine equality.
  Returns:
    true iff this ConditionalRemove and the passed object are equivalent ConditionalRemove

### hashCode

    public int hashCode()

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

### toString

    public String toString()

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

### 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.