INT-1554 polishing 1st iteration on the way to removing unnessessery Xmpp headers, removed InboundMapper dependency
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user