package org.infinispan.context; import java.util.Set; import org.infinispan.container.EntryFactory; import org.infinispan.container.entries.CacheEntry; import org.infinispan.container.entries.InternalCacheEntry; import org.infinispan.remoting.transport.Address; /** * A context that contains information pertaining to a given invocation. These contexts typically have the lifespan of * a single invocation. * * @author Manik Surtani (<a href="mailto:manik@jboss.org">manik@jboss.org</a>) * @author Mircea.Markus@jboss.com * @since 4.0 */ public interface InvocationContext extends EntryLookup, Cloneable { /** * Returns true if the call was originated locally, false if it is the result of a remote rpc. */ boolean isOriginLocal(); /** * @return the origin of the command, or null if the command originated locally */ Address getOrigin(); /** * Returns true if this call is performed in the context of an transaction, false otherwise. */ boolean isInTxScope(); /** * Returns the in behalf of which locks will be acquired. */ Object getLockOwner(); /** * Sets the object to be used by lock owner. */ void setLockOwner(Object lockOwner); /** * Clones the invocation context. * * @return A cloned instance of this invocation context instance */ InvocationContext clone(); /** * Returns the set of keys that are locked for writing. */ Set<Object> getLockedKeys(); void clearLockedKeys(); /** * Returns the class loader associated with this invocation * * @return a class loader instance or null if no class loader was * specifically associated * @deprecated Not in use any more, implementations might return null. */ @Deprecated ClassLoader getClassLoader(); /** * Sets the class loader associated for this invocation * * @deprecated Not in use any more. */ @Deprecated void setClassLoader(ClassLoader classLoader); /** * Tracks the given key as locked by this invocation context. */ void addLockedKey(Object key); /** * Returns true if the lock being tested is already held in the current scope, false otherwise. * * @param key lock to test */ boolean hasLockedKey(Object key); /** * @deprecated Since 8.1, use {@link EntryFactory#wrapExternalEntry(InvocationContext, Object, CacheEntry, boolean, boolean)} instead. */ @Deprecated default boolean replaceValue(Object key, InternalCacheEntry cacheEntry) { return false; } boolean isEntryRemovedInContext(Object key); }