diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppMessageInboundEndpointParser.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppMessageInboundEndpointParser.java index 2542ff53ae..8b187c9858 100644 --- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppMessageInboundEndpointParser.java +++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppMessageInboundEndpointParser.java @@ -35,11 +35,6 @@ public class XmppMessageInboundEndpointParser extends AbstractSingleBeanDefiniti return "org.springframework.integration.xmpp.messages.XmppMessageDrivenEndpoint"; } - @Override - protected boolean shouldGenerateIdAsFallback() { - return true; - } - @Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { String connectionName = element.getAttribute("xmpp-connection"); diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppRosterEventInboundEndpointParser.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppRosterEventInboundEndpointParser.java index 8789072956..6c27c84142 100644 --- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppRosterEventInboundEndpointParser.java +++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppRosterEventInboundEndpointParser.java @@ -45,8 +45,7 @@ public class XmppRosterEventInboundEndpointParser extends AbstractSingleBeanDefi @Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { String connectionName = element.getAttribute("xmpp-connection"); - Assert.hasText(connectionName, "'xmpp-connection' must be defined"); - builder.addPropertyReference("xmppConnection", connectionName); + builder.addConstructorArgReference(connectionName); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "channel", "requestChannel"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "auto-startup"); } diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/presence/XmppRosterEventMessageDrivenEndpoint.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/presence/XmppRosterEventMessageDrivenEndpoint.java index 8aac117f33..40c4ae4aba 100644 --- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/presence/XmppRosterEventMessageDrivenEndpoint.java +++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/presence/XmppRosterEventMessageDrivenEndpoint.java @@ -111,22 +111,22 @@ public class XmppRosterEventMessageDrivenEndpoint extends AbstractEndpoint { * and forwards them to messaging bus */ class EventForwardingRosterListener implements RosterListener { - public void entriesAdded(final Collection entries) { + public void entriesAdded(Collection entries) { logger.debug("entries added: " + StringUtils.join(entries.iterator(), ",")); forwardRosterEventMessage(entries); } - public void entriesUpdated(final Collection entries) { + public void entriesUpdated(Collection entries) { logger.debug("entries updated: " + StringUtils.join(entries.iterator(), ",")); forwardRosterEventMessage(entries); } - public void entriesDeleted(final Collection entries) { + public void entriesDeleted(Collection entries) { logger.debug("entries deleted: " + StringUtils.join(entries.iterator(), ",")); forwardRosterEventMessage(entries); } - public void presenceChanged(final Presence presence) { + public void presenceChanged(Presence presence) { logger.debug("presence changed: " + ToStringBuilder.reflectionToString(presence)); forwardRosterEventMessage(presence); } diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppRosterEventMessageDrivenEndpointParserTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppRosterEventMessageDrivenEndpointParserTests-context.xml new file mode 100644 index 0000000000..ed31e1c71b --- /dev/null +++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppRosterEventMessageDrivenEndpointParserTests-context.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppRosterEventMessageDrivenEndpointParserTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppRosterEventMessageDrivenEndpointParserTests.java new file mode 100644 index 0000000000..dd9b58e58f --- /dev/null +++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppRosterEventMessageDrivenEndpointParserTests.java @@ -0,0 +1,32 @@ +/* + * 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.xmpp.config; + +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +/** + * @author Oleg Zhurakousky + * + */ +public class XmppRosterEventMessageDrivenEndpointParserTests { + + @Test + public void testXmppRosterEventMessageDrivenEndpointParser(){ + new ClassPathXmlApplicationContext("XmppRosterEventMessageDrivenEndpointParserTests-context.xml", this.getClass()); + // no assertion needed. THe fact that no exception was thrown satisfies this test + } +} diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundXmppEndpointTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundXmppEndpointTests-context.xml index c2d0a86fc0..0c6ffece36 100644 --- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundXmppEndpointTests-context.xml +++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundXmppEndpointTests-context.xml @@ -18,23 +18,23 @@ http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool-3.0.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd"> - - + + user="${user.1.login}" + password="${user.1.password}" + host="${user.1.host}" + service-name="${user.1.service}"/> + + diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundXmppRosterEventsEndpointTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundXmppRosterEventsEndpointTests-context.xml index 3a02802460..cb00b2b131 100644 --- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundXmppRosterEventsEndpointTests-context.xml +++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundXmppRosterEventsEndpointTests-context.xml @@ -19,7 +19,7 @@ - + - - - + + class="org.springframework.integration.xmpp.ignore.XmppMessageProducer" + p:recipient="${user.2.login}"/> - - + user="${user.1.login}" + password="${user.1.password}" + host="${user.1.host}" + service-name="${user.1.service}"/> diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundXmppEndpointTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundXmppEndpointTests.java index e631f0a8a6..5569e640f7 100644 --- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundXmppEndpointTests.java +++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundXmppEndpointTests.java @@ -35,7 +35,7 @@ public class OutboundXmppEndpointTests { @Test @Ignore public void run() throws Exception { - Thread.sleep(10 * 1000); + Thread.sleep(10 * 1000*100); } } diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/presence/XmppRosterEventMessageDrivenEndpointTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/presence/XmppRosterEventMessageDrivenEndpointTests.java index 47a08ed520..3b44c79e77 100644 --- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/presence/XmppRosterEventMessageDrivenEndpointTests.java +++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/presence/XmppRosterEventMessageDrivenEndpointTests.java @@ -20,7 +20,9 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; import org.jivesoftware.smack.Roster; @@ -81,7 +83,7 @@ public class XmppRosterEventMessageDrivenEndpointTests { } @Test - public void testPresenceChangeEvent(){ + public void testRosterPresenceChangeEvent(){ XMPPConnection connection = mock(XMPPConnection.class); Roster roster = mock(Roster.class); when(connection.getRoster()).thenReturn(roster); @@ -96,4 +98,21 @@ public class XmppRosterEventMessageDrivenEndpointTests { Message message = channel.receive(10); assertEquals(presence, message.getPayload()); } + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Test + public void testRosterEntriesEvents(){ + XMPPConnection connection = mock(XMPPConnection.class); + Roster roster = mock(Roster.class); + when(connection.getRoster()).thenReturn(roster); + XmppRosterEventMessageDrivenEndpoint rosterEndpoint = new XmppRosterEventMessageDrivenEndpoint(connection); + QueueChannel channel = new QueueChannel(); + rosterEndpoint.setRequestChannel(channel); + rosterEndpoint.afterPropertiesSet(); + rosterEndpoint.start(); + RosterListener rosterListener = (RosterListener) TestUtils.getPropertyValue(rosterEndpoint, "rosterListener"); + List entries = Arrays.asList(new String[]{"many", "moe", "jack"}); + rosterListener.entriesUpdated(entries); + Message message = channel.receive(10); + assertEquals(entries, message.getPayload()); + } } diff --git a/spring-integration-xmpp/src/test/java/test.properties b/spring-integration-xmpp/src/test/java/test.properties index 0aaf3b43a7..dbdaca6ebc 100644 --- a/spring-integration-xmpp/src/test/java/test.properties +++ b/spring-integration-xmpp/src/test/java/test.properties @@ -1,6 +1,6 @@ -user.2.login=user1@gmail.com +user.2.login=user2@gmail.com -user.1.login=user2@gmail.com -user.1.password=password +user.1.login=suser1@gmail.com +user.1.password=foo user.1.host=talk.google.com user.1.service=gmail.com \ No newline at end of file