diff options
author | Gurmeen Bindra <gurmeen.bindra@isode.com> | 2012-04-17 09:18:20 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2012-04-19 10:45:50 (GMT) |
commit | b54bc5406f95902ce2438ac64a19390ae0f2f409 (patch) | |
tree | a9fcd31575e3773f26a32b74b0793f43ce3a0cd4 /src/com/isode/stroke/serializer/payloadserializers/MUCUserPayloadSerializer.java | |
parent | c040dd31cf285f9e2ffddab859586badf6ae059e (diff) | |
download | stroke-b54bc5406f95902ce2438ac64a19390ae0f2f409.zip stroke-b54bc5406f95902ce2438ac64a19390ae0f2f409.tar.bz2 |
Port MUC Payload Serializers from Swiften to Stroke
All the serializers for different kind of MUC payloads have
been ported from swiften to stroke.
Test-information:
There is a junit test that's ported which tests the admin payload serialiser.
Also executed the other MUC Junits.
Diffstat (limited to 'src/com/isode/stroke/serializer/payloadserializers/MUCUserPayloadSerializer.java')
-rw-r--r-- | src/com/isode/stroke/serializer/payloadserializers/MUCUserPayloadSerializer.java | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/MUCUserPayloadSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/MUCUserPayloadSerializer.java new file mode 100644 index 0000000..1fa7ce8 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/MUCUserPayloadSerializer.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2012, Isode Limited, London, England. + * All rights reserved. + */ +/* + * Copyright (c) 2010, Kevin Smith + * All rights reserved. + */ +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.elements.MUCItem; +import com.isode.stroke.elements.MUCUserPayload; +import com.isode.stroke.elements.Payload; +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.serializer.xml.XMLTextNode; + +/** + * Serializer for {@link MUCUserPayload} element. + */ +public class MUCUserPayloadSerializer extends GenericPayloadSerializer<MUCUserPayload> { + + private PayloadSerializerCollection serializers_; + + /** + * Constructor + * @param serializers Payload Serializer Collection, not null + */ + public MUCUserPayloadSerializer(PayloadSerializerCollection serializers) { + super(MUCUserPayload.class); + this.serializers_ = serializers; + } + + @Override + public String serializePayload(MUCUserPayload payload) { + XMLElement mucElement = new XMLElement("x", "http://jabber.org/protocol/muc#user"); + for (MUCUserPayload.StatusCode statusCode : payload.getStatusCodes()) { + XMLElement statusElement = new XMLElement("status"); + statusElement.setAttribute("code", String.valueOf(statusCode.code)); + mucElement.addNode(statusElement); + } + for (MUCItem item : payload.getItems()) { + mucElement.addNode(MUCItemSerializer.itemToElement(item)); + } + + if (payload.getPassword() != null) { + XMLElement passwordElement = new XMLElement("password"); + passwordElement.addNode(new XMLTextNode(payload.getPassword())); + } + + if (payload.getInvite() != null) { + MUCUserPayload.Invite invite = payload.getInvite(); + XMLElement inviteElement = new XMLElement("invite"); + if (invite.to != null && invite.to.isValid()) { + inviteElement.setAttribute("to", invite.to.toString()); + } + if (invite.from != null && invite.from.isValid()) { + inviteElement.setAttribute("from", invite.from.toString()); + } + if (invite.reason != null && !invite.reason.isEmpty()) { + XMLElement reasonElement = new XMLElement("reason"); + reasonElement.addNode(new XMLTextNode(invite.reason)); + } + mucElement.addNode(inviteElement); + } + + Payload childPayload = payload.getPayload(); + if (childPayload != null) { + PayloadSerializer serializer = serializers_.getPayloadSerializer(childPayload); + if (serializers_ != null) { + mucElement.addNode(new XMLRawTextNode(serializer.serialize(childPayload))); + } + } + return mucElement.serialize(); + } +} |