From 49a0a09a35a3d00ee9334b52de1f19f197dc9e80 Mon Sep 17 00:00:00 2001 From: Josh Long Date: Mon, 16 Aug 2010 08:03:13 +0000 Subject: [PATCH] Initial cut of the MetadataPersister support. Built two implementations - one for in-memory use cases and one for .properties-file based support. INT-1332 --- .../PropertiesBasedMetadataPersister.java | 100 ++++++++++++------ 1 file changed, 69 insertions(+), 31 deletions(-) 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