package org.compass.needle.coherence; import java.io.IOException; import com.tangosol.net.NamedCache; import com.tangosol.util.filter.AlwaysFilter; import com.tangosol.util.filter.AndFilter; import com.tangosol.util.filter.EqualsFilter; import com.tangosol.util.processor.ConditionalRemove; /** * The invocable directory uses Coherence extended support for invocable cache * services (not available at all editions). * * <p>Allow to better implement locking and batch deletions. * * @author kimchy */ public class InvocableCoherenceDirectory extends DataGridCoherenceDirectory { public InvocableCoherenceDirectory(String cacheName) { super(cacheName); } public InvocableCoherenceDirectory(String cacheName, String indexName) { super(cacheName, indexName); } public InvocableCoherenceDirectory(String cacheName, String indexName, int bucketSize) { super(cacheName, indexName, bucketSize); } public InvocableCoherenceDirectory(NamedCache cache, String indexName) { super(cache, indexName); } public InvocableCoherenceDirectory(NamedCache cache, String indexName, int bucketSize) { super(cache, indexName, bucketSize); } public InvocableCoherenceDirectory(NamedCache cache, String indexName, int bucketSize, int flushRate) { super(cache, indexName, bucketSize, flushRate); } protected void doInit() { setLockFactory(new InvocableCoherenceLockFactory(getCache(), getIndexName())); } public void deleteFile(String name) throws IOException { getCache().invokeAll(new AndFilter(getIndexNameEqualsFilter(), new EqualsFilter(getFileNameKeyExtractor(), name)), new ConditionalRemove(AlwaysFilter.INSTANCE, false)); } public void deleteContent() { getCache().invokeAll(getIndexNameEqualsFilter(), new ConditionalRemove(AlwaysFilter.INSTANCE, false)); } }