Class DelegatingInvocableHandler
- java.lang.Object
-
- org.springframework.amqp.rabbit.listener.adapter.DelegatingInvocableHandler
-
public class DelegatingInvocableHandler extends Object
Delegates to anInvocableHandlerMethod
based on the message payload type. Matches a single, non-annotated parameter or one that is annotated withPayload
. Matches must be unambiguous.- Since:
- 1.5
- Author:
- Gary Russell, Artem Bilan
-
-
Constructor Summary
Constructors Constructor Description DelegatingInvocableHandler(List<InvocableHandlerMethod> handlers, Object bean, BeanExpressionResolver beanExpressionResolver, BeanExpressionContext beanExpressionContext)
Construct an instance with the supplied handlers for the bean.DelegatingInvocableHandler(List<InvocableHandlerMethod> handlers, InvocableHandlerMethod defaultHandler, Object bean, BeanExpressionResolver beanExpressionResolver, BeanExpressionContext beanExpressionContext)
Construct an instance with the supplied handlers for the bean.DelegatingInvocableHandler(List<InvocableHandlerMethod> handlers, InvocableHandlerMethod defaultHandler, Object bean, BeanExpressionResolver beanExpressionResolver, BeanExpressionContext beanExpressionContext, Validator validator)
Construct an instance with the supplied handlers for the bean.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected InvocableHandlerMethod
findHandlerForPayload(Class<? extends Object> payloadClass)
Object
getBean()
protected InvocableHandlerMethod
getHandlerForPayload(Class<? extends Object> payloadClass)
InvocationResult
getInvocationResultFor(Object result, Object inboundPayload)
Method
getMethodFor(Object payload)
Return the method that will be invoked for this payload.String
getMethodNameFor(Object payload)
Return a string representation of the method that will be invoked for this payload.boolean
hasDefaultHandler()
InvocationResult
invoke(Message<?> message, Object... providedArgs)
Invoke the method with the given message.boolean
isAsyncReplies()
Return true if any handler method has an async reply type.protected boolean
matchHandlerMethod(Class<? extends Object> payloadClass, InvocableHandlerMethod handler)
-
-
-
Constructor Detail
-
DelegatingInvocableHandler
public DelegatingInvocableHandler(List<InvocableHandlerMethod> handlers, Object bean, BeanExpressionResolver beanExpressionResolver, BeanExpressionContext beanExpressionContext)
Construct an instance with the supplied handlers for the bean.- Parameters:
handlers
- the handlers.bean
- the bean.beanExpressionResolver
- the resolver.beanExpressionContext
- the context.
-
DelegatingInvocableHandler
public DelegatingInvocableHandler(List<InvocableHandlerMethod> handlers, @Nullable InvocableHandlerMethod defaultHandler, Object bean, BeanExpressionResolver beanExpressionResolver, BeanExpressionContext beanExpressionContext)
Construct an instance with the supplied handlers for the bean.- Parameters:
handlers
- the handlers.defaultHandler
- the default handler.bean
- the bean.beanExpressionResolver
- the resolver.beanExpressionContext
- the context.- Since:
- 2.0.3
-
DelegatingInvocableHandler
public DelegatingInvocableHandler(List<InvocableHandlerMethod> handlers, @Nullable InvocableHandlerMethod defaultHandler, Object bean, BeanExpressionResolver beanExpressionResolver, BeanExpressionContext beanExpressionContext, @Nullable Validator validator)
Construct an instance with the supplied handlers for the bean.- Parameters:
handlers
- the handlers.defaultHandler
- the default handler.bean
- the bean.beanExpressionResolver
- the resolver.beanExpressionContext
- the context.validator
- the validator.- Since:
- 2.0.3
-
-
Method Detail
-
getBean
public Object getBean()
- Returns:
- the bean
-
isAsyncReplies
public boolean isAsyncReplies()
Return true if any handler method has an async reply type.- Returns:
- the asyncReply.
- Since:
- 2.2.21
-
invoke
public InvocationResult invoke(Message<?> message, Object... providedArgs) throws Exception
Invoke the method with the given message.- Parameters:
message
- the message.providedArgs
- additional arguments.- Returns:
- the result of the invocation.
- Throws:
Exception
- raised if no suitable argument resolver can be found, or the method raised an exception.
-
getHandlerForPayload
protected InvocableHandlerMethod getHandlerForPayload(Class<? extends Object> payloadClass)
- Parameters:
payloadClass
- the payload class.- Returns:
- the handler.
-
findHandlerForPayload
protected InvocableHandlerMethod findHandlerForPayload(Class<? extends Object> payloadClass)
-
matchHandlerMethod
protected boolean matchHandlerMethod(Class<? extends Object> payloadClass, InvocableHandlerMethod handler)
-
getMethodNameFor
public String getMethodNameFor(Object payload)
Return a string representation of the method that will be invoked for this payload.- Parameters:
payload
- the payload.- Returns:
- the method name.
-
getMethodFor
public Method getMethodFor(Object payload)
Return the method that will be invoked for this payload.- Parameters:
payload
- the payload.- Returns:
- the method.
- Since:
- 2.0
-
hasDefaultHandler
public boolean hasDefaultHandler()
-
getInvocationResultFor
@Nullable public InvocationResult getInvocationResultFor(Object result, Object inboundPayload)
-
-