List of usage examples for org.springframework.messaging.handler.invocation InvocableHandlerMethod setMessageMethodArgumentResolvers
public void setMessageMethodArgumentResolvers(HandlerMethodArgumentResolverComposite argumentResolvers)
From source file:org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.java
protected void handleMatch(T mapping, HandlerMethod handlerMethod, String lookupDestination, Message<?> message) {/*www .ja v a2 s .c o m*/ if (logger.isDebugEnabled()) { logger.debug("Invoking " + handlerMethod.getShortLogMessage()); } handlerMethod = handlerMethod.createWithResolvedBean(); InvocableHandlerMethod invocable = new InvocableHandlerMethod(handlerMethod); invocable.setMessageMethodArgumentResolvers(this.argumentResolvers); try { Object returnValue = invocable.invoke(message); MethodParameter returnType = handlerMethod.getReturnType(); if (void.class == returnType.getParameterType()) { return; } if (returnValue != null && this.returnValueHandlers.isAsyncReturnValue(returnValue, returnType)) { ListenableFuture<?> future = this.returnValueHandlers.toListenableFuture(returnValue, returnType); if (future != null) { future.addCallback(new ReturnValueListenableFutureCallback(invocable, message)); } } else { this.returnValueHandlers.handleReturnValue(returnValue, returnType, message); } } catch (Exception ex) { processHandlerMethodException(handlerMethod, ex, message); } catch (Throwable ex) { if (logger.isErrorEnabled()) { logger.error("Error while processing message " + message, ex); } } }
From source file:org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.java
protected void processHandlerMethodException(HandlerMethod handlerMethod, Exception ex, Message<?> message) { InvocableHandlerMethod invocable = getExceptionHandlerMethod(handlerMethod, ex); if (invocable == null) { logger.error("Unhandled exception from message handler method", ex); return;//from ww w .j a v a2 s .c o m } invocable.setMessageMethodArgumentResolvers(this.argumentResolvers); if (logger.isDebugEnabled()) { logger.debug("Invoking " + invocable.getShortLogMessage()); } try { Object returnValue = invocable.invoke(message, ex, handlerMethod); MethodParameter returnType = invocable.getReturnType(); if (void.class == returnType.getParameterType()) { return; } this.returnValueHandlers.handleReturnValue(returnValue, returnType, message); } catch (Throwable ex2) { logger.error("Error while processing handler method exception", ex2); } }