diff --git a/spring-integration-xmpp/pom.xml b/spring-integration-xmpp/pom.xml
index 73b31061eb..e5a00a90b4 100644
--- a/spring-integration-xmpp/pom.xml
+++ b/spring-integration-xmpp/pom.xml
@@ -47,6 +47,11 @@
junit
test
+
+ org.mockito
+ mockito-all
+ test
+
org.springframework
spring-context-support
diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/messages/XmppMessageSendingMessageHandler.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/messages/XmppMessageSendingMessageHandler.java
index d385b09cca..d6917c8157 100644
--- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/messages/XmppMessageSendingMessageHandler.java
+++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/messages/XmppMessageSendingMessageHandler.java
@@ -20,7 +20,9 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.XMPPException;
import org.springframework.context.Lifecycle;
+import org.springframework.integration.MessageHandlingException;
import org.springframework.integration.handler.AbstractMessageHandler;
import org.springframework.integration.xmpp.XmppHeaders;
import org.springframework.util.Assert;
@@ -29,6 +31,7 @@ import org.springframework.util.StringUtils;
/**
* @author Josh Long
* @author Mario Gray
+ * @author Oleg Zhurakousky
* @since 2.0
*/
public class XmppMessageSendingMessageHandler extends AbstractMessageHandler implements Lifecycle {
@@ -43,25 +46,22 @@ public class XmppMessageSendingMessageHandler extends AbstractMessageHandler imp
}
protected void handleMessageInternal(final org.springframework.integration.Message> message) {
+ // pre-reqs: user to send, string to send as msg body
+ String messageBody = null;
+ String destinationUser = null;
+ Object payload = message.getPayload();
+ Assert.isInstanceOf(String.class, payload, "Only payload of type String is suported. You " +
+ "can apply transformer prior to sending message to this handler");
+ messageBody = (String) payload;
+ destinationUser = (String) message.getHeaders().get(XmppHeaders.CHAT_TO_USER);
+ Assert.state(StringUtils.hasText(destinationUser), "'" + XmppHeaders.CHAT_TO_USER + "' header must not be null");
+ String threadId = (String) message.getHeaders().get(XmppHeaders.CHAT_THREAD_ID);
+ Chat chat = getOrCreateChatWithParticipant(destinationUser, threadId);
+ // TODO - figure out what to do with chat.threadId?
try {
- // pre-reqs: user to send, string to send as msg body
- String messageBody = null;
- String destinationUser = null;
- Object payload = message.getPayload();
- if (payload instanceof String) {
- messageBody = (String) payload;
- }
- destinationUser = (String) message.getHeaders().get(XmppHeaders.CHAT_TO_USER);
- Assert.state(StringUtils.hasText(destinationUser), "the destination user must not be null");
- Assert.state(StringUtils.hasText(messageBody), "the message body must not be null");
- String threadId = (String) message.getHeaders().get(XmppHeaders.CHAT_THREAD_ID);
- Chat chat = getOrCreateChatWithParticipant(destinationUser, threadId);
- if (chat != null) {
- chat.sendMessage(messageBody);
- }
- }
- catch (Exception e) {
- logger.debug("failed to send XMPP message", e);
+ chat.sendMessage(messageBody);
+ } catch (XMPPException e) {
+ throw new MessageHandlingException(message, e);
}
}
@@ -93,6 +93,7 @@ public class XmppMessageSendingMessageHandler extends AbstractMessageHandler imp
chat = xmppConnection.getChatManager().createChat(userId, thread, null);
}
}
+ Assert.notNull(chat, "Failed to obtain Chat instance");
return chat;
}
diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/messages/OutboundXmppEndpointTests-context.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/messages/OutboundXmppEndpointTests-context.xml
index 8fe816d197..57e7fbf9f4 100644
--- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/messages/OutboundXmppEndpointTests-context.xml
+++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/messages/OutboundXmppEndpointTests-context.xml
@@ -26,17 +26,16 @@
-
+
+ p:recipient="${recipient.address}"/>
-