|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.axonframework.commandhandling.gateway.GatewayProxyFactory
public class GatewayProxyFactory
Factory that creates Gateway implementations from custom interface definitions. The behavior of the method is defined by the parameters, declared exceptions and return type of the method.
Supported parameter types:@MetaData
are will cause the parameter values to be added as
meta data values to the outgoing message.long
and TimeUnit
, they are considered to represent
the timeout for the command. The method will block for as long as the command requires to execute, or until the
timeout expires.void
return types are always allowed. Unless another parameter makes the method blocking, void
methods are non-blocking by default.Future
return type will always result in a non-blocking operation. A future is returned
that allows you to retrieve the execution's result at your own convenience. Note that declared exceptions and
timeouts are ignored.TimeoutException
will throw that exception when a configured timeout expires. If no such
exception is declared, but a timeout is configured, the method will return null
.InterruptedException
will throw that exception when a thread blocked while waiting for a
response is interrupted. Not declaring the exception will have the method return null
when a blocked
thread is interrupted. Note that when no InterruptedException is declared, the interrupt flag is set back on the
interrupted thread@Timeout
annotation can be used to define a timeout on a method. This will always cause
a method invocation to block until a response is available, or the timeout expires.
Any method will be blocking if: void
or Future
, orTimeUnit
and long
, or@Timeout
Nested Class Summary | |
---|---|
static interface |
GatewayProxyFactory.InvocationHandler<R>
Interface towards the mechanism that handles a method call on a gateway interface method. |
Constructor Summary | |
---|---|
GatewayProxyFactory(CommandBus commandBus,
CommandDispatchInterceptor... dispatchInterceptors)
Initialize the factory sending Commands to the given commandBus , optionally intercepting them with
given dispatchInterceptors . |
|
GatewayProxyFactory(CommandBus commandBus,
RetryScheduler retryScheduler,
CommandDispatchInterceptor... commandDispatchInterceptors)
Initialize the factory sending Commands to the given commandBus , optionally intercepting them with
given dispatchInterceptors . |
|
GatewayProxyFactory(CommandBus commandBus,
RetryScheduler retryScheduler,
List<CommandDispatchInterceptor> commandDispatchInterceptors)
Initialize the factory sending Commands to the given commandBus , optionally intercepting them with
given dispatchInterceptors . |
Method Summary | ||
---|---|---|
|
createGateway(Class<T> gatewayInterface)
Creates a gateway instance for the given gatewayInterface . |
|
|
registerCommandCallback(CommandCallback<R> callback)
Registers the callback , which is invoked for each sent command, unless Axon is able to detect that
the result of the command does not match the type accepted by the callback. |
|
GatewayProxyFactory |
registerDispatchInterceptor(CommandDispatchInterceptor dispatchInterceptor)
Registers the given dispatchInterceptor which is invoked for each Command dispatched through the
Command Gateways created by this factory. |
|
protected
|
wrapToFireAndForget(GatewayProxyFactory.InvocationHandler<Future<R>> delegate)
Wrap the given delegate in an InvocationHandler that returns immediately after invoking the
delegate . |
|
protected
|
wrapToReturnNullOnInterrupted(GatewayProxyFactory.InvocationHandler<R> delegate)
Wrap the given delegate in an InvocationHandler that returns null when the
delegate
throws an InterruptedException. |
|
protected
|
wrapToReturnNullOnTimeout(GatewayProxyFactory.InvocationHandler<R> delegate)
Wrap the given delegate in an InvocationHandler that returns null when the
delegate throws a TimeoutException. |
|
protected
|
wrapToReturnWithFixedTimeout(GatewayProxyFactory.InvocationHandler<Future<R>> delegate,
long timeout,
TimeUnit timeUnit)
Wraps the given delegate and waits for the result in the Future to become available, with given
timeout and timeUnit . |
|
protected
|
wrapToReturnWithTimeoutInArguments(GatewayProxyFactory.InvocationHandler<Future<R>> delegate,
int timeoutIndex,
int timeUnitIndex)
Wraps the given delegate and waits for the result in the Future to become available using given
indices to resolve the parameters that provide the timeout to use. |
|
protected
|
wrapToWaitForResult(GatewayProxyFactory.InvocationHandler<Future<R>> delegate)
Wraps the given delegate and waits for the result in the Future to become available. |
|
protected
|
wrapUndeclaredExceptions(GatewayProxyFactory.InvocationHandler<R> delegate,
Class<?>[] declaredExceptions)
Wraps the given delegate in an InvocationHandler that wraps exceptions not declared on the method
in a CommandExecutionException . |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public GatewayProxyFactory(CommandBus commandBus, CommandDispatchInterceptor... dispatchInterceptors)
commandBus
, optionally intercepting them with
given dispatchInterceptors
.
Note that the given dispatchInterceptors
are applied only on commands sent through gateways that
have been created using this factory.
commandBus
- The CommandBus on which to dispatch the Command MessagesdispatchInterceptors
- The interceptors to invoke before dispatching commands to the Command Buspublic GatewayProxyFactory(CommandBus commandBus, RetryScheduler retryScheduler, CommandDispatchInterceptor... commandDispatchInterceptors)
commandBus
, optionally intercepting them with
given dispatchInterceptors
. The given retryScheduler
will reschedule commands for
dispatching if a previous attempt resulted in an exception.
Note that the given dispatchInterceptors
are applied only on commands sent through gateways that
have been created using this factory.
commandBus
- The CommandBus on which to dispatch the Command MessagesretryScheduler
- The scheduler that will decide whether to reschedule commands, may be
null
to report failures without reschedulingcommandDispatchInterceptors
- The interceptors to invoke before dispatching commands to the Command Buspublic GatewayProxyFactory(CommandBus commandBus, RetryScheduler retryScheduler, List<CommandDispatchInterceptor> commandDispatchInterceptors)
commandBus
, optionally intercepting them with
given dispatchInterceptors
. The given retryScheduler
will reschedule commands for
dispatching if a previous attempt resulted in an exception.
Note that the given dispatchInterceptors
are applied only on commands sent through gateways that
have been created using this factory.
commandBus
- The CommandBus on which to dispatch the Command MessagesretryScheduler
- The scheduler that will decide whether to reschedule commands, may be
null
to report failures without reschedulingcommandDispatchInterceptors
- The interceptors to invoke before dispatching commands to the Command BusMethod Detail |
---|
public <T> T createGateway(Class<T> gatewayInterface)
gatewayInterface
. The returned instance is a Proxy that
implements that interface.
T
- The interface declaring the gateway methodsgatewayInterface
- The interface declaring the gateway methods
protected <R> GatewayProxyFactory.InvocationHandler<R> wrapUndeclaredExceptions(GatewayProxyFactory.InvocationHandler<R> delegate, Class<?>[] declaredExceptions)
delegate
in an InvocationHandler that wraps exceptions not declared on the method
in a CommandExecutionException
.
R
- The response type of the command handlerdelegate
- The delegate to invoke that potentially throws exceptionsdeclaredExceptions
- The exceptions declared on the method signature
CommandExecutionException
protected <R> GatewayProxyFactory.InvocationHandler<R> wrapToReturnNullOnInterrupted(GatewayProxyFactory.InvocationHandler<R> delegate)
delegate
in an InvocationHandler that returns null when the
delegate
throws an InterruptedException.
R
- The response type of the command handlerdelegate
- The delegate to invoke, potentially throwing an InterruptedException when invoked
protected <R> GatewayProxyFactory.InvocationHandler<R> wrapToReturnNullOnTimeout(GatewayProxyFactory.InvocationHandler<R> delegate)
delegate
in an InvocationHandler that returns null when the
delegate
throws a TimeoutException.
R
- The response type of the command handlerdelegate
- The delegate to invoke, potentially throwing a TimeoutException when invoked
protected <R> GatewayProxyFactory.InvocationHandler<R> wrapToFireAndForget(GatewayProxyFactory.InvocationHandler<Future<R>> delegate)
delegate
in an InvocationHandler that returns immediately after invoking the
delegate
.
R
- The response type of the command handlerdelegate
- The delegate to invoke, potentially throwing an InterruptedException when invoked
protected <R> GatewayProxyFactory.InvocationHandler<R> wrapToWaitForResult(GatewayProxyFactory.InvocationHandler<Future<R>> delegate)
delegate
and waits for the result in the Future to become available. No explicit
timeout is provided for the waiting.
R
- The result of the command handlerdelegate
- The delegate to invoke, returning a Future
protected <R> GatewayProxyFactory.InvocationHandler<R> wrapToReturnWithFixedTimeout(GatewayProxyFactory.InvocationHandler<Future<R>> delegate, long timeout, TimeUnit timeUnit)
delegate
and waits for the result in the Future to become available, with given
timeout
and timeUnit
.
R
- The result of the command handlerdelegate
- The delegate to invoke, returning a Futuretimeout
- The amount of time to wait for the result to become availabletimeUnit
- The unit of time to wait
protected <R> GatewayProxyFactory.InvocationHandler<R> wrapToReturnWithTimeoutInArguments(GatewayProxyFactory.InvocationHandler<Future<R>> delegate, int timeoutIndex, int timeUnitIndex)
delegate
and waits for the result in the Future to become available using given
indices to resolve the parameters that provide the timeout to use.
R
- The result of the command handlerdelegate
- The delegate to invoke, returning a FuturetimeoutIndex
- The index of the argument providing the timeouttimeUnitIndex
- The index of the argument providing the time unit
public <R> GatewayProxyFactory registerCommandCallback(CommandCallback<R> callback)
callback
, which is invoked for each sent command, unless Axon is able to detect that
the result of the command does not match the type accepted by the callback.
Axon will check the signature of the onSuccess() method and only invoke the callback if the actual result of the
command is an instance of that type. If Axon is unable to detect the type, the callback is always invoked,
potentially causing ClassCastException
.
R
- The type of return value the callback is interested incallback
- The callback to register
public GatewayProxyFactory registerDispatchInterceptor(CommandDispatchInterceptor dispatchInterceptor)
dispatchInterceptor
which is invoked for each Command dispatched through the
Command Gateways created by this factory.
dispatchInterceptor
- The interceptor to register.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |