|
Oracle® Coherence Java API Reference Release 3.7.1.0 E22843-01 |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object
com.tangosol.util.Base
com.tangosol.util.BitHelper
com.tangosol.util.ExternalizableHelper
com.tangosol.util.filter.PartitionedFilter
public class PartitionedFilter
Filter which limits the scope of another filter to those entries that have keys that belong to the specified partition set.
This filter is intended to be used in advanced scenarios, when a caller wants to retrieve the results of parallel processing restricted to a subset of partitions. This approach may somewhat complicate the client code, but can dramatically reduce the memory footprint used by the requestor.
Below are two examples of PartitionedFilter usage:
void executeByPartitions(NamedCache cache, Filter filter) { DistributedCacheService service = (DistributedCacheService) cache.getCacheService(); int cPartitions = service.getPartitionCount(); PartitionSet parts = new PartitionSet(cPartitions); for (int iPartition = 0; iPartition < cPartitions; iPartition++) { parts.add(iPartition); Filter filterPart = new PartitionedFilter(filter, parts); Set setEntriesPart = cache.entrySet(filterPart); // process the entries ... parts.remove(iPartition); } }
void executeByMembers(NamedCache cache, Filter f) { DistributedCacheService service = (DistributedCacheService) cache.getCacheService(); int cPartitions = service.getPartitionCount(); PartitionSet partsProcessed = new PartitionSet(cPartitions); for (Iterator iter = service.getStorageEnabledMembers().iterator(); iter.hasNext();) { Member member = (Member) iter.next(); PartitionSet partsMember = service.getOwnedPartitions(member); // due to a redistribution some partitions may have already been processed partsMember.remove(partsProcessed); Filter filterPart = new PartitionedFilter(filter, partsMember); Set setEntriesPart = cache.entrySet(filterPart); // process the entries ... partsProcessed.add(partsMember); } // due to a possible redistribution, some partitions may have been skipped if (!partsProcessed.isFull()) { partsProcessed.invert(); Filter filter = new PartitionedFilter(filter, partsProcessed); // process the remaining entries ... } }
Note: This filter must be the outermost filter and cannot be used as a part of any composite filter (AndFilter, OrFilter, etc.)
To iterate through a query on a partition-by-partition or member-by-member basis, use the PartitionedIterator
class.
Constructor Summary | |
---|---|
PartitionedFilter() Default constructor (necessary for the ExternalizableLite interface). |
|
PartitionedFilter(Filter filter, PartitionSet partitions) Construct a PartitionedFilter. |
Method Summary | |
---|---|
boolean |
equals(java.lang.Object o) Compare the PartitionedFilter with another object to determine equality. |
boolean |
evaluate(java.lang.Object o) Apply the test to the object. |
boolean |
evaluateEntry(java.util.Map.Entry entry) Apply the test to a Map Entry. |
Filter |
getFilter() Obtain the wrapped Filter. |
PartitionSet |
getPartitionSet() Obtain the PartitionSet that specifies what partitions the wrapped filter will be applied to. |
int |
hashCode() Determine a hash value for the PartitionedFilter object according to the general Object.hashCode() contract. |
void |
readExternal(java.io.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. |
java.lang.String |
toString() Return a human-readable description for this Filter. |
void |
writeExternal(java.io.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. |
Methods inherited from class com.tangosol.util.BitHelper |
---|
countBits, countBits, countBits, indexOfLSB, indexOfLSB, indexOfLSB, indexOfMSB, indexOfMSB, indexOfMSB, rotateLeft, rotateLeft, rotateLeft, rotateRight, rotateRight, rotateRight, toBitString, toBitString, toBitString |
Constructor Detail |
---|
public PartitionedFilter()
public PartitionedFilter(Filter filter, PartitionSet partitions)
filter
- the underlying (wrapped) filterpartitions
- the subset of partitions the filter should run againstMethod Detail |
---|
public boolean evaluate(java.lang.Object o)
evaluate
in interface Filter
o
- the object to testpublic boolean evaluateEntry(java.util.Map.Entry entry)
evaluateEntry
in interface EntryFilter
entry
- the Map Entry to evaluate; never nullpublic Filter getFilter()
public PartitionSet getPartitionSet()
public boolean equals(java.lang.Object o)
public int hashCode()
Object.hashCode()
contract.public java.lang.String toString()
public void readExternal(java.io.DataInput in) throws java.io.IOException
readExternal
in interface ExternalizableLite
in
- the DataInput stream to read data from in order to restore the state of this objectjava.io.IOException
- if an I/O exception occursjava.io.NotActiveException
- if the object is not in its initial state, and therefore cannot be deserialized intopublic void writeExternal(java.io.DataOutput out) throws java.io.IOException
writeExternal
in interface ExternalizableLite
out
- the DataOutput stream to write the state of this object tojava.io.IOException
- if an I/O exception occurspublic void readExternal(PofReader in) throws java.io.IOException
readExternal
in interface PortableObject
in
- the PofReader from which to read the object's statejava.io.IOException
- if an I/O error occurspublic void writeExternal(PofWriter out) throws java.io.IOException
writeExternal
in interface PortableObject
out
- the PofWriter to which to write the object's statejava.io.IOException
- if an I/O error occurs
|
Oracle® Coherence Java API Reference Release 3.7.1.0 E22843-01 |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |