INT-1554 polishing 1st iteration on the way to removing unnessessery Xmpp headers, removed InboundMapper dependency

This commit is contained in:
Oleg Zhurakousky
2010-11-05 08:43:04 -04:00
parent 5ab003d47e
commit 2b0e34b3bc
5 changed files with 34 additions and 42 deletions

View File

@@ -32,7 +32,7 @@ public class XmppRosterEventInboundEndpointParser extends AbstractSingleBeanDefi
@Override
protected String getBeanClassName(Element element) {
return "org.springframework.integration.xmpp.presenceXmppRosterEventMessageDrivenEndpoint";
return "org.springframework.integration.xmpp.presence.XmppRosterEventMessageDrivenEndpoint";
}
@Override

View File

@@ -23,6 +23,8 @@ import org.springframework.integration.config.xml.IntegrationNamespaceUtils;
import org.w3c.dom.Element;
/**
* Parser for 'xmpp:roster-event-outbound-channel-adapter' element
*
* @author Oleg Zhurakousky
* @since 2.0
*/

View File

@@ -18,10 +18,8 @@ package org.springframework.integration.xmpp.presence;
import org.jivesoftware.smack.packet.Presence;
import org.springframework.integration.Message;
import org.springframework.integration.MessageHeaders;
import org.springframework.integration.mapping.InboundMessageMapper;
import org.springframework.integration.mapping.MessageMappingException;
import org.springframework.integration.mapping.OutboundMessageMapper;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.integration.xmpp.XmppHeaders;
import org.springframework.util.StringUtils;
@@ -34,27 +32,26 @@ import org.springframework.util.StringUtils;
* @author Oleg Zhurakousky
* @since 2.0
*/
public class XmppPresenceMessageMapper implements OutboundMessageMapper<Presence>,
InboundMessageMapper<Presence> {
public class XmppPresenceMessageMapper implements OutboundMessageMapper<Presence> {
/**
* Builds {@link Message} with payload of {@link Presence} while also
* setting Presence attributes as {@link MessageHeaders}
*
* @param presence the presence object
* @return the Message
* @throws Exception thrown if conversion should fail
*/
@SuppressWarnings("unchecked")
public Message<Presence> toMessage(Presence presence) throws Exception {
MessageBuilder<?> presenceMessageBuilder = MessageBuilder.withPayload(presence);
presenceMessageBuilder.setHeader(XmppHeaders.PRESENCE_PRIORITY, presence.getPriority());
presenceMessageBuilder.setHeader(XmppHeaders.PRESENCE_STATUS, presence.getStatus());
presenceMessageBuilder.setHeader(XmppHeaders.PRESENCE_MODE, presence.getMode());
presenceMessageBuilder.setHeader(XmppHeaders.PRESENCE_FROM, presence.getFrom());
return (Message<Presence>) presenceMessageBuilder.build();
}
// /**
// * Builds {@link Message} with payload of {@link Presence} while also
// * setting Presence attributes as {@link MessageHeaders}
// *
// * @param presence the presence object
// * @return the Message
// * @throws Exception thrown if conversion should fail
// */
// @SuppressWarnings("unchecked")
// public Message<Presence> toMessage(Presence presence) throws Exception {
// MessageBuilder<?> presenceMessageBuilder = MessageBuilder.withPayload(presence);
// presenceMessageBuilder.setHeader(XmppHeaders.PRESENCE_PRIORITY, presence.getPriority());
// presenceMessageBuilder.setHeader(XmppHeaders.PRESENCE_STATUS, presence.getStatus());
// presenceMessageBuilder.setHeader(XmppHeaders.PRESENCE_MODE, presence.getMode());
// presenceMessageBuilder.setHeader(XmppHeaders.PRESENCE_FROM, presence.getFrom());
//
// return (Message<Presence>) presenceMessageBuilder.build();
// }
/**
* Builds a {@link Presence} object from the inbound Message headers, if possible.
@@ -95,7 +92,8 @@ public class XmppPresenceMessageMapper implements OutboundMessageMapper<Presence
return this.factoryPresence(from, status, priority, presenceType, mode, language);
}
else {
throw new MessageMappingException("Unsupported Payload type: " + payload.getClass().getName());
throw new MessageMappingException("Unsupported Payload type. " +
"The only supported payload type is org.jivesoftware.smack.packet.Presence: " + payload.getClass().getName());
}
}

View File

@@ -31,7 +31,7 @@ import org.springframework.integration.MessageHandlingException;
import org.springframework.integration.MessagingException;
import org.springframework.integration.core.MessagingTemplate;
import org.springframework.integration.endpoint.AbstractEndpoint;
import org.springframework.integration.mapping.InboundMessageMapper;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.util.Assert;
/**
@@ -51,7 +51,7 @@ public class XmppRosterEventMessageDrivenEndpoint extends AbstractEndpoint {
private volatile XMPPConnection xmppConnection;
private InboundMessageMapper<Presence> messageMapper;
//private volatile InboundMessageMapper<Presence> messageMapper;
private final MessagingTemplate messagingTemplate = new MessagingTemplate();
@@ -75,9 +75,9 @@ public class XmppRosterEventMessageDrivenEndpoint extends AbstractEndpoint {
this.requestChannel = requestChannel;
}
public void setMessageMapper(InboundMessageMapper<Presence> messageMapper) {
this.messageMapper = messageMapper;
}
// public void setMessageMapper(InboundMessageMapper<Presence> messageMapper) {
// this.messageMapper = messageMapper;
// }
@Override
protected void doStart() {
@@ -92,9 +92,9 @@ public class XmppRosterEventMessageDrivenEndpoint extends AbstractEndpoint {
@Override
protected void onInit() throws Exception {
if (null == this.messageMapper) {
this.messageMapper = new XmppPresenceMessageMapper();
}
// if (null == this.messageMapper) {
// this.messageMapper = new XmppPresenceMessageMapper();
// }
this.messagingTemplate.setDefaultChannel(requestChannel);
this.messagingTemplate.afterPropertiesSet();
this.initialized = true;
@@ -106,9 +106,9 @@ public class XmppRosterEventMessageDrivenEndpoint extends AbstractEndpoint {
* @param presence the {@link Presence} object representing the new state
*/
private void forwardRosterEventMessage(Presence presence) {
Message<?> message = null;
Message<Presence> message = null;
try {
message = this.messageMapper.toMessage(presence);
message = MessageBuilder.withPayload(presence).build();
messagingTemplate.send(requestChannel, message);
}
catch (Exception e) {

View File

@@ -32,14 +32,6 @@ import org.springframework.integration.xmpp.XmppHeaders;
*/
public class XmppPresenceMessageMapperTests {
@Test
public void testToMessage() throws Exception{
Presence presence = new Presence(Type.available, "Hello", 1, Mode.chat);
XmppPresenceMessageMapper mapper = new XmppPresenceMessageMapper();
Message<Presence> presenceMessage = mapper.toMessage(presence);
assertEquals(presence, presenceMessage.getPayload());
// TODO look into why presence attributes are also duplicated as headers
}
@Test
public void testFromMessageWithPayloadPresence() throws Exception{
Presence presence = new Presence(Type.available, "Hello", 1, Mode.chat);