From 517eb654f39226111d1e5c22c9a6add4687a20e7 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 15 Jan 2008 22:14:02 +0000 Subject: [PATCH] Enabled auto-create for endpoint's defaultOutputChannel if necessary, and modified the EndpointParser to use channel names instead of RuntimeBeanReference. --- .../springframework/integration/bus/MessageBus.java | 13 ++++++++++++- .../integration/config/EndpointParser.java | 4 ++-- .../integration/endpoint/MessageEndpoint.java | 2 -- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/bus/MessageBus.java b/spring-integration-core/src/main/java/org/springframework/integration/bus/MessageBus.java index ec1911a8da..d3a6037232 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/bus/MessageBus.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/bus/MessageBus.java @@ -244,12 +244,23 @@ public class MessageBus implements ChannelRegistry, ApplicationContextAware, Lif "'. Consider enabling the 'autoCreateChannels' option for the message bus."); } if (this.logger.isInfoEnabled()) { - logger.info("auto-creating channel '" + channel.getName() + "'"); + logger.info("auto-creating channel '" + channelName + "'"); } channel = new SimpleChannel(); this.registerChannel(channelName, channel); } } + if (endpoint instanceof DefaultMessageEndpoint) { + String outputChannelName = ((DefaultMessageEndpoint) endpoint).getDefaultOutputChannelName(); + if (outputChannelName != null && this.lookupChannel(outputChannelName) == null) { + if (!this.autoCreateChannels) { + throw new MessagingConfigurationException("Unknown channel '" + outputChannelName + + "' configured as 'default-output' for endpoint '" + endpoint.getName() + + "'. Consider enabling the 'autoCreateChannels' option for the message bus."); + } + this.registerChannel(outputChannelName, new SimpleChannel()); + } + } this.registerWithDispatcher(channel, endpoint, subscription.getSchedule(), endpoint.getConcurrencyPolicy()); if (logger.isInfoEnabled()) { logger.info("activated subscription to channel '" + channel.getName() + diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/EndpointParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/EndpointParser.java index 3d5e4de996..527c12b130 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/EndpointParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/EndpointParser.java @@ -52,7 +52,7 @@ public class EndpointParser implements BeanDefinitionParser { private static final String SUBSCRIPTION_PROPERTY = "subscription"; - private static final String CHANNEL_PROPERTY = "channel"; + private static final String CHANNEL_NAME_PROPERTY = "channelName"; private static final String DEFAULT_OUTPUT_CHANNEL_ATTRIBUTE = "default-output-channel"; @@ -95,7 +95,7 @@ public class EndpointParser implements BeanDefinitionParser { String inputChannel = element.getAttribute(INPUT_CHANNEL_ATTRIBUTE); RootBeanDefinition subscriptionDef = new RootBeanDefinition(Subscription.class); if (StringUtils.hasText(inputChannel)) { - subscriptionDef.getPropertyValues().addPropertyValue(CHANNEL_PROPERTY, new RuntimeBeanReference(inputChannel)); + subscriptionDef.getPropertyValues().addPropertyValue(CHANNEL_NAME_PROPERTY, inputChannel); } String defaultOutputChannel = element.getAttribute(DEFAULT_OUTPUT_CHANNEL_ATTRIBUTE); if (StringUtils.hasText(defaultOutputChannel)) { diff --git a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/MessageEndpoint.java b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/MessageEndpoint.java index f5ecfaf813..7627162581 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/MessageEndpoint.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/MessageEndpoint.java @@ -28,8 +28,6 @@ public interface MessageEndpoint extends MessageHandler { String getName(); - MessageHandler getHandler(); - Subscription getSubscription(); ConcurrencyPolicy getConcurrencyPolicy();