Class DelegatingInvocableHandler


  • public class DelegatingInvocableHandler
    extends java.lang.Object
    Delegates to an InvocableHandlerMethod based on the message payload type. Matches a single, non-annotated parameter or one that is annotated with Payload. Matches must be unambiguous.
    Since:
    1.5
    Author:
    Gary Russell, Artem Bilan
    • Constructor Detail

      • DelegatingInvocableHandler

        public DelegatingInvocableHandler​(java.util.List<InvocableHandlerMethod> handlers,
                                          java.lang.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​(java.util.List<InvocableHandlerMethod> handlers,
                                          @Nullable
                                          InvocableHandlerMethod defaultHandler,
                                          java.lang.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​(java.util.List<InvocableHandlerMethod> handlers,
                                          @Nullable
                                          InvocableHandlerMethod defaultHandler,
                                          java.lang.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 java.lang.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,
                                       java.lang.Object... providedArgs)
                                throws java.lang.Exception
        Invoke the method with the given message.
        Parameters:
        message - the message.
        providedArgs - additional arguments.
        Returns:
        the result of the invocation.
        Throws:
        java.lang.Exception - raised if no suitable argument resolver can be found, or the method raised an exception.
      • getHandlerForPayload

        protected InvocableHandlerMethod getHandlerForPayload​(java.lang.Class<? extends java.lang.Object> payloadClass)
        Parameters:
        payloadClass - the payload class.
        Returns:
        the handler.
      • findHandlerForPayload

        protected InvocableHandlerMethod findHandlerForPayload​(java.lang.Class<? extends java.lang.Object> payloadClass)
      • matchHandlerMethod

        protected boolean matchHandlerMethod​(java.lang.Class<? extends java.lang.Object> payloadClass,
                                             InvocableHandlerMethod handler)
      • getMethodNameFor

        public java.lang.String getMethodNameFor​(java.lang.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 java.lang.reflect.Method getMethodFor​(java.lang.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​(java.lang.Object result,
                                                       java.lang.Object inboundPayload)