From f5f1ad0bcde50db87a58136b344ddb23cdc8da5d Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Wed, 27 Oct 2010 14:07:26 -0400 Subject: [PATCH] ExpressionPayloadMessageProcessor now supports Expression instances as payloads in addition to Strings --- .../ExpressionPayloadMessageProcessor.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/control/ExpressionPayloadMessageProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/control/ExpressionPayloadMessageProcessor.java index e0c1e7c4e5..18c55ac2e5 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/control/ExpressionPayloadMessageProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/control/ExpressionPayloadMessageProcessor.java @@ -13,21 +13,33 @@ package org.springframework.integration.control; +import org.springframework.expression.Expression; import org.springframework.integration.Message; import org.springframework.integration.handler.AbstractMessageProcessor; -import org.springframework.util.Assert; /** + * A MessageProcessor implementation that expects an Expression or expressionString + * as the Message payload. When processing, it simply evaluates that expression. + * * @author Dave Syer + * @author Mark Fisher * @since 2.0 - * */ public class ExpressionPayloadMessageProcessor extends AbstractMessageProcessor { - + + /** + * Evaluates the Message payload expression. + * @throws IllegalArgumentException if the payload is not an Exception or String + */ public Object processMessage(Message message) { - Assert.state(message.getPayload() instanceof String, "Message payload must be a String expression"); - String expression = (String) message.getPayload(); - return evaluateExpression(expression, message); + Object expression = message.getPayload(); + if (expression instanceof Expression) { + return evaluateExpression((Expression) expression, message); + } + if (expression instanceof String) { + return evaluateExpression((String) expression, message); + } + throw new IllegalArgumentException("Message payload must be an Expression instance or an expression String."); } }