DefaultMessageEndpoint constructor now requires a MessageHandler. The endpoint no longer invokes Lifecycle methods on the MessageHandler.

This commit is contained in:
Mark Fisher
2008-04-16 19:14:26 +00:00
parent 9710edaa3c
commit a0072b3e66
9 changed files with 14 additions and 35 deletions

View File

@@ -51,7 +51,7 @@ public class FileTargetAdapterParser extends AbstractSingleBeanDefinitionParser
adapterDef.getConstructorArgumentValues().addGenericArgumentValue(element.getAttribute("directory"));
String adapterBeanName = parserContext.getReaderContext().generateBeanName(adapterDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(adapterDef, adapterBeanName));
builder.addPropertyReference("handler", adapterBeanName);
builder.addConstructorArgReference(adapterBeanName);
String channel = element.getAttribute("channel");
Subscription subscription = new Subscription(channel);
builder.addPropertyValue("subscription", subscription);

View File

@@ -61,7 +61,7 @@ public class HttpInvokerTargetAdapterParser extends AbstractSingleBeanDefinition
adapterDef.getConstructorArgumentValues().addGenericArgumentValue(url);
String adapterBeanName = parserContext.getReaderContext().generateBeanName(adapterDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(adapterDef, adapterBeanName));
builder.addPropertyReference("handler", adapterBeanName);
builder.addConstructorArgReference(adapterBeanName);
Subscription subscription = new Subscription(channel);
builder.addPropertyValue("subscription", subscription);
}

View File

@@ -37,8 +37,6 @@ import org.springframework.util.StringUtils;
*/
public class JmsTargetAdapterParser extends AbstractSingleBeanDefinitionParser {
private static final String HANDLER_PROPERTY = "handler";
private static final String SUBSCRIPTION_PROPERTY = "subscription";
@@ -89,7 +87,7 @@ public class JmsTargetAdapterParser extends AbstractSingleBeanDefinitionParser {
Subscription subscription = new Subscription(channel);
String adapterBeanName = parserContext.getReaderContext().generateBeanName(adapterDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(adapterDef, adapterBeanName));
builder.addPropertyReference(HANDLER_PROPERTY, adapterBeanName);
builder.addConstructorArgReference(adapterBeanName);
builder.addPropertyValue(SUBSCRIPTION_PROPERTY, subscription);
}

View File

@@ -84,7 +84,7 @@ public class MailTargetAdapterParser extends AbstractSingleBeanDefinitionParser
}
String adapterBeanName = parserContext.getReaderContext().generateBeanName(adapterDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(adapterDef, adapterBeanName));
builder.addPropertyReference("handler", adapterBeanName);
builder.addConstructorArgReference(adapterBeanName);
String channel = element.getAttribute("channel");
Subscription subscription = new Subscription(channel);
builder.addPropertyValue("subscription", subscription);

View File

@@ -64,7 +64,7 @@ public class RmiTargetAdapterParser extends AbstractSingleBeanDefinitionParser {
adapterDef.getConstructorArgumentValues().addGenericArgumentValue(url);
String adapterBeanName = parserContext.getReaderContext().generateBeanName(adapterDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(adapterDef, adapterBeanName));
builder.addPropertyReference("handler", adapterBeanName);
builder.addConstructorArgReference(adapterBeanName);
Subscription subscription = new Subscription(localChannel);
builder.addPropertyValue("subscription", subscription);
}

View File

@@ -105,8 +105,8 @@ public class ChannelAdapterParser implements BeanDefinitionParser {
subscriptionDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(channel));
String subscriptionBeanName = parserContext.getReaderContext().generateBeanName(subscriptionDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(subscriptionDef, subscriptionBeanName));
endpointDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(beanName));
endpointDef.getPropertyValues().addPropertyValue("subscription", new RuntimeBeanReference(subscriptionBeanName));
endpointDef.getPropertyValues().addPropertyValue("handler", new RuntimeBeanReference(beanName));
String endpointBeanName = parserContext.getReaderContext().generateBeanName(endpointDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(endpointDef, endpointBeanName));
}

View File

@@ -73,8 +73,6 @@ public class EndpointParser implements BeanDefinitionParser {
private static final String HANDLER_METHOD_ATTRIBUTE = "handler-method";
private static final String HANDLER_PROPERTY = "handler";
private static final String ERROR_HANDLER_ATTRIBUTE = "error-handler";
private static final String ERROR_HANDLER_PROPERTY = "errorHandler";
@@ -149,8 +147,7 @@ public class EndpointParser implements BeanDefinitionParser {
}
if (childHandlerRefs.size() > 0) {
if (childHandlerRefs.size() == 1) {
endpointDef.getPropertyValues().addPropertyValue(
HANDLER_PROPERTY, new RuntimeBeanReference(childHandlerRefs.get(0)));
endpointDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(childHandlerRefs.get(0)));
}
else {
RootBeanDefinition handlerChainDef = new RootBeanDefinition(MessageHandlerChain.class);
@@ -161,7 +158,7 @@ public class EndpointParser implements BeanDefinitionParser {
handlerChainDef.getPropertyValues().addPropertyValue(HANDLERS_PROPERTY, handlerList);
String chainBeanName = parserContext.getReaderContext().generateBeanName(handlerChainDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(handlerChainDef, chainBeanName));
endpointDef.getPropertyValues().addPropertyValue(HANDLER_PROPERTY, new RuntimeBeanReference(chainBeanName));
endpointDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(chainBeanName));
}
}
String handlerRef = element.getAttribute(HANDLER_REF_ATTRIBUTE);
@@ -173,10 +170,10 @@ public class EndpointParser implements BeanDefinitionParser {
String handlerMethod = element.getAttribute(HANDLER_METHOD_ATTRIBUTE);
if (StringUtils.hasText(handlerMethod)) {
String adapterBeanName = this.parseHandlerAdapter(handlerRef, handlerMethod, parserContext);
endpointDef.getPropertyValues().addPropertyValue(HANDLER_PROPERTY, new RuntimeBeanReference(adapterBeanName));
endpointDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(adapterBeanName));
}
else {
endpointDef.getPropertyValues().addPropertyValue(HANDLER_PROPERTY, new RuntimeBeanReference(handlerRef));
endpointDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(handlerRef));
}
}
String errorHandlerRef = element.getAttribute(ERROR_HANDLER_ATTRIBUTE);

View File

@@ -30,8 +30,6 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.Lifecycle;
import org.springframework.integration.ConfigurationException;
import org.springframework.integration.channel.ChannelRegistry;
import org.springframework.integration.channel.ChannelRegistryAware;
import org.springframework.integration.channel.MessageChannel;
@@ -84,10 +82,8 @@ public class DefaultMessageEndpoint implements MessageEndpoint, ChannelRegistryA
private volatile boolean running;
public DefaultMessageEndpoint() {
}
public DefaultMessageEndpoint(MessageHandler handler) {
Assert.notNull(handler, "handler must not be null");
this.handler = handler;
}
@@ -185,9 +181,6 @@ public class DefaultMessageEndpoint implements MessageEndpoint, ChannelRegistryA
}
public void afterPropertiesSet() {
if (this.handler == null) {
return;
}
if (this.handler instanceof ChannelRegistryAware) {
((ChannelRegistryAware) this.handler).setChannelRegistry(this.channelRegistry);
}
@@ -221,9 +214,6 @@ public class DefaultMessageEndpoint implements MessageEndpoint, ChannelRegistryA
if (!initialized) {
this.afterPropertiesSet();
}
if (this.handler instanceof Lifecycle) {
((Lifecycle) handler).start();
}
this.running = true;
}
@@ -231,16 +221,10 @@ public class DefaultMessageEndpoint implements MessageEndpoint, ChannelRegistryA
if (!this.isRunning()) {
return;
}
if (this.handler instanceof Lifecycle) {
((Lifecycle) handler).stop();
}
this.running = false;
}
public final Message<?> handle(Message<?> message) {
if (this.handler == null) {
throw new ConfigurationException("endpoint has no 'handler'");
}
if (logger.isDebugEnabled()) {
logger.debug("endpoint '" + this + "' handling message: " + message);
}
@@ -312,8 +296,8 @@ public class DefaultMessageEndpoint implements MessageEndpoint, ChannelRegistryA
logger.debug("endpoint '" + DefaultMessageEndpoint.this + "' replying to channel '" + replyChannel + "' with message: " + replyMessage);
}
if (!replyChannel.send(replyMessage, replyTimeout)) {
errorHandler.handle(new MessageDeliveryException(replyMessage,
"unable to send reply message within alloted timeout of " + replyTimeout + " milliseconds"));
throw new MessageDeliveryException(replyMessage,
"unable to send reply message within alloted timeout of " + replyTimeout + " milliseconds");
}
}
}

View File

@@ -67,7 +67,7 @@ public class WebServiceTargetAdapterParser extends AbstractSingleBeanDefinitionP
this.parseSimpleAdapter(uri, sourceExtractorRef);
String adapterBeanName = parserContext.getReaderContext().generateBeanName(adapterDef);
parserContext.registerBeanComponent(new BeanComponentDefinition(adapterDef, adapterBeanName));
builder.addPropertyReference("handler", adapterBeanName);
builder.addConstructorArgReference(adapterBeanName);
Subscription subscription = new Subscription(channel);
builder.addPropertyValue("subscription", subscription);
}