package org.infinispan.context.impl;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import org.infinispan.commons.CacheException;
import org.infinispan.container.entries.CacheEntry;
import org.infinispan.context.InvocationContext;
import org.infinispan.remoting.transport.Address;
/**
* This context is a non-context for operations such as eviction which are not related
* to the method invocation which caused them.
*
* @author Sanne Grinovero <sanne@infinispan.org> (C) 2011 Red Hat Inc.
*/
public final class ImmutableContext implements InvocationContext {
public static final ImmutableContext INSTANCE = new ImmutableContext();
private ImmutableContext() {
//don't create multiple instances
}
@Override
public CacheEntry lookupEntry(Object key) {
throw newUnsupportedMethod();
}
@Override
public Map<Object, CacheEntry> getLookedUpEntries() {
return Collections.emptyMap();
}
@Override
public void putLookedUpEntry(Object key, CacheEntry e) {
throw newUnsupportedMethod();
}
@Override
public void removeLookedUpEntry(Object key) {
throw newUnsupportedMethod();
}
@Override
public boolean hasLockedKey(Object key) {
return false;
}
@Override
public boolean isOriginLocal() {
return true;
}
@Override
public Address getOrigin() {
return null;
}
@Override
public boolean isInTxScope() {
return false;
}
@Override
public Object getLockOwner() {
return null;
}
@Override
public void setLockOwner(Object lockOwner) {
throw newUnsupportedMethod();
}
@Override
public Set<Object> getLockedKeys() {
return Collections.emptySet();
}
@Override
public InvocationContext clone() {
return this;
}
@Override
public ClassLoader getClassLoader() {
return null;
}
@Override
public void setClassLoader(ClassLoader classLoader) {
throw newUnsupportedMethod();
}
/**
* @return an exception to state this context is read only
*/
private static CacheException newUnsupportedMethod() {
throw new UnsupportedOperationException();
}
@Override
public void addLockedKey(Object key) {
throw newUnsupportedMethod();
}
@Override
public void clearLockedKeys() {
throw newUnsupportedMethod();
}
@Override
public boolean isEntryRemovedInContext(Object key) {
return false;
}
}