diff --git a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/metadata/PropertiesBasedMetadataPersister.java b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/metadata/PropertiesBasedMetadataPersister.java index 51a8ea1e1c..0a939fcf84 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/metadata/PropertiesBasedMetadataPersister.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/metadata/PropertiesBasedMetadataPersister.java @@ -1,29 +1,21 @@ package org.springframework.integration.endpoint.metadata; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.config.PropertiesFactoryBean; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; -import org.springframework.integration.context.IntegrationContextUtils; - -import org.springframework.scheduling.TaskScheduler; - +import org.springframework.core.task.SimpleAsyncTaskExecutor; import org.springframework.util.Assert; import java.io.File; import java.io.FileWriter; import java.io.IOException; -import java.util.Date; -import java.util.Properties; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.ConcurrentSkipListSet; +import java.util.*; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; /** @@ -34,7 +26,12 @@ import java.util.concurrent.ConcurrentSkipListSet; * * @author Josh Long */ -public class PropertiesBasedMetadataPersister implements MetadataPersister, InitializingBean, BeanFactoryAware { +public class PropertiesBasedMetadataPersister implements MetadataPersister, InitializingBean { + /** + * Used to queue the writes asynchronously + */ + private Executor executor; + /** * Used to encapsulate acquisition of a {@link java.util.Properties} instance if it's prefered that we handled it on the client's behalf */ @@ -55,10 +52,13 @@ public class PropertiesBasedMetadataPersister implements MetadataPersister bootstrapResources = new ConcurrentSkipListSet(); + private Set bootstrapResources = new HashSet(); + private volatile File cachedLocationOfPropertiesFile; public PropertiesBasedMetadataPersister(Resource ultimateResourceToWhichToWriteFile) { - this.locationOfPropertiesOnDisk = ultimateResourceToWhichToWriteFile; + setLocationOfPropertiesOnDisk(ultimateResourceToWhichToWriteFile); } + @SuppressWarnings("unused") public PropertiesBasedMetadataPersister(String uniqueName) { this.uniqueName = uniqueName; } + @SuppressWarnings("unused") public PropertiesBasedMetadataPersister() { } + @SuppressWarnings("unused") + public void setExecutor(Executor executor) { + this.executor = executor; + } + public void setLocationOfPropertiesOnDisk(Resource locationOfPropertiesOnDisk) { this.locationOfPropertiesOnDisk = locationOfPropertiesOnDisk; } @@ -104,6 +111,7 @@ public class PropertiesBasedMetadataPersister implements MetadataPersister