Class PriorityProcessor<K,V,T>

All Implemented Interfaces:
ExternalizableLite, PortableObject, PriorityTask, InvocableMap.EntryProcessor<K,V,T>, Serializable

public class PriorityProcessor<K,V,T> extends AbstractPriorityTask implements InvocableMap.EntryProcessor<K,V,T>, ExternalizableLite, PortableObject
PriorityProcessor is used to explicitly control the scheduling priority and timeouts for execution of EntryProcessor-based methods.

For example, let's assume that there is a cache that belongs to a partitioned cache service configured with a task-timeout of 5 seconds. Also assume that there is a particular PreloadRequest processor that could take much longer to complete due to a large amount of database related processing. Then we could override the default task timeout value by using the PriorityProcessor as follows:

   PreloadRequest     procStandard = PreloadRequest.INSTANCE;
   PriorityProcessor  procPriority = new PriorityProcessor(procStandard);
   procPriority.setExecutionTimeoutMillis(PriorityTask.TIMEOUT_NONE);
   cache.processAll(setKeys, procPriority);
 

This is an advanced feature which should be used judiciously.

Since:
Coherence 3.3
Author:
gg 2007.03.20
See Also:
  • Constructor Details

    • PriorityProcessor

      public PriorityProcessor()
      Default constructor (necessary for the ExternalizableLite interface).
    • PriorityProcessor

      public PriorityProcessor(InvocableMap.EntryProcessor<K,V,T> processor)
      Construct a PriorityProcessor.
      Parameters:
      processor - the processor wrapped by this PriorityProcessor
  • Method Details

    • process

      public T process(InvocableMap.Entry<K,V> entry)
      Process a Map.Entry object.

      Note: if this method throws an exception, all modifications to the supplied entry or any other entries retrieved via the BackingMapContext.getBackingMapEntry(java.lang.Object) API will be rolled back leaving all underlying values unchanged.

      Specified by:
      process in interface InvocableMap.EntryProcessor<K,V,T>
      Parameters:
      entry - the Entry to process
      Returns:
      the result of the processing, if any
    • processAll

      public Map<K,T> processAll(Set<? extends InvocableMap.Entry<K,V>> 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, only the entries that were removed from the setEntries would be considered successfully processed and the corresponding changes made to the underlying Map; changes made to the remaining entries or any other entries obtained from BackingMapContext.getBackingMapEntry(java.lang.Object) will not be processed.

      Specified by:
      processAll in interface InvocableMap.EntryProcessor<K,V,T>
      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
    • getProcessor

      public InvocableMap.EntryProcessor<K,V,T> getProcessor()
      Obtain the underlying processor.
      Returns:
      the processor wrapped by this PriorityProcessor
    • toString

      public String toString()
      Return a human-readable description for this PriorityProcessor.
      Overrides:
      toString in class Object
      Returns:
      a String description of the PriorityProcessor
    • 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
      Overrides:
      readExternal in class AbstractPriorityTask
      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
    • 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
      Overrides:
      writeExternal in class AbstractPriorityTask
      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.

      The AbstractPriorityTask implementation reserves property indexes 0 - 9.

      The PriorityProcessor implementation reserves property index 10.

      Specified by:
      readExternal in interface PortableObject
      Overrides:
      readExternal in class AbstractPriorityTask
      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.

      The AbstractPriorityTask implementation reserves property indexes 0 - 9.

      The PriorityProcessor implementation reserves property index 10.

      Specified by:
      writeExternal in interface PortableObject
      Overrides:
      writeExternal in class AbstractPriorityTask
      Parameters:
      out - the PofWriter to which to write the object's state
      Throws:
      IOException - if an I/O error occurs