From 2857e7809c87fbd59cf8e276aff769dcc6fab8a5 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Wed, 22 May 2013 13:56:08 -0400 Subject: [PATCH] INT-3028 Fix Tailing Factory Bean - Needs to implement SmartLifecycle and delegate to the adapter - Needs to implement ApplicationEventPublisherAware and configure the adapter - Don't set TaskExecutor if null --- ...eTailInboundChannelAdapterFactoryBean.java | 64 ++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileTailInboundChannelAdapterFactoryBean.java b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileTailInboundChannelAdapterFactoryBean.java index da092a52fe..4e50804d63 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileTailInboundChannelAdapterFactoryBean.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileTailInboundChannelAdapterFactoryBean.java @@ -19,6 +19,9 @@ import java.io.File; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.config.AbstractFactoryBean; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.ApplicationEventPublisherAware; +import org.springframework.context.SmartLifecycle; import org.springframework.core.task.TaskExecutor; import org.springframework.integration.MessageChannel; import org.springframework.integration.file.tail.ApacheCommonsFileTailingMessageProducer; @@ -33,7 +36,7 @@ import org.springframework.util.StringUtils; * */ public class FileTailInboundChannelAdapterFactoryBean extends AbstractFactoryBean - implements BeanNameAware { + implements BeanNameAware, SmartLifecycle, ApplicationEventPublisherAware { private volatile String nativeOptions; @@ -61,6 +64,8 @@ public class FileTailInboundChannelAdapterFactoryBean extends AbstractFactoryBea private volatile Integer phase; + private volatile ApplicationEventPublisher applicationEventPublisher; + public void setNativeOptions(String nativeOptions) { this.nativeOptions = nativeOptions; } @@ -110,6 +115,56 @@ public class FileTailInboundChannelAdapterFactoryBean extends AbstractFactoryBea this.phase = phase; } + @Override + public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { + this.applicationEventPublisher = applicationEventPublisher; + } + + @Override + public void start() { + if (this.adapter != null) { + this.adapter.start(); + } + } + + @Override + public void stop() { + if (this.adapter != null) { + this.adapter.stop(); + } + } + + @Override + public boolean isRunning() { + if (this.adapter != null) { + return this.adapter.isRunning(); + } + return false; + } + + @Override + public int getPhase() { + if (this.adapter != null) { + return this.adapter.getPhase(); + } + return 0; + } + + @Override + public boolean isAutoStartup() { + if (this.adapter != null) { + return this.adapter.isAutoStartup(); + } + return false; + } + + @Override + public void stop(Runnable callback) { + if (this.adapter != null) { + this.adapter.stop(callback); + } + } + @Override public Class getObjectType() { return this.adapter == null ? FileTailingMessageProducerSupport.class : this.adapter.getClass(); @@ -140,7 +195,9 @@ public class FileTailInboundChannelAdapterFactoryBean extends AbstractFactoryBea } } adapter.setFile(this.file); - adapter.setTaskExecutor(this.taskExecutor); + if (this.taskExecutor != null) { + adapter.setTaskExecutor(this.taskExecutor); + } if (this.taskScheduler != null) { adapter.setTaskScheduler(this.taskScheduler); } @@ -155,6 +212,9 @@ public class FileTailInboundChannelAdapterFactoryBean extends AbstractFactoryBea if (this.phase != null) { adapter.setPhase(this.phase); } + if (this.applicationEventPublisher != null) { + adapter.setApplicationEventPublisher(this.applicationEventPublisher); + } adapter.afterPropertiesSet(); this.adapter = adapter; return adapter;