MessagePublishingErrorHandler is now BeanFactoryAware and therefore capable of creating a default BeanFactoryChannelResolver.

This commit is contained in:
Mark Fisher
2008-10-20 13:45:43 +00:00
parent b6bd0b30fc
commit 7124894646

View File

@@ -19,6 +19,8 @@ package org.springframework.integration.channel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.integration.core.Message;
import org.springframework.integration.core.MessageChannel;
import org.springframework.integration.core.MessagingException;
@@ -32,17 +34,20 @@ import org.springframework.util.Assert;
*
* @author Mark Fisher
*/
public class MessagePublishingErrorHandler implements ErrorHandler {
public class MessagePublishingErrorHandler implements ErrorHandler, BeanFactoryAware {
private final Log logger = LogFactory.getLog(this.getClass());
private final ChannelResolver channelResolver;
private volatile ChannelResolver channelResolver;
private volatile MessageChannel defaultErrorChannel;
private volatile long sendTimeout = 1000;
public MessagePublishingErrorHandler() {
}
public MessagePublishingErrorHandler(ChannelResolver channelResolver) {
Assert.notNull(channelResolver, "channelResolver must not be null");
this.channelResolver = channelResolver;
@@ -57,6 +62,13 @@ public class MessagePublishingErrorHandler implements ErrorHandler {
this.sendTimeout = sendTimeout;
}
public void setBeanFactory(BeanFactory beanFactory) {
Assert.notNull(beanFactory, "beanFactory must not be null");
if (this.channelResolver == null) {
this.channelResolver = new BeanFactoryChannelResolver(beanFactory);
}
}
public final void handle(Throwable t) {
Message<?> failedMessage = (t instanceof MessagingException) ?
((MessagingException) t).getFailedMessage() : null;