INT-1583 if received event has a Message as its source, it will be passed as-is

This commit is contained in:
Mark Fisher
2010-11-03 12:56:17 -04:00
parent 6cc758eefc
commit d8ca51abc2
2 changed files with 47 additions and 3 deletions

View File

@@ -24,6 +24,7 @@ import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ApplicationContextEvent;
import org.springframework.expression.Expression;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.integration.Message;
import org.springframework.integration.endpoint.MessageProducerSupport;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.util.Assert;
@@ -105,8 +106,13 @@ public class ApplicationEventListeningMessageProducer extends MessageProducerSup
}
private void sendEventAsMessage(ApplicationEvent event) {
Object payload = (this.payloadExpression != null) ? this.payloadExpression.getValue(event) : event;
this.sendMessage(MessageBuilder.withPayload(payload).build());
if (event.getSource() instanceof Message<?>) {
this.sendMessage((Message<?>) event.getSource());
}
else {
Object payload = (this.payloadExpression != null) ? this.payloadExpression.getValue(event) : event;
this.sendMessage(MessageBuilder.withPayload(payload).build());
}
}
}