diff --git a/spring-integration-twitter/pom.xml b/spring-integration-twitter/pom.xml index 4f7a070454..14768e6022 100644 --- a/spring-integration-twitter/pom.xml +++ b/spring-integration-twitter/pom.xml @@ -77,6 +77,12 @@ ${project.version} compile + + org.springframework.integration + spring-integration-test + ${project.version} + compile + commons-lang commons-lang diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterReceivingMessageSourceParser.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterReceivingMessageSourceParser.java index d694620ad0..ad2f7c9185 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterReceivingMessageSourceParser.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/TwitterReceivingMessageSourceParser.java @@ -41,19 +41,20 @@ public class TwitterReceivingMessageSourceParser extends AbstractPollingInboundC String elementName = element.getLocalName().trim(); String className = null; if ("inbound-update-channel-adapter".equals(elementName)) { - className = BASE_PACKAGE + ".inbound.TimelineUpdateMessageSource"; + className = BASE_PACKAGE + ".inbound.TimelineUpdateReceivingMessageSource"; } else if ("inbound-dm-channel-adapter".equals(elementName)) { - className = BASE_PACKAGE + ".inbound.DirectMessageMessageSource"; + className = BASE_PACKAGE + ".inbound.DirectMessageReceivingMessageSource"; } else if ("inbound-mention-channel-adapter".equals(elementName)) { - className = BASE_PACKAGE + ".inbound.MentionMessageSource"; + className = BASE_PACKAGE + ".inbound.MentionReceivingMessageSource"; } else { parserContext.getReaderContext().error("element '" + elementName + "' is not supported by this parser.", element); } BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(className); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "twitter-connection", "configuration"); + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "auto-startup"); String name = BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry()); return new RuntimeBeanReference(name); } diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/AbstractTwitterMessageSource.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/AbstractTwitterMessageSource.java index 7343c429a8..d927bb4738 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/AbstractTwitterMessageSource.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/AbstractTwitterMessageSource.java @@ -99,8 +99,6 @@ public abstract class AbstractTwitterMessageSource extends AbstractEndpoint protected void onInit() throws Exception{ super.onInit(); Assert.notNull(this.configuration, "'configuration' can't be null"); - this.twitter = this.configuration.getTwitter(); - Assert.notNull(this.twitter, "'twitter' instance can't be null"); if (this.metadataStore == null) { // first try to look for a 'messageStore' in the context BeanFactory beanFactory = this.getBeanFactory(); @@ -148,6 +146,8 @@ public abstract class AbstractTwitterMessageSource extends AbstractEndpoint @Override protected void doStart(){ + this.twitter = this.configuration.getTwitter(); + Assert.notNull(this.twitter, "'twitter' instance can't be null"); historyWritingPostProcessor.setTrackableComponent(this); RateLimitStatusTrigger trigger = new RateLimitStatusTrigger(this.twitter); Runnable apiCallback = this.getApiCallback(); diff --git a/spring-integration-twitter/src/main/resources/org/springframework/integration/twitter/config/spring-integration-twitter-2.0.xsd b/spring-integration-twitter/src/main/resources/org/springframework/integration/twitter/config/spring-integration-twitter-2.0.xsd index 6ee48d41e3..8c124c2bcf 100644 --- a/spring-integration-twitter/src/main/resources/org/springframework/integration/twitter/config/spring-integration-twitter-2.0.xsd +++ b/spring-integration-twitter/src/main/resources/org/springframework/integration/twitter/config/spring-integration-twitter-2.0.xsd @@ -1,20 +1,4 @@ - - - @@ -60,6 +43,7 @@ + @@ -78,8 +62,6 @@ - @@ -103,6 +85,7 @@ + @@ -112,8 +95,6 @@ - @@ -138,6 +119,7 @@ + diff --git a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParser-context.xml b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParser-context.xml new file mode 100644 index 0000000000..2657da899a --- /dev/null +++ b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParser-context.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParserTests.java b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParserTests.java new file mode 100644 index 0000000000..69d34522df --- /dev/null +++ b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParserTests.java @@ -0,0 +1,48 @@ +/* + * Copyright 2002-2010 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.integration.twitter.config; + +import static junit.framework.Assert.assertFalse; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.endpoint.SourcePollingChannelAdapter; +import org.springframework.integration.test.util.TestUtils; +import org.springframework.integration.twitter.inbound.AbstractTwitterMessageSource; + +/** + * @author Oleg Zhurakousky + * + */ +public class TestReceivingMessageSourceParserTests { + + @Test + public void testRecievingAdapterConfigurationAutoStartup(){ + ApplicationContext ac = new ClassPathXmlApplicationContext("TestReceivingMessageSourceParser-context.xml", this.getClass()); + SourcePollingChannelAdapter spca = ac.getBean("mentionAdapter", SourcePollingChannelAdapter.class); + AbstractTwitterMessageSource ms = (AbstractTwitterMessageSource) TestUtils.getPropertyValue(spca, "source"); + assertFalse(ms.isAutoStartup()); + + spca = ac.getBean("dmAdapter", SourcePollingChannelAdapter.class); + ms = (AbstractTwitterMessageSource) TestUtils.getPropertyValue(spca, "source"); + assertFalse(ms.isAutoStartup()); + + spca = ac.getBean("updateAdapter", SourcePollingChannelAdapter.class); + ms = (AbstractTwitterMessageSource) TestUtils.getPropertyValue(spca, "source"); + assertFalse(ms.isAutoStartup()); + } +} diff --git a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingUsingNamespace-context.xml b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingUsingNamespace-context.xml index a17c20ebd5..36e2552b78 100644 --- a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingUsingNamespace-context.xml +++ b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingUsingNamespace-context.xml @@ -38,10 +38,10 @@ - - - - + + + +