diff options
Diffstat (limited to 'src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java')
-rw-r--r-- | src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java new file mode 100644 index 0000000..08a4b8e --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2010, Isode Limited, London, England. + * All rights reserved. + */ +/* + * Copyright (c) 2010, Remko Tron¨on. + * All rights reserved. + */ +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.elements.RosterItemPayload; +import com.isode.stroke.elements.RosterPayload; +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.serializer.xml.XMLTextNode; + +/** + * Roster to string. + */ +public class RosterSerializer extends GenericPayloadSerializer<RosterPayload> { + + public RosterSerializer() { + super(RosterPayload.class); + } + + @Override + protected String serializePayload(RosterPayload roster) { + XMLElement queryElement = new XMLElement("query", "jabber:iq:roster"); + for (RosterItemPayload item : roster.getItems()) { + XMLElement itemElement = new XMLElement("item"); + itemElement.setAttribute("jid", item.getJID().toString()); + if (item.getName() != null) { + itemElement.setAttribute("name", item.getName()); + } + + if (item.getSubscription() != null) { + switch (item.getSubscription()) { + case To: itemElement.setAttribute("subscription", "to"); break; + case From: itemElement.setAttribute("subscription", "from"); break; + case Both: itemElement.setAttribute("subscription", "both"); break; + case Remove: itemElement.setAttribute("subscription", "remove"); break; + case None: itemElement.setAttribute("subscription", "none"); break; + } + } + + if (item.getSubscriptionRequested()) { + itemElement.setAttribute("ask", "subscribe"); + } + + for (String group : item.getGroups()) { + XMLElement groupElement = new XMLElement("group"); + groupElement.addNode(new XMLTextNode(group)); + itemElement.addNode(groupElement); + } + + queryElement.addNode(itemElement); + } + + return queryElement.serialize(); + + + + } +} |