diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionParser.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionParser.java
index 5057317f44..634c20e44a 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionParser.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionParser.java
@@ -57,7 +57,7 @@ public class XmppConnectionParser extends AbstractSingleBeanDefinitionParser {
Assert.hasText(serviceName, "'serviceName' is requuired if 'host' is not provided");
}
if (StringUtils.hasText(serviceName)){
- connectionConfigurationBuilder.addConstructorArgValue(port);
+ connectionConfigurationBuilder.addConstructorArgValue(serviceName);
}
for (String attribute : connectionFactoryAttributes) {
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, attribute);
diff --git a/spring-integration-xmpp/src/main/resources/org/springframework/integration/xmpp/config/spring-integration-xmpp-2.0.xsd b/spring-integration-xmpp/src/main/resources/org/springframework/integration/xmpp/config/spring-integration-xmpp-2.0.xsd
index fd0decd895..675bc63d63 100644
--- a/spring-integration-xmpp/src/main/resources/org/springframework/integration/xmpp/config/spring-integration-xmpp-2.0.xsd
+++ b/spring-integration-xmpp/src/main/resources/org/springframework/integration/xmpp/config/spring-integration-xmpp-2.0.xsd
@@ -42,8 +42,8 @@
-
-
+
+
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTest-complete.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTest-complete.xml
new file mode 100644
index 0000000000..58b091ed2c
--- /dev/null
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTest-complete.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java
index 602b7fe2dd..77424eded9 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java
@@ -42,8 +42,26 @@ public class XmppConnectionParserTests {
XmppConnectionFactoryBean xmppFb = ac.getBean("&connection", XmppConnectionFactoryBean.class);
assertEquals("happy.user", TestUtils.getPropertyValue(xmppFb, "user"));
assertEquals("blah", TestUtils.getPropertyValue(xmppFb, "password"));
+ assertEquals("Smack", TestUtils.getPropertyValue(xmppFb, "resource"));
+ assertEquals("accept_all", TestUtils.getPropertyValue(xmppFb, "subscriptionMode"));
ConnectionConfiguration configuration = (ConnectionConfiguration) TestUtils.getPropertyValue(connection, "configuration");
assertEquals("localhost", configuration.getHost());
assertEquals(5222, configuration.getPort());
}
+ @Test
+ public void testCompleteConfiguration(){
+ ApplicationContext ac = new ClassPathXmlApplicationContext("XmppConnectionParserTest-complete.xml", this.getClass());
+ XMPPConnection connection = ac.getBean("connection", XMPPConnection.class);
+ assertNull(connection.getServiceName());
+ assertFalse(connection.isConnected());
+ XmppConnectionFactoryBean xmppFb = ac.getBean("&connection", XmppConnectionFactoryBean.class);
+ assertEquals("happy.user", TestUtils.getPropertyValue(xmppFb, "user"));
+ assertEquals("blah", TestUtils.getPropertyValue(xmppFb, "password"));
+ assertEquals("SpringSource", TestUtils.getPropertyValue(xmppFb, "resource"));
+ assertEquals("reject_all", TestUtils.getPropertyValue(xmppFb, "subscriptionMode"));
+ ConnectionConfiguration configuration = (ConnectionConfiguration) TestUtils.getPropertyValue(connection, "configuration");
+ assertEquals("localhost", configuration.getHost());
+ assertEquals(6222, configuration.getPort());
+ assertEquals("foogle.com", configuration.getServiceName());
+ }
}