INT-1728 added validation to ChatMessageListeningEndpoint to make sure that it ignores messages with 'null' content, since such messages may be sent by a different clients (e.g., Adium). An example of valid chat message with no content is message with the ChatState of 'composing'. For now we are ignoring such messages.

This commit is contained in:
Oleg Zhurakousky
2011-01-04 15:57:49 -05:00
parent d9263ea92a
commit a7e970bbe3
2 changed files with 22 additions and 9 deletions

View File

@@ -25,6 +25,7 @@ import org.springframework.integration.support.MessageBuilder;
import org.springframework.integration.xmpp.XmppHeaders;
import org.springframework.integration.xmpp.core.AbstractXmppConnectionAwareEndpoint;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
* This component logs in as a user and forwards any messages <em>to</em> that
@@ -85,11 +86,23 @@ public class ChatMessageListeningEndpoint extends AbstractXmppConnectionAwareEnd
if (packet instanceof org.jivesoftware.smack.packet.Message) {
org.jivesoftware.smack.packet.Message xmppMessage = (org.jivesoftware.smack.packet.Message) packet;
Chat chat = xmppConnection.getChatManager().getThreadChat(xmppMessage.getThread());
Object payload = (extractPayload ? xmppMessage.getBody() : xmppMessage);
MessageBuilder<?> messageBuilder = MessageBuilder.withPayload(payload)
.setHeader(XmppHeaders.TYPE, xmppMessage.getType())
.setHeader(XmppHeaders.CHAT, chat);
sendMessage(messageBuilder.build());
String messageBody = xmppMessage.getBody();
/*
* Since there are several types of chat messages with different ChatState (e.g., composing, paused etc)
* we need to perform further validation since for now we only support messages that have
* content (e.g., Use A says 'Hello' to User B). We don't yet support messages with no
* content (e.g., User A is typing a message for User B etc.).
* See https://jira.springsource.org/browse/INT-1728
* Also see: packet.getExtensions()
*/
if (StringUtils.hasText(messageBody)){
Object payload = (extractPayload ? messageBody : xmppMessage);
MessageBuilder<?> messageBuilder = MessageBuilder.withPayload(payload)
.setHeader(XmppHeaders.TYPE, xmppMessage.getType())
.setHeader(XmppHeaders.CHAT, chat);
sendMessage(messageBuilder.build());
}
}
}
}

View File

@@ -10,12 +10,12 @@
</layout>
</appender>
<logger name="org.springframework.integration">
<level value="warn" />
<level value="trace" />
</logger>
<logger name="org.springframework.integration.xmpp">
<level value="debug" />
</logger>
<!-- <logger name="org.springframework.integration">-->
<!-- <level value="debug" />-->
<!-- </logger>-->
<!-- Root Logger -->
<root>