Package uk.ac.starlink.util
Class MultiplexInvocationHandler<T>
java.lang.Object
uk.ac.starlink.util.MultiplexInvocationHandler<T>
- All Implemented Interfaces:
InvocationHandler
Used to generate a proxy instance which implements a given interface and
delegates its calls to each of a given list of target implementations.
The content of the list of targets may be changed during the lifetime
of this object, but it's not a good idea to do it while a method is
being invoked.
- Since:
- 6 Jul 2011
- Author:
- Mark Taylor
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateMultiplexer
(Class<T> clazz) Returns a new proxy instance which implements the given interface type, and which uses this handler to execute its methods.T[]
Returns the list of delegate implementations.Invokes a method by invoking the same method on each of this handler's target instances.void
setTargets
(T[] targets) Sets the list of delegate implementations.
-
Constructor Details
-
MultiplexInvocationHandler
Constructor.- Parameters:
targets
- target instances
-
-
Method Details
-
setTargets
Sets the list of delegate implementations.- Parameters:
targets
- target instances
-
getTargets
Returns the list of delegate implementations.- Returns:
- target instances
-
invoke
Invokes a method by invoking the same method on each of this handler's target instances. If any invocation throws an exception, it is thrown from this method and the method is not invoked on later targets. If the method terminates normally, the return value is the return value of the invocation from the first target.- Specified by:
invoke
in interfaceInvocationHandler
- Throws:
Throwable
-
createMultiplexer
Returns a new proxy instance which implements the given interface type, and which uses this handler to execute its methods.- Parameters:
clazz
- interface the return value will implement- Returns:
- multiplexing proxy instance
-