diff --git a/build.gradle b/build.gradle
index 6139090eb2..e95e796101 100644
--- a/build.gradle
+++ b/build.gradle
@@ -129,7 +129,7 @@ subprojects { subproject ->
slf4jVersion = "1.7.8"
tomcatVersion = "8.0.18"
smack3Version = '3.2.1'
- smackVersion = '4.0.6'
+ smackVersion = '4.1.5'
springAmqpVersion = project.hasProperty('springAmqpVersion') ? project.springAmqpVersion : '1.5.2.RELEASE'
// springCloudClusterVersion = '1.0.0.BUILD-SNAPSHOT'
springDataJpaVersion = '1.8.2.RELEASE'
@@ -689,11 +689,10 @@ project('spring-integration-xmpp') {
description = 'Spring Integration XMPP Support'
dependencies {
compile project(":spring-integration-core")
- compile("javax.activation:activation:$javaxActivationVersion", optional)
compile "org.igniterealtime.smack:smack-tcp:$smackVersion"
- compile "org.igniterealtime.smack:smack-resolver-javax:$smackVersion"
+ compile "org.igniterealtime.smack:smack-java7:$smackVersion"
compile "org.igniterealtime.smack:smack-extensions:$smackVersion"
- compile "org.springframework:spring-context-support:$springVersion"
+
testCompile project(":spring-integration-stream")
}
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/AbstractXmppInboundChannelAdapterParser.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/AbstractXmppInboundChannelAdapterParser.java
index 373fc51e9d..4c76fbaadc 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/AbstractXmppInboundChannelAdapterParser.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/AbstractXmppInboundChannelAdapterParser.java
@@ -48,6 +48,7 @@ public abstract class AbstractXmppInboundChannelAdapterParser extends AbstractCh
protected abstract String getBeanClassName(Element element);
+ @Override
protected AbstractBeanDefinition doParse(Element element, ParserContext parserContext, String channelName) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(getBeanClassName(element));
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/AbstractXmppOutboundChannelAdapterParser.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/AbstractXmppOutboundChannelAdapterParser.java
index 7ff0b2a73d..19a176a488 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/AbstractXmppOutboundChannelAdapterParser.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/AbstractXmppOutboundChannelAdapterParser.java
@@ -16,6 +16,8 @@
package org.springframework.integration.xmpp.config;
+import org.w3c.dom.Element;
+
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
@@ -25,22 +27,20 @@ import org.springframework.integration.config.xml.IntegrationNamespaceUtils;
import org.springframework.integration.xmpp.support.DefaultXmppHeaderMapper;
import org.springframework.util.StringUtils;
-import org.w3c.dom.Element;
-
/**
* Base class of XMPP outbound parsers
- *
+ *
* @author Oleg Zhurakousky
* @since 2.0.1
*/
public abstract class AbstractXmppOutboundChannelAdapterParser extends AbstractOutboundChannelAdapterParser {
-
+
@Override
protected AbstractBeanDefinition parseConsumer(Element element, ParserContext parserContext) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(this.getHandlerClassName());
-
+
IntegrationNamespaceUtils.configureHeaderMapper(element, builder, parserContext, DefaultXmppHeaderMapper.class, null);
-
+
String connectionName = element.getAttribute("xmpp-connection");
if (StringUtils.hasText(connectionName)){
builder.addConstructorArgReference(connectionName);
@@ -53,9 +53,9 @@ public abstract class AbstractXmppOutboundChannelAdapterParser extends AbstractO
"'xmpp-connection' attribute or have default XMPP connection bean registered under the name 'xmppConnection'" +
"(e.g., ). If 'id' is not provided the default will be 'xmppConnection'.");
}
-
+
return builder.getBeanDefinition();
}
-
+
protected abstract String getHandlerClassName();
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParser.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParser.java
index bd59b37b15..d0c2f14117 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParser.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParser.java
@@ -24,7 +24,7 @@ import org.springframework.integration.config.xml.IntegrationNamespaceUtils;
/**
* Parser for the XMPP 'inbound-channel-adapter' element.
- *
+ *
* @author Josh Long
* @author Oleg Zhurakousky
* @since 2.0
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParser.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParser.java
index c69a8c1fbe..774e392b65 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParser.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParser.java
@@ -19,7 +19,7 @@ package org.springframework.integration.xmpp.config;
/**
* Parser for the XMPP 'outbound-channel-adapter' element
- *
+ *
* @author Oleg Zhurakousky
* @since 2.0
*/
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParser.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParser.java
index 9b21702677..3c9643e03f 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParser.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParser.java
@@ -20,7 +20,7 @@ import org.w3c.dom.Element;
/**
* Parser for 'xmpp:presence-inbound-channel-adapter' element.
- *
+ *
* @author Josh Long
* @author Oleg Zhurakousky
* @since 2.0
@@ -31,4 +31,5 @@ public class PresenceInboundChannelAdapterParser extends AbstractXmppInboundChan
protected String getBeanClassName(Element element) {
return "org.springframework.integration.xmpp.inbound.PresenceListeningEndpoint";
}
+
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParser.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParser.java
index aff8727702..6a085a7053 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParser.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParser.java
@@ -19,7 +19,7 @@ package org.springframework.integration.xmpp.config;
/**
* Parser for 'xmpp:presence-outbound-channel-adapter' element
- *
+ *
* @author Oleg Zhurakousky
* @since 2.0
*/
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java
index 07ff32d15c..feb5706c4e 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -16,12 +16,13 @@
package org.springframework.integration.xmpp.config;
-import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.ConnectionListener;
-import org.jivesoftware.smack.Roster;
-import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.roster.Roster;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
+import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
+import org.jxmpp.util.XmppStringUtils;
+
import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.beans.factory.config.AbstractFactoryBean;
import org.springframework.context.SmartLifecycle;
@@ -29,46 +30,56 @@ import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
- * This class configures an {@link org.jivesoftware.smack.XMPPConnection} object.
+ * This class configures an {@link XMPPTCPConnection} object.
* This object is used for all scenarios to talk to a Smack server.
*
* @author Josh Long
* @author Mark Fisher
* @author Oleg Zhurakousky
* @author Florian Schmaus
+ * @author Artem Bilan
*
- * @see org.jivesoftware.smack.XMPPConnection
+ * @see XMPPTCPConnection
* @since 2.0
*/
-public class XmppConnectionFactoryBean extends AbstractFactoryBean implements SmartLifecycle{
+public class XmppConnectionFactoryBean extends AbstractFactoryBean implements SmartLifecycle {
- private final ConnectionConfiguration connectionConfiguration;
+ private final XMPPTCPConnectionConfiguration connectionConfiguration;
- private volatile String resource = null; // server will generate resource if not provided
+ private final Object lifecycleMonitor = new Object();
+
+ private volatile String resource; // server will generate resource if not provided
private volatile String user;
private volatile String password;
- private volatile String subscriptionMode = "accept_all";
+ private volatile String serviceName;
- private volatile XMPPConnection connection;
+ private volatile String host;
+
+ private volatile int port = 5222;
+
+ private volatile Roster.SubscriptionMode subscriptionMode = Roster.getDefaultSubscriptionMode();
private volatile boolean autoStartup = true;
private volatile int phase = Integer.MIN_VALUE;
- private final Object lifecycleMonitor = new Object();
-
private volatile boolean running;
+ private volatile XMPPTCPConnection connection;
- public XmppConnectionFactoryBean(ConnectionConfiguration connectionConfiguration) {
+
+ public XmppConnectionFactoryBean() {
+ this.connectionConfiguration = null;
+ }
+
+ public XmppConnectionFactoryBean(XMPPTCPConnectionConfiguration connectionConfiguration) {
Assert.notNull(connectionConfiguration, "'connectionConfiguration' must not be null");
this.connectionConfiguration = connectionConfiguration;
}
-
public void setAutoStartup(boolean autoStartup) {
this.autoStartup = autoStartup;
}
@@ -77,10 +88,6 @@ public class XmppConnectionFactoryBean extends AbstractFactoryBean getObjectType() {
return XMPPConnection.class;
@@ -100,7 +123,24 @@ public class XmppConnectionFactoryBean extends AbstractFactoryBean getBeanClass(Element element) {
+ return XmppConnectionFactoryBean.class;
}
@Override
@@ -49,27 +45,18 @@ public class XmppConnectionParser extends AbstractSingleBeanDefinitionParser {
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
String serviceName = element.getAttribute("service-name");
- String host = element.getAttribute("host");
- String port = element.getAttribute("port");
- BeanDefinitionBuilder connectionConfigurationBuilder =
- BeanDefinitionBuilder.genericBeanDefinition("org.jivesoftware.smack.ConnectionConfiguration");
- if (StringUtils.hasText(host)) {
- Assert.hasLength(port, "Port must be provided if 'host' is specified");
- connectionConfigurationBuilder.addConstructorArgValue(host);
- connectionConfigurationBuilder.addConstructorArgValue(port);
+ String user = element.getAttribute("user");
+
+ if (!StringUtils.hasText(serviceName) && !StringUtils.hasText(user)) {
+ parserContext.getReaderContext().error("One of 'service-name' or 'user' attributes is required", element);
}
- else {
- Assert.hasText(serviceName, "'serviceName' is requuired if 'host' is not provided");
- }
- if (StringUtils.hasText(serviceName)){
- connectionConfigurationBuilder.addConstructorArgValue(serviceName);
- }
- for (String attribute : connectionFactoryAttributes) {
+
+ String[] attributes = {"user", "password", "resource", "subscription-mode", "host", "port", "service-name",
+ IntegrationNamespaceUtils.AUTO_STARTUP, IntegrationNamespaceUtils.PHASE};
+
+ for (String attribute : attributes) {
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, attribute);
}
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, IntegrationNamespaceUtils.AUTO_STARTUP);
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, IntegrationNamespaceUtils.PHASE);
- builder.addConstructorArgValue(connectionConfigurationBuilder.getBeanDefinition());
}
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppNamespaceHandler.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppNamespaceHandler.java
index 8b3eaab265..882ee2b766 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppNamespaceHandler.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppNamespaceHandler.java
@@ -27,9 +27,10 @@ import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
* @since 2.0
*/
public class XmppNamespaceHandler extends NamespaceHandlerSupport {
-
+
public final static String XMPP_CONNECTION_BEAN_NAME = "xmppConnection";
+ @Override
public void init() {
// connection
registerBeanDefinitionParser("xmpp-connection", new XmppConnectionParser());
@@ -44,4 +45,5 @@ public class XmppNamespaceHandler extends NamespaceHandlerSupport {
registerBeanDefinitionParser("header-enricher", new XmppHeaderEnricherParser());
}
+
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/AbstractXmppConnectionAwareEndpoint.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/AbstractXmppConnectionAwareEndpoint.java
index b4d20e37fa..5f5bfb258a 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/AbstractXmppConnectionAwareEndpoint.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/AbstractXmppConnectionAwareEndpoint.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2010 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -25,6 +25,7 @@ import org.springframework.util.Assert;
/**
* @author Oleg Zhurakousky
* @author Mark Fisher
+ * @author Artem Bilan
* @since 2.0
*/
public abstract class AbstractXmppConnectionAwareEndpoint extends MessageProducerSupport {
@@ -49,8 +50,9 @@ public abstract class AbstractXmppConnectionAwareEndpoint extends MessageProduce
if (this.xmppConnection == null && beanFactory != null) {
this.xmppConnection = beanFactory.getBean(XmppContextUtils.XMPP_CONNECTION_BEAN_NAME, XMPPConnection.class);
}
- Assert.notNull(this.xmppConnection, "Failed to resolve XMPPConnection. XMPPConnection must either be set expicitly " +
- "via the 'xmpp-connection' attribute or implicitly by registering a bean with the name 'xmppConnection' and of type " +
+ Assert.notNull(this.xmppConnection, "Failed to resolve XMPPConnection. " +
+ "XMPPConnection must either be set explicitly via constructor argument " +
+ "or implicitly by registering a bean with the name 'xmppConnection' and of type " +
"'org.jivesoftware.smack.XMPPConnection' in the Application Context.");
this.initialized = true;
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/AbstractXmppConnectionAwareMessageHandler.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/AbstractXmppConnectionAwareMessageHandler.java
index 8e997e9827..4491df504c 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/AbstractXmppConnectionAwareMessageHandler.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/core/AbstractXmppConnectionAwareMessageHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2010 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -17,12 +17,14 @@
package org.springframework.integration.xmpp.core;
import org.jivesoftware.smack.XMPPConnection;
+
import org.springframework.beans.factory.BeanFactory;
import org.springframework.integration.handler.AbstractMessageHandler;
import org.springframework.util.Assert;
/**
* @author Oleg Zhurakousky
+ * @author Artem Bilan
* @since 2.0
*/
public abstract class AbstractXmppConnectionAwareMessageHandler extends AbstractMessageHandler {
@@ -44,10 +46,12 @@ public abstract class AbstractXmppConnectionAwareMessageHandler extends Abstract
protected void onInit() throws Exception {
BeanFactory beanFactory = this.getBeanFactory();
if (this.xmppConnection == null && beanFactory != null) {
- this.xmppConnection = beanFactory.getBean(XmppContextUtils.XMPP_CONNECTION_BEAN_NAME, XMPPConnection.class);
+ this.xmppConnection =
+ beanFactory.getBean(XmppContextUtils.XMPP_CONNECTION_BEAN_NAME, XMPPConnection.class);
}
- Assert.notNull(this.xmppConnection, "Failed to resolve XMPPConnection. XMPPConnection must either be set explicitly " +
- "via 'xmpp-connection' attribute or implicitly by registering a bean with the name 'xmppConnection' and of type " +
+ Assert.notNull(this.xmppConnection, "Failed to resolve XMPPConnection. " +
+ "XMPPConnection must either be set explicitly via constructor argument " +
+ "or implicitly by registering a bean with the name 'xmppConnection' and of type " +
"'org.jivesoftware.smack.XMPPConnection' in the Application Context.");
this.initialized = true;
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/ChatMessageListeningEndpoint.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/ChatMessageListeningEndpoint.java
index 829b5eed1e..0ac0a054e1 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/ChatMessageListeningEndpoint.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/ChatMessageListeningEndpoint.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -18,9 +18,9 @@ package org.springframework.integration.xmpp.inbound;
import java.util.Map;
-import org.jivesoftware.smack.PacketListener;
+import org.jivesoftware.smack.StanzaListener;
import org.jivesoftware.smack.XMPPConnection;
-import org.jivesoftware.smack.packet.Packet;
+import org.jivesoftware.smack.packet.Stanza;
import org.springframework.integration.support.AbstractIntegrationMessageBuilder;
import org.springframework.integration.xmpp.core.AbstractXmppConnectionAwareEndpoint;
@@ -36,13 +36,14 @@ import org.springframework.util.StringUtils;
* @author Josh Long
* @author Mark Fisher
* @author Oleg Zhurakousky
+ * @author Artem Bilan
* @since 2.0
*/
public class ChatMessageListeningEndpoint extends AbstractXmppConnectionAwareEndpoint {
private volatile boolean extractPayload = true;
- private final PacketListener packetListener = new ChatMessagePublishingPacketListener();
+ private final StanzaListener stanzaListener = new ChatMessagePublishingStanzaListener();
private volatile XmppHeaderMapper headerMapper = new DefaultXmppHeaderMapper();
@@ -78,21 +79,21 @@ public class ChatMessageListeningEndpoint extends AbstractXmppConnectionAwareEnd
@Override
protected void doStart() {
Assert.isTrue(this.initialized, this.getComponentName() + " [" + this.getComponentType() + "] must be initialized");
- this.xmppConnection.addPacketListener(this.packetListener, null);
+ this.xmppConnection.addAsyncStanzaListener(this.stanzaListener, null);
}
@Override
protected void doStop() {
if (this.xmppConnection != null) {
- this.xmppConnection.removePacketListener(this.packetListener);
+ this.xmppConnection.removeAsyncStanzaListener(this.stanzaListener);
}
}
- private class ChatMessagePublishingPacketListener implements PacketListener {
+ private class ChatMessagePublishingStanzaListener implements StanzaListener {
@Override
- public void processPacket(final Packet packet) {
+ public void processPacket(final Stanza packet) {
if (packet instanceof org.jivesoftware.smack.packet.Message) {
org.jivesoftware.smack.packet.Message xmppMessage = (org.jivesoftware.smack.packet.Message) packet;
Map mappedHeaders = headerMapper.toHeadersFromRequest(xmppMessage);
@@ -117,6 +118,7 @@ public class ChatMessageListeningEndpoint extends AbstractXmppConnectionAwareEnd
}
}
}
+
}
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/PresenceListeningEndpoint.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/PresenceListeningEndpoint.java
index 0f1877a535..80dcef06e5 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/PresenceListeningEndpoint.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/PresenceListeningEndpoint.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2010 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -20,8 +20,8 @@ import java.util.Collection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jivesoftware.smack.Roster;
-import org.jivesoftware.smack.RosterListener;
+import org.jivesoftware.smack.roster.Roster;
+import org.jivesoftware.smack.roster.RosterListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Presence;
@@ -38,6 +38,7 @@ import org.springframework.util.StringUtils;
* @author Josh Long
* @author Oleg Zhurakousky
* @author Mark Fisher
+ * @author Artem Bilan
* @since 2.0
*/
public class PresenceListeningEndpoint extends AbstractXmppConnectionAwareEndpoint {
@@ -65,14 +66,14 @@ public class PresenceListeningEndpoint extends AbstractXmppConnectionAwareEndpoi
@Override
protected void doStart() {
Assert.isTrue(this.initialized, this.getComponentName() + " [" + this.getComponentType() + "] must be initialized");
- Roster roster = this.xmppConnection.getRoster();
+ Roster roster = Roster.getInstanceFor(this.xmppConnection);
roster.addRosterListener(this.rosterListener);
}
@Override
protected void doStop() {
if (this.xmppConnection != null) {
- this.xmppConnection.getRoster().removeRosterListener(this.rosterListener);
+ Roster.getInstanceFor(this.xmppConnection).removeRosterListener(this.rosterListener);
}
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/package-info.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/package-info.java
index 4bbf074ecd..d1e669f40a 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/package-info.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/inbound/package-info.java
@@ -1,6 +1,5 @@
/**
- * Provides XMPP inbound Endpoint implementations that extend
+ * Provides XMPP inbound Endpoint implementations that extend
* {@link org.springframework.integration.xmpp.core.AbstractXmppConnectionAwareEndpoint}.
*/
package org.springframework.integration.xmpp.inbound;
-
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/ChatMessageSendingMessageHandler.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/ChatMessageSendingMessageHandler.java
index 73eca80c00..78d9674f1d 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/ChatMessageSendingMessageHandler.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/ChatMessageSendingMessageHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -16,6 +16,7 @@
package org.springframework.integration.xmpp.outbound;
+import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jivesoftware.smack.XMPPConnection;
import org.springframework.integration.xmpp.XmppHeaders;
@@ -34,6 +35,7 @@ import org.springframework.util.StringUtils;
* @author Josh Long
* @author Mario Gray
* @author Oleg Zhurakousky
+ * @author Artem Bilan
* @since 2.0
*/
public class ChatMessageSendingMessageHandler extends AbstractXmppConnectionAwareMessageHandler {
@@ -61,7 +63,7 @@ public class ChatMessageSendingMessageHandler extends AbstractXmppConnectionAwar
@Override
protected void handleMessageInternal(Message> message) throws Exception {
- Assert.isTrue(this.initialized, this.getComponentName() + "#" + this.getComponentType() + " must be initialized");
+ Assert.isTrue(this.initialized, getComponentName() + "#" + this.getComponentType() + " must be initialized");
Object messageBody = message.getPayload();
org.jivesoftware.smack.packet.Message xmppMessage = null;
if (messageBody instanceof org.jivesoftware.smack.packet.Message) {
@@ -77,14 +79,15 @@ public class ChatMessageSendingMessageHandler extends AbstractXmppConnectionAwar
xmppMessage.setBody((String) messageBody);
}
else {
- throw new MessageHandlingException(message, "Only payloads of type java.lang.String or org.jivesoftware.smack.packet.Message " +
+ throw new MessageHandlingException(message,
+ "Only payloads of type java.lang.String or org.jivesoftware.smack.packet.Message " +
"are supported. Received [" + messageBody.getClass().getName() +
"]. Consider adding a Transformer prior to this adapter.");
}
- if (!this.xmppConnection.isConnected()) {
- this.xmppConnection.connect();
+ if (!this.xmppConnection.isConnected() && this.xmppConnection instanceof AbstractXMPPConnection) {
+ ((AbstractXMPPConnection) this.xmppConnection).connect();
}
- this.xmppConnection.sendPacket(xmppMessage);
+ this.xmppConnection.sendStanza(xmppMessage);
}
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/PresenceSendingMessageHandler.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/PresenceSendingMessageHandler.java
index ecbc99b11a..f2e8334e38 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/PresenceSendingMessageHandler.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/PresenceSendingMessageHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -16,6 +16,7 @@
package org.springframework.integration.xmpp.outbound;
+import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Presence;
@@ -28,6 +29,7 @@ import org.springframework.util.Assert;
*
* @author Josh Long
* @author Oleg Zhurakousky
+ * @author Artem Bilan
* @since 2.0
*/
public class PresenceSendingMessageHandler extends AbstractXmppConnectionAwareMessageHandler {
@@ -47,14 +49,14 @@ public class PresenceSendingMessageHandler extends AbstractXmppConnectionAwareMe
@Override
protected void handleMessageInternal(Message> message) throws Exception {
- Assert.isTrue(this.initialized, this.getComponentName() + " must be initialized");
+ Assert.state(this.initialized, this.getComponentName() + " must be initialized");
Object payload = message.getPayload();
- Assert.isTrue(payload instanceof Presence,
+ Assert.state(payload instanceof Presence,
"Payload must be of type 'org.jivesoftware.smack.packet.Presence', was: " + payload.getClass().getName());
- if (!this.xmppConnection.isConnected()) {
- this.xmppConnection.connect();
+ if (!this.xmppConnection.isConnected() && this.xmppConnection instanceof AbstractXMPPConnection) {
+ ((AbstractXMPPConnection) this.xmppConnection).connect();
}
- this.xmppConnection.sendPacket((Presence) payload);
+ this.xmppConnection.sendStanza((Presence) payload);
}
}
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/package-info.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/package-info.java
index 9db47c03d5..c3ca0b00ee 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/package-info.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/outbound/package-info.java
@@ -1,6 +1,6 @@
/**
- * Provides XMPP outbound Messagehandler implementations.These components extend
+ * Provides XMPP outbound MessageHandler implementations.
+ * These components extend
* {@link org.springframework.integration.xmpp.core.AbstractXmppConnectionAwareMessageHandler}
*/
package org.springframework.integration.xmpp.outbound;
-
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/support/package-info.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/support/package-info.java
index 2b3d60edc0..e2871e10f8 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/support/package-info.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/support/package-info.java
@@ -1,5 +1,5 @@
/**
- * Provides XMPP specific support classes. Right now you will find a
+ * Provides XMPP specific support classes. Right now you will find a
* {@link org.springframework.integration.xmpp.support.XmppHeaderMapper} implementation
* in this package.
*/
diff --git a/spring-integration-xmpp/src/main/resources/org/springframework/integration/xmpp/config/spring-integration-xmpp-4.3.xsd b/spring-integration-xmpp/src/main/resources/org/springframework/integration/xmpp/config/spring-integration-xmpp-4.3.xsd
index 69ea971e9d..e60e4c9d4b 100644
--- a/spring-integration-xmpp/src/main/resources/org/springframework/integration/xmpp/config/spring-integration-xmpp-4.3.xsd
+++ b/spring-integration-xmpp/src/main/resources/org/springframework/integration/xmpp/config/spring-integration-xmpp-4.3.xsd
@@ -21,21 +21,21 @@
-
+
The user name (e.g., someuser@gmail.com) that will be used by this connection object
-
+
The user's password
-
+
The host name to connect TO
diff --git a/spring-integration-xmpp/src/test/java/log4j.properties b/spring-integration-xmpp/src/test/java/log4j.properties
new file mode 100644
index 0000000000..a223448028
--- /dev/null
+++ b/spring-integration-xmpp/src/test/java/log4j.properties
@@ -0,0 +1,8 @@
+log4j.rootCategory=WARN, stdout
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss.SSS} %-5p [%t][%c] %m%n
+
+log4j.category.org.springframework.integration=WARN
+log4j.category.org.springframework.integration.xmpp=INFO
diff --git a/spring-integration-xmpp/src/test/java/log4j.xml b/spring-integration-xmpp/src/test/java/log4j.xml
deleted file mode 100644
index 1cdfc45657..0000000000
--- a/spring-integration-xmpp/src/test/java/log4j.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParserTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParserTests-context.xml
index 9ea6995ef4..5e92f61f8d 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParserTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParserTests-context.xml
@@ -3,20 +3,11 @@
xmlns="http://www.springframework.org/schema/integration"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:util="http://www.springframework.org/schema/util"
xmlns:xmpp="http://www.springframework.org/schema/integration/xmpp"
- xmlns:tool="http://www.springframework.org/schema/tool"
- xmlns:lang="http://www.springframework.org/schema/lang"
xsi:schemaLocation="http://www.springframework.org/schema/integration/xmpp
- http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
- http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd
- http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">
+ http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParserTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParserTests.java
index 0ca4593afd..e925bd86e6 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParserTests.java
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageInboundChannelAdapterParserTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -22,14 +22,15 @@ import static org.junit.Assert.assertSame;
import java.lang.reflect.Field;
-import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.SmackException.NotConnectedException;
+import org.jivesoftware.smack.StanzaListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smackx.jiveproperties.JivePropertiesManager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
@@ -51,7 +52,7 @@ import org.springframework.util.ReflectionUtils;
*/
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext(classMode=ClassMode.AFTER_EACH_TEST_METHOD)
+@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public class ChatMessageInboundChannelAdapterParserTests {
@Autowired
@@ -63,18 +64,19 @@ public class ChatMessageInboundChannelAdapterParserTests {
@Autowired
private MessageChannel autoChannel;
- @Autowired @Qualifier("autoChannel.adapter")
+ @Autowired
+ @Qualifier("autoChannel.adapter")
private ChatMessageListeningEndpoint autoChannelAdapter;
@Test
- public void testInboundAdapter(){
+ public void testInboundAdapter() {
ChatMessageListeningEndpoint adapter = context.getBean("xmppInboundAdapter", ChatMessageListeningEndpoint.class);
MessageChannel errorChannel = (MessageChannel) TestUtils.getPropertyValue(adapter, "errorChannel");
assertEquals(context.getBean("errorChannel"), errorChannel);
assertFalse(adapter.isAutoStartup());
QueueChannel channel = (QueueChannel) TestUtils.getPropertyValue(adapter, "outputChannel");
assertEquals("xmppInbound", channel.getComponentName());
- XMPPConnection connection = (XMPPConnection)TestUtils.getPropertyValue(adapter, "xmppConnection");
+ XMPPConnection connection = (XMPPConnection) TestUtils.getPropertyValue(adapter, "xmppConnection");
assertEquals(connection, context.getBean("testConnection"));
}
@@ -88,14 +90,14 @@ public class ChatMessageInboundChannelAdapterParserTests {
xmppConnectionField.setAccessible(true);
ReflectionUtils.setField(xmppConnectionField, adapter, xmppConnection);
- PacketListener packetListener = TestUtils.getPropertyValue(adapter, "packetListener", PacketListener.class);
+ StanzaListener stanzaListener = TestUtils.getPropertyValue(adapter, "stanzaListener", StanzaListener.class);
Message message = new Message();
message.setBody("hello");
message.setTo("oleg");
JivePropertiesManager.addProperty(message, "foo", "foo");
JivePropertiesManager.addProperty(message, "bar", "bar");
- packetListener.processPacket(message);
+ stanzaListener.processPacket(message);
org.springframework.messaging.Message> siMessage = xmppInbound.receive(0);
assertEquals("foo", siMessage.getHeaders().get("foo"));
assertEquals("oleg", siMessage.getHeaders().get("xmpp_to"));
@@ -105,4 +107,5 @@ public class ChatMessageInboundChannelAdapterParserTests {
public void testAutoChannel() {
assertSame(autoChannel, TestUtils.getPropertyValue(autoChannelAdapter, "outputChannel"));
}
+
}
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParserTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParserTests-context.xml
index 6c05125532..0f991cb123 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParserTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParserTests-context.xml
@@ -6,40 +6,40 @@
http://www.springframework.org/schema/integration/xmpp http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-xmpp="http://www.springframework.org/schema/integration/xmpp">
-
+
-
+
-
-
-
+
-
-
-
-
-
+
-
-
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParserTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParserTests.java
index 8f9798a533..f5eb727e84 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParserTests.java
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/ChatMessageOutboundChannelAdapterParserTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -29,6 +29,7 @@ import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.integration.mapping.AbstractHeaderMapper;
@@ -110,7 +111,7 @@ public class ChatMessageOutboundChannelAdapterParserTests {
@SuppressWarnings("rawtypes")
@Test
- public void withHeaderMapper() throws Exception{
+ public void withHeaderMapper() throws Exception {
Object pollingConsumer = context.getBean("withHeaderMapper");
assertTrue(pollingConsumer instanceof PollingConsumer);
assertEquals(headerMapper, TestUtils.getPropertyValue(pollingConsumer, "handler.headerMapper"));
@@ -120,40 +121,44 @@ public class ChatMessageOutboundChannelAdapterParserTests {
XMPPConnection connection = context.getBean("testConnection", XMPPConnection.class);
Mockito.doAnswer(new Answer() {
- public Object answer(InvocationOnMock invocation) {
- Object[] args = invocation.getArguments();
- org.jivesoftware.smack.packet.Message xmppMessage = (org.jivesoftware.smack.packet.Message) args[0];
- assertEquals("oleg", xmppMessage.getTo());
- assertEquals("foobar", JivePropertiesManager.getProperty(xmppMessage, "foobar"));
- return null;
- }})
- .when(connection).sendPacket(Mockito.any(org.jivesoftware.smack.packet.Message.class));
+
+ public Object answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ org.jivesoftware.smack.packet.Message xmppMessage = (org.jivesoftware.smack.packet.Message) args[0];
+ assertEquals("oleg", xmppMessage.getTo());
+ assertEquals("foobar", JivePropertiesManager.getProperty(xmppMessage, "foobar"));
+ return null;
+ }
+ })
+ .when(connection).sendStanza(Mockito.any(org.jivesoftware.smack.packet.Message.class));
channel.send(message);
- verify(connection, times(1)).sendPacket(Mockito.any(org.jivesoftware.smack.packet.Message.class));
+ verify(connection, times(1)).sendStanza(Mockito.any(org.jivesoftware.smack.packet.Message.class));
Mockito.reset(connection);
}
@SuppressWarnings("rawtypes")
@Test //INT-2275
- public void testOutboundChannelAdapterInsideChain() throws Exception{
+ public void testOutboundChannelAdapterInsideChain() throws Exception {
MessageChannel channel = context.getBean("outboundChainChannel", MessageChannel.class);
Message> message = MessageBuilder.withPayload("hello").setHeader(XmppHeaders.TO, "artem").build();
XMPPConnection connection = context.getBean("testConnection", XMPPConnection.class);
Mockito.doAnswer(new Answer() {
+
public Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
org.jivesoftware.smack.packet.Message xmppMessage = (org.jivesoftware.smack.packet.Message) args[0];
assertEquals("artem", xmppMessage.getTo());
assertEquals("hello", xmppMessage.getBody());
return null;
- }})
- .when(connection).sendPacket(Mockito.any(org.jivesoftware.smack.packet.Message.class));
+ }
+
+ }).when(connection).sendStanza(Mockito.any(org.jivesoftware.smack.packet.Message.class));
channel.send(message);
- verify(connection, times(1)).sendPacket(Mockito.any(org.jivesoftware.smack.packet.Message.class));
+ verify(connection, times(1)).sendStanza(Mockito.any(org.jivesoftware.smack.packet.Message.class));
Mockito.reset(connection);
}
@@ -166,4 +171,5 @@ public class ChatMessageOutboundChannelAdapterParserTests {
}
}
+
}
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParserTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParserTests-context.xml
index f3bfc6213a..2abc8d6aa2 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParserTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParserTests-context.xml
@@ -6,14 +6,14 @@
http://www.springframework.org/schema/integration/xmpp http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-xmpp="http://www.springframework.org/schema/integration/xmpp">
-
+
-
-
-
+
-
+
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParserTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParserTests.java
index 964d59ec31..abf2c42910 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParserTests.java
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceInboundChannelAdapterParserTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2010 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -28,8 +28,8 @@ public class PresenceInboundChannelAdapterParserTests {
@Test
public void testPresenceInboundChannelAdapterParser() {
- new ClassPathXmlApplicationContext("PresenceInboundChannelAdapterParserTests-context.xml", this.getClass());
- // no assertion needed. THe fact that no exception was thrown satisfies this test
+ new ClassPathXmlApplicationContext("PresenceInboundChannelAdapterParserTests-context.xml", this.getClass()).close();
+ // 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/config/PresenceOutboundChannelAdapterParserTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParserTests-context.xml
index 63be35a8fa..043985bc40 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParserTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParserTests-context.xml
@@ -6,43 +6,43 @@
http://www.springframework.org/schema/integration/xmpp http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-xmpp="http://www.springframework.org/schema/integration/xmpp">
-
+
-
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
+
+
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParserTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParserTests.java
index b946738f2d..681064d353 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParserTests.java
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/PresenceOutboundChannelAdapterParserTests.java
@@ -101,4 +101,5 @@ public class PresenceOutboundChannelAdapterParserTests {
}
}
+
}
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBeanTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBeanTests-context.xml
index bcf0cdfa1a..ace1106250 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBeanTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBeanTests-context.xml
@@ -1,24 +1,27 @@
-
+ xmlns:int="http://www.springframework.org/schema/integration"
+ xmlns:int-xmpp="http://www.springframework.org/schema/integration/xmpp">
+
+
+
+
+
-
-
-
+
-
+
-
-
+
+
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBeanTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBeanTests.java
index 00b0efdea5..6fff0a3499 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBeanTests.java
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBeanTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -19,11 +19,11 @@ package org.springframework.integration.xmpp.config;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
-import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
import org.junit.Test;
+
import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.integration.xmpp.config.XmppConnectionFactoryBean;
/**
* @author Oleg Zhurakousky
@@ -33,14 +33,15 @@ public class XmppConnectionFactoryBeanTests {
@Test
public void testXmppConnectionFactoryBean() throws Exception {
- XmppConnectionFactoryBean xmppConnectionFactoryBean = new XmppConnectionFactoryBean(mock(ConnectionConfiguration.class));
+ XmppConnectionFactoryBean xmppConnectionFactoryBean =
+ new XmppConnectionFactoryBean(mock(XMPPTCPConnectionConfiguration.class));
XMPPConnection connection = xmppConnectionFactoryBean.createInstance();
assertNotNull(connection);
}
@Test
public void testXmppConnectionFactoryBeanViaConfig() throws Exception {
- new ClassPathXmlApplicationContext("XmppConnectionFactoryBeanTests-context.xml", this.getClass());
+ new ClassPathXmlApplicationContext("XmppConnectionFactoryBeanTests-context.xml", this.getClass()).close();
// the fact that no exception was thrown satisfies this test
}
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests-complete.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests-complete.xml
index 6c73fc714d..3803a7d742 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests-complete.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests-complete.xml
@@ -1,12 +1,10 @@
@@ -17,10 +15,10 @@
reject_all
-
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:int-xmpp="http://www.springframework.org/schema/integration/xmpp"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/integration/xmpp http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd">
-
-
-
-
+
-
+
+
+
+
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 6a9f9bd2f3..5b76c2749a 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
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -18,12 +18,13 @@ package org.springframework.integration.xmpp.config;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import org.jivesoftware.smack.XMPPConnection;
import org.junit.Test;
-import org.springframework.context.ApplicationContext;
+
+import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.test.util.TestUtils;
@@ -32,36 +33,39 @@ import org.springframework.integration.test.util.TestUtils;
* @author Gary Russell
* @author Gunnar Hillert
* @author Florian Schmaus
+ * @author Artem Bilan
*/
public class XmppConnectionParserTests {
@Test
public void testSimpleConfiguration() {
- ApplicationContext ac =
+ ConfigurableApplicationContext ac =
new ClassPathXmlApplicationContext("XmppConnectionParserTests-simple.xml", this.getClass());
XMPPConnection connection = ac.getBean("connection", XMPPConnection.class);
- assertEquals("localhost", connection.getServiceName());
+ assertEquals("my.domain", connection.getServiceName());
assertFalse(connection.isConnected());
XmppConnectionFactoryBean xmppFb = ac.getBean("&connection", XmppConnectionFactoryBean.class);
- assertEquals("happy.user", TestUtils.getPropertyValue(xmppFb, "user"));
+ assertEquals("happy.user@my.domain", TestUtils.getPropertyValue(xmppFb, "user"));
assertEquals("blah", TestUtils.getPropertyValue(xmppFb, "password"));
assertNull(TestUtils.getPropertyValue(xmppFb, "resource"));
- assertEquals("accept_all", TestUtils.getPropertyValue(xmppFb, "subscriptionMode"));
+ assertEquals("accept_all", TestUtils.getPropertyValue(xmppFb, "subscriptionMode").toString());
xmppFb = ac.getBean("&connectionWithResource", XmppConnectionFactoryBean.class);
assertEquals("Smack", TestUtils.getPropertyValue(xmppFb, "resource"));
+ ac.close();
}
@Test
public void testDefaultConnectionName() {
- ApplicationContext ac =
+ ConfigurableApplicationContext ac =
new ClassPathXmlApplicationContext("XmppConnectionParserTests-simple.xml", this.getClass());
assertTrue(ac.containsBean("xmppConnection"));
+ ac.close();
}
@Test
public void testCompleteConfiguration() {
- ApplicationContext ac =
+ ConfigurableApplicationContext ac =
new ClassPathXmlApplicationContext("XmppConnectionParserTests-complete.xml", this.getClass());
XMPPConnection connection = ac.getBean("connection", XMPPConnection.class);
assertEquals("foogle.com", connection.getServiceName());
@@ -70,7 +74,8 @@ public class XmppConnectionParserTests {
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"));
+ assertEquals("reject_all", TestUtils.getPropertyValue(xmppFb, "subscriptionMode").toString());
+ ac.close();
}
}
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppHeaderEnricherParserTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppHeaderEnricherParserTests-context.xml
index 1d3671f321..b992444cb1 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppHeaderEnricherParserTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppHeaderEnricherParserTests-context.xml
@@ -1,23 +1,18 @@
-
-
+
-
+
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/ConsoleChatTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/ConsoleChatTests-context.xml
index 5f4b043959..c7add9dead 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/ConsoleChatTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/ConsoleChatTests-context.xml
@@ -21,16 +21,14 @@
+ password="${user.1.password}"/>
-
+
-
+
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/ConsoleChatTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/ConsoleChatTests.java
index b75b958da2..5591892658 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/ConsoleChatTests.java
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/ConsoleChatTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2010 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -19,17 +19,24 @@ package org.springframework.integration.xmpp.ignore;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
+
+import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author Mark Fisher
+ * @author Artem Bilan
* @since 2.0
*/
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class ConsoleChatTests {
+ public static void main(String[] args) {
+ new ClassPathXmlApplicationContext("ConsoleChatTests-context.xml", ConsoleChatTests.class);
+ }
+
@Test
@Ignore
public void run() throws Exception {
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundChatTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundChatTests-context.xml
index d81a5ab67b..d6f57cfb95 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundChatTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundChatTests-context.xml
@@ -10,11 +10,11 @@
xmlns:tool="http://www.springframework.org/schema/tool"
xmlns:lang="http://www.springframework.org/schema/lang"
xsi:schemaLocation="http://www.springframework.org/schema/integration/xmpp
- http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundPresenceTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundPresenceTests-context.xml
index 9011cb4664..3a359f565c 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundPresenceTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/InboundPresenceTests-context.xml
@@ -26,14 +26,14 @@
service-name="${user.1.service}"/>
-
+
-
-
+
-
+
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundChatTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundChatTests-context.xml
index a6e911f172..58cfddd3e4 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundChatTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundChatTests-context.xml
@@ -5,10 +5,10 @@
xmlns:util="http://www.springframework.org/schema/util" xmlns:xmpp="http://www.springframework.org/schema/integration/xmpp"
xmlns:tool="http://www.springframework.org/schema/tool" xmlns:lang="http://www.springframework.org/schema/lang"
xsi:schemaLocation="http://www.springframework.org/schema/integration/xmpp http://www.springframework.org/schema/integration/xmpp/spring-integration-xmpp.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundPresenceTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundPresenceTests-context.xml
index fa7b00ff07..fbcebc12fc 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundPresenceTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/OutboundPresenceTests-context.xml
@@ -24,7 +24,7 @@
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/SmackMessageSampleTest-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/SmackMessageSampleTest-context.xml
index 9b2f958957..eec01ccc6f 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/SmackMessageSampleTest-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/SmackMessageSampleTest-context.xml
@@ -16,9 +16,9 @@
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/SmackMessageSampleTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/SmackMessageSampleTests.java
index 92515dc1f7..1f8f4b8681 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/SmackMessageSampleTests.java
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/ignore/SmackMessageSampleTests.java
@@ -35,14 +35,14 @@ public class SmackMessageSampleTests {
public void validateSmackMessageSent(){
ApplicationContext ac = new ClassPathXmlApplicationContext("SmackMessageSampleTest-context.xml", this.getClass());
MessageChannel xmppInput = ac.getBean("xmppInput", MessageChannel.class);
-
-
+
+
org.jivesoftware.smack.packet.Message smackMessage = new org.jivesoftware.smack.packet.Message("springintegration@gmail.com");
smackMessage.setBody("Message sent as Smack Message");
-
- Message message =
+
+ Message message =
new GenericMessage(smackMessage);
-
+
xmppInput.send(message);
}
}
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/inbound/ChatMessageListeningEndpointTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/inbound/ChatMessageListeningEndpointTests.java
index 705f431c1f..633d9507a8 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/inbound/ChatMessageListeningEndpointTests.java
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/inbound/ChatMessageListeningEndpointTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2015 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.
@@ -24,13 +24,12 @@ import static org.mockito.Mockito.mock;
import java.util.HashSet;
import java.util.Set;
-import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.SmackException.NotConnectedException;
+import org.jivesoftware.smack.StanzaListener;
import org.jivesoftware.smack.XMPPConnection;
-import org.jivesoftware.smack.filter.PacketFilter;
+import org.jivesoftware.smack.filter.StanzaFilter;
import org.jivesoftware.smack.packet.Message;
import org.junit.Test;
-
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -50,35 +49,39 @@ import org.springframework.messaging.support.ErrorMessage;
* @author Oleg Zhurakousky
* @author Gunnar Hillert
* @author Florian Schmaus
- *
+ * @author Artem Bilan
*/
public class ChatMessageListeningEndpointTests {
@Test
/**
- * Should add/remove PacketListener when endpoint started/stopped
+ * Should add/remove StanzaListener when endpoint started/stopped
*/
- public void testLifecycle(){
- final Set packetListSet = new HashSet();
+ public void testLifecycle() {
+ final Set packetListSet = new HashSet();
XMPPConnection connection = mock(XMPPConnection.class);
ChatMessageListeningEndpoint endpoint = new ChatMessageListeningEndpoint(connection);
doAnswer(new Answer