From b882bcf79ec5770e040b02b17c5cb96fd991a04c Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 29 Sep 2009 19:02:33 +0000 Subject: [PATCH] INT-28 Return value is now the default for MessagePublishingInterceptor. --- .../aop/MessagePublishingInterceptor.java | 49 ++++++++++--------- .../integration/aop/Publisher.java | 5 +- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/aop/MessagePublishingInterceptor.java b/org.springframework.integration/src/main/java/org/springframework/integration/aop/MessagePublishingInterceptor.java index 3725e9febd..c637677f49 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/aop/MessagePublishingInterceptor.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/aop/MessagePublishingInterceptor.java @@ -110,30 +110,31 @@ public class MessagePublishingInterceptor implements MethodInterceptor { private void publishMessage(Method method, EvaluationContext context) throws Exception { String payloadExpressionString = this.expressionSource.getPayloadExpression(method); - if (payloadExpressionString != null) { - Expression expression = this.parser.parseExpression(payloadExpressionString); - Object result = expression.getValue(context); - if (result != null) { - MessageBuilder builder = (result instanceof Message) - ? MessageBuilder.fromMessage((Message) result) - : MessageBuilder.withPayload(result); - Map headers = this.evaluateHeaders(method, context); - if (headers != null) { - builder.copyHeaders(headers); - } - Message message = builder.build(); - String channelName = this.expressionSource.getChannelName(method); - MessageChannel channel = null; - if (channelName != null) { - Assert.state(this.channelResolver != null, "ChannelResolver is required to resolve channel names."); - channel = this.channelResolver.resolveChannelName(channelName); - } - if (channel != null) { - this.channelTemplate.send(message, channel); - } - else { - this.channelTemplate.send(message); - } + if (!StringUtils.hasText(payloadExpressionString)) { + payloadExpressionString = "#" + this.expressionSource.getReturnValueName(method); + } + Expression expression = this.parser.parseExpression(payloadExpressionString); + Object result = expression.getValue(context); + if (result != null) { + MessageBuilder builder = (result instanceof Message) + ? MessageBuilder.fromMessage((Message) result) + : MessageBuilder.withPayload(result); + Map headers = this.evaluateHeaders(method, context); + if (headers != null) { + builder.copyHeaders(headers); + } + Message message = builder.build(); + String channelName = this.expressionSource.getChannelName(method); + MessageChannel channel = null; + if (channelName != null) { + Assert.state(this.channelResolver != null, "ChannelResolver is required to resolve channel names."); + channel = this.channelResolver.resolveChannelName(channelName); + } + if (channel != null) { + this.channelTemplate.send(message, channel); + } + else { + this.channelTemplate.send(message); } } } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/aop/Publisher.java b/org.springframework.integration/src/main/java/org/springframework/integration/aop/Publisher.java index c9399645b2..731293c762 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/aop/Publisher.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/aop/Publisher.java @@ -35,9 +35,10 @@ public @interface Publisher { /** * String representation of a Spel Expression to evaluate when creating the - * Message payload. Required. + * Message payload. The default will be empty, thereby causing the return + * value to be used as the payload. */ - String value(); + String value() default ""; /** * String representations of Spel Expressions to evaluate for adding any