|
Oracle® Coherence Java API Reference Release 3.6.1.0 E18814-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.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 1: This filter must be the outermost filter and cannot be used as a part of any composite filter (AndFilter, OrFilter, etc.)
Note 2: This filter is intended to be processed only on the client side of the partitioned cache service, so it intentionally does not implement the Serializable and PortableObject interfaces. To iterate through a query on a partition-by-partition or member-by-member basis, use thePartitionedIterator
class.
Constructor Summary | |
---|---|
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. |
java.lang.String |
toString() Return a human-readable description for this Filter. |
Constructor Detail |
---|
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()
|
Oracle® Coherence Java API Reference Release 3.6.1.0 E18814-01 |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |