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*/ } }