org.infinispan.interceptors
Class InterceptorChain

java.lang.Object
  extended by org.infinispan.interceptors.InterceptorChain

public class InterceptorChain
extends Object

Knows how to build and manage an chain of interceptors. Also in charge with invoking methods on the chain.

Since:
4.0
Author:
Mircea.Markus@jboss.com, Galder ZamarreƱo

Constructor Summary
InterceptorChain(CommandInterceptor first)
          Constructs an interceptor chain having the supplied interceptor as first.
 
Method Summary
 void addInterceptor(CommandInterceptor interceptor, int position)
          Inserts the given interceptor at the specified position in the chain (o based indexing).
 boolean addInterceptorAfter(CommandInterceptor toAdd, Class<? extends CommandInterceptor> afterInterceptor)
          Adds a new interceptor in list after an interceptor of a given type.
 boolean addInterceptorBefore(CommandInterceptor toAdd, Class<? extends CommandInterceptor> beforeInterceptor)
          Adds a new interceptor in list after an interceptor of a given type.
 void appendInterceptor(CommandInterceptor ci)
          Appends at the end.
 List<CommandInterceptor> asList()
          Returns an unmofiable list with all the interceptors in sequence.
 boolean containsInstance(CommandInterceptor interceptor)
          Checks whether the chain contains the supplied interceptor instance.
 boolean containsInterceptorType(Class<? extends CommandInterceptor> interceptorType)
           
 CommandInterceptor getFirstInChain()
           
 List<CommandInterceptor> getInterceptorsWhichExtend(Class<? extends CommandInterceptor> interceptorClass)
          Returns all interceptors which extend the given command interceptor.
 List<CommandInterceptor> getInterceptorsWithClassName(String name)
          Returns all the interceptors that have the fully qualified name of their class equal with the supplied class name.
 Object invoke(InvocationContext ctx, VisitableCommand command)
          Walks the command through the interceptor chain.
 void removeInterceptor(Class<? extends CommandInterceptor> clazz)
          Removes all the occurences of supplied interceptor type from the chain.
 void removeInterceptor(int position)
          Removes the interceptor at the given postion.
 boolean replaceInterceptor(CommandInterceptor replacingInterceptor, Class<? extends CommandInterceptor> toBeReplacedInterceptorType)
          Replaces an existing interceptor of the given type in the interceptor chain with a new interceptor instance passed as parameter.
 void setFirstInChain(CommandInterceptor interceptor)
          Mainly used by unit tests to replace the interceptor chain with the starting point passed in.
 int size()
          Returns the number of interceptors in the chain.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

InterceptorChain

public InterceptorChain(CommandInterceptor first)
Constructs an interceptor chain having the supplied interceptor as first.

Method Detail

addInterceptor

public void addInterceptor(CommandInterceptor interceptor,
                           int position)
Inserts the given interceptor at the specified position in the chain (o based indexing).

Throws:
IllegalArgumentException - if the position is invalid (e.g. 5 and there are only 2 interceptors in the chain)

removeInterceptor

public void removeInterceptor(int position)
Removes the interceptor at the given postion.

Throws:
IllegalArgumentException - if the position is invalid (e.g. 5 and there are only 2 interceptors in the chain)

size

public int size()
Returns the number of interceptors in the chain.


asList

public List<CommandInterceptor> asList()
Returns an unmofiable list with all the interceptors in sequence. If first in chain is null an empty list is returned.


removeInterceptor

public void removeInterceptor(Class<? extends CommandInterceptor> clazz)
Removes all the occurences of supplied interceptor type from the chain.


addInterceptorAfter

public boolean addInterceptorAfter(CommandInterceptor toAdd,
                                   Class<? extends CommandInterceptor> afterInterceptor)
Adds a new interceptor in list after an interceptor of a given type.

Returns:
true if the interceptor was added; i.e. the afterInterceptor exists

addInterceptorBefore

public boolean addInterceptorBefore(CommandInterceptor toAdd,
                                    Class<? extends CommandInterceptor> beforeInterceptor)
Adds a new interceptor in list after an interceptor of a given type.

Returns:
true if the interceptor was added; i.e. the afterInterceptor exists

replaceInterceptor

public boolean replaceInterceptor(CommandInterceptor replacingInterceptor,
                                  Class<? extends CommandInterceptor> toBeReplacedInterceptorType)
Replaces an existing interceptor of the given type in the interceptor chain with a new interceptor instance passed as parameter.

Parameters:
replacingInterceptor - the interceptor to add to the interceptor chain
toBeReplacedInterceptorType - the type of interceptor that should be swapped with the new one
Returns:
true if the interceptor was replaced

appendInterceptor

public void appendInterceptor(CommandInterceptor ci)
Appends at the end.


invoke

public Object invoke(InvocationContext ctx,
                     VisitableCommand command)
Walks the command through the interceptor chain. The received ctx is being passed in.


getFirstInChain

public CommandInterceptor getFirstInChain()
Returns:
the first interceptor in the chain.

setFirstInChain

public void setFirstInChain(CommandInterceptor interceptor)
Mainly used by unit tests to replace the interceptor chain with the starting point passed in.

Parameters:
interceptor - interceptor to be used as the first interceptor in the chain.

getInterceptorsWhichExtend

public List<CommandInterceptor> getInterceptorsWhichExtend(Class<? extends CommandInterceptor> interceptorClass)
Returns all interceptors which extend the given command interceptor.


getInterceptorsWithClassName

public List<CommandInterceptor> getInterceptorsWithClassName(String name)
Returns all the interceptors that have the fully qualified name of their class equal with the supplied class name.


toString

public String toString()
Overrides:
toString in class Object

containsInstance

public boolean containsInstance(CommandInterceptor interceptor)
Checks whether the chain contains the supplied interceptor instance.


containsInterceptorType

public boolean containsInterceptorType(Class<? extends CommandInterceptor> interceptorType)

-->

Copyright © 2011 JBoss, a division of Red Hat. All Rights Reserved.