package org.infinispan.context.impl;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import org.infinispan.container.entries.CacheEntry;
import org.infinispan.container.entries.ClearCacheEntry;
import org.infinispan.interceptors.AsyncInterceptorChain;
import org.infinispan.remoting.transport.Address;
/**
* Implementation of {@link org.infinispan.context.InvocationContext} used by the {@link
* org.infinispan.commands.write.ClearCommand}.
*
* @author Pedro Ruivo
* @since 7.2
*/
public class ClearInvocationContext extends AbstractInvocationContext implements Cloneable {
private static final Map<Object, CacheEntry> LOOKUP_ENTRIES = Collections.singletonMap((Object) "_clear_", (CacheEntry) ClearCacheEntry.getInstance());
public ClearInvocationContext(Address origin, AsyncInterceptorChain interceptorChain) {
super(origin);
}
@Override
public boolean isInTxScope() {
return false;
}
@Override
public Object getLockOwner() {
return null; // clear does not acquire any locks
}
@Override
public void setLockOwner(Object lockOwner) {
/*no-op. clear does not acquire any locks*/
}
@Override
public ClearInvocationContext clone() {
return (ClearInvocationContext) super.clone();
}
@Override
public Set<Object> getLockedKeys() {
return Collections.emptySet();
}
@Override
public void clearLockedKeys() {
/*no-op*/
}
@Override
public void addLockedKey(Object key) {
/*no-op*/
}
@Override
public boolean hasLockedKey(Object key) {
//ClearCommand does not acquire locks
return false;
}
@Override
public boolean isEntryRemovedInContext(Object key) {
//clear remove all entries
return true;
}
@Override
public CacheEntry lookupEntry(Object key) {
return null;
}
@Override
public Map<Object, CacheEntry> getLookedUpEntries() {
return LOOKUP_ENTRIES;
}
@Override
public void putLookedUpEntry(Object key, CacheEntry e) {
/*no-op*/
}
@Override
public void removeLookedUpEntry(Object key) {
/*no-op*/
}
}