From bf819556864204cbb89514c1f8a52a2fd40242fc Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Sun, 17 Oct 2010 22:57:11 -0400 Subject: [PATCH] INT-786, added namespace support for metadata-support strategy and tests --- .../FeedMessageSourceBeanDefinitionParser.java | 6 ++++++ .../feed/config/spring-integration-feed-2.0.xsd | 9 +++++++++ .../feed/FeedEntryReaderMessageSourceTests.java | 5 +++-- ...urceBeanDefinitionParserTests-file-context.xml | 6 +++++- ...eedMessageSourceBeanDefinitionParserTests.java | 15 ++++++++++++++- 5 files changed, 37 insertions(+), 4 deletions(-) diff --git a/spring-integration-feed/src/main/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParser.java b/spring-integration-feed/src/main/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParser.java index a80a291248..d15f0f0dbc 100644 --- a/spring-integration-feed/src/main/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParser.java +++ b/spring-integration-feed/src/main/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParser.java @@ -20,6 +20,7 @@ import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.integration.config.xml.AbstractPollingInboundChannelAdapterParser; import org.springframework.integration.config.xml.IntegrationNamespaceUtils; +import org.springframework.util.StringUtils; import org.w3c.dom.Element; /** @@ -40,6 +41,11 @@ public class FeedMessageSourceBeanDefinitionParser extends AbstractPollingInboun BeanDefinitionBuilder.genericBeanDefinition("org.springframework.integration.feed.FeedReaderMessageSource"); feedBuilder.addConstructorArgValue(element.getAttribute("feedUrl")); + String metadataStoreStrategy = element.getAttribute("metadata-store"); + if (StringUtils.hasText(metadataStoreStrategy)){ + feedEntryBuilder.addPropertyReference("metadataStore", metadataStoreStrategy); + } + feedEntryBuilder.addConstructorArgValue(feedBuilder.getBeanDefinition()); return BeanDefinitionReaderUtils.registerWithGeneratedName(feedEntryBuilder.getBeanDefinition(), parserContext.getRegistry()); diff --git a/spring-integration-feed/src/main/resources/org/springframework/integration/feed/config/spring-integration-feed-2.0.xsd b/spring-integration-feed/src/main/resources/org/springframework/integration/feed/config/spring-integration-feed-2.0.xsd index 9e62fbf074..5486f200bf 100644 --- a/spring-integration-feed/src/main/resources/org/springframework/integration/feed/config/spring-integration-feed-2.0.xsd +++ b/spring-integration-feed/src/main/resources/org/springframework/integration/feed/config/spring-integration-feed-2.0.xsd @@ -37,6 +37,15 @@ + + + + + + + + + diff --git a/spring-integration-feed/src/test/java/org/springframework/integration/feed/FeedEntryReaderMessageSourceTests.java b/spring-integration-feed/src/test/java/org/springframework/integration/feed/FeedEntryReaderMessageSourceTests.java index 202e709c97..2744dc58f8 100644 --- a/spring-integration-feed/src/test/java/org/springframework/integration/feed/FeedEntryReaderMessageSourceTests.java +++ b/spring-integration-feed/src/test/java/org/springframework/integration/feed/FeedEntryReaderMessageSourceTests.java @@ -26,10 +26,12 @@ import java.net.URL; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Properties; import org.junit.Before; import org.junit.Test; import org.springframework.integration.Message; +import org.springframework.integration.context.metadata.MetadataStore; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; @@ -162,6 +164,5 @@ public class FeedEntryReaderMessageSourceTests { assertEquals("Spring Integration adapters", entry3.getTitle().trim()); assertEquals(1272044098000L, entry3.getPublishedDate().getTime()); - } - + } } diff --git a/spring-integration-feed/src/test/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParserTests-file-context.xml b/spring-integration-feed/src/test/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParserTests-file-context.xml index 215b8fa547..52d65a5959 100644 --- a/spring-integration-feed/src/test/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParserTests-file-context.xml +++ b/spring-integration-feed/src/test/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParserTests-file-context.xml @@ -7,7 +7,10 @@ http://www.springframework.org/schema/integration/feed http://www.springframework.org/schema/integration/feed/spring-integration-feed-2.0.xsd"> - @@ -16,4 +19,5 @@ + \ No newline at end of file diff --git a/spring-integration-feed/src/test/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParserTests.java b/spring-integration-feed/src/test/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParserTests.java index 98df8c90b5..e35e6daff9 100644 --- a/spring-integration-feed/src/test/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParserTests.java +++ b/spring-integration-feed/src/test/java/org/springframework/integration/feed/config/FeedMessageSourceBeanDefinitionParserTests.java @@ -36,6 +36,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.integration.Message; import org.springframework.integration.MessagingException; import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.context.metadata.MetadataStore; import org.springframework.integration.core.MessageHandler; import org.springframework.integration.endpoint.SourcePollingChannelAdapter; import org.springframework.integration.feed.FeedEntryReaderMessageSource; @@ -63,11 +64,13 @@ public class FeedMessageSourceBeanDefinitionParserTests { } @Test - public void validateSuccessfullConfiguration(){ + public void validateSuccessfullConfigurationWithCustomMetastore(){ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("FeedMessageSourceBeanDefinitionParserTests-file-context.xml", this.getClass()); SourcePollingChannelAdapter adapter = context.getBean("feedAdapter", SourcePollingChannelAdapter.class); FeedEntryReaderMessageSource source = (FeedEntryReaderMessageSource) TestUtils.getPropertyValue(adapter, "source"); + MetadataStore metaStore = (MetadataStore) TestUtils.getPropertyValue(source, "metadataStore"); + assertTrue(metaStore instanceof SampleMetadataStore); FeedReaderMessageSource feedReaderMessageSource = (FeedReaderMessageSource) TestUtils.getPropertyValue(source, "feedReaderMessageSource"); AbstractFeedFetcher fetcher = (AbstractFeedFetcher) TestUtils.getPropertyValue(feedReaderMessageSource, "fetcher"); assertTrue(fetcher instanceof FileUrlFeedFetcher); @@ -166,4 +169,14 @@ public class FeedMessageSourceBeanDefinitionParserTests { latch.countDown(); } } + + public static class SampleMetadataStore implements MetadataStore{ + + public void write(Properties metadata) { + } + + public Properties load() { + return new Properties(); + } + } }