|
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 |
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. <p/> 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. <p/> 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.) <p/> 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. <p/> To iterate through a query on a partition-by-partition or member-by-member basis, use the PartitionedIterator
class.
Constructor Summary | |
---|---|
PartitionedFilter(Filter filter, PartitionSet partitions) Construct a PartitionedFilter. |
Method Summary | |
---|---|
boolean |
equals(Object o) Compare the PartitionedFilter with another object to determine equality. |
boolean |
evaluate(Object o) Apply the test to the object. |
boolean |
evaluateEntry(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. |
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(Object o)
evaluate
in interface Filter
o
- the object to testpublic boolean evaluateEntry(Map.Entry entry)
evaluateEntry
in interface EntryFilter
entry
- the Map Entry to evaluate; never nullpublic Filter getFilter()
public PartitionSet getPartitionSet()
public boolean equals(Object o)
public int hashCode()
Object.hashCode()
contract.public String toString()
|
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 |