diff options
author | Tarun Gupta <tarun1995gupta@gmail.com> | 2015-06-17 20:29:48 (GMT) |
---|---|---|
committer | Tarun Gupta <tarun1995gupta@gmail.com> | 2015-06-23 14:50:06 (GMT) |
commit | 45e302d354d663eed61de58325ac162182497046 (patch) | |
tree | b5115b957fc2d0d7ffecc43d6cf3c3cf64c94493 /src/com/isode/stroke/serializer | |
parent | bb52f4e377fac262fe5b4f0ca2e1f6ed3669ee7d (diff) | |
download | stroke-45e302d354d663eed61de58325ac162182497046.zip stroke-45e302d354d663eed61de58325ac162182497046.tar.bz2 |
Add Roster Elements.
Adds RosterItemExchangePayload Element, its Parser and Serializer.
Updates RosterItemPayload, its Parser and Serializer.
License:
This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details.
Test-Information:
Tests added for:
RosterItemPayload Parser and Serializer.
RosterItemExchangePayload Parser and Serializer.
All tests passes.
Change-Id: I8d16a18290d9820cea6839af1f075da00a25db09
Diffstat (limited to 'src/com/isode/stroke/serializer')
3 files changed, 60 insertions, 0 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java index 9b88d0c..9ad402c 100644 --- a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java +++ b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java @@ -31,6 +31,7 @@ public class FullPayloadSerializerCollection extends PayloadSerializerCollection addSerializer(new JingleFileTransferHashSerializer()); addSerializer(new JingleContentPayloadSerializer()); addSerializer(new RosterSerializer()); + addSerializer(new RosterItemExchangeSerializer()); addSerializer(new MUCPayloadSerializer()); addSerializer(new MUCDestroyPayloadSerializer()); addSerializer(new MUCAdminPayloadSerializer()); diff --git a/src/com/isode/stroke/serializer/payloadserializers/RosterItemExchangeSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/RosterItemExchangeSerializer.java new file mode 100644 index 0000000..3aaab00 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/RosterItemExchangeSerializer.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2011 Jan Kaluza + * Licensed under the Simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ +/* + * Copyright (c) 2015 Tarun Gupta. + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.xml.XMLTextNode; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.RosterItemExchangePayload; +import com.isode.stroke.base.NotNull; + +public class RosterItemExchangeSerializer extends GenericPayloadSerializer<RosterItemExchangePayload> { + + public RosterItemExchangeSerializer() { + super(RosterItemExchangePayload.class); + } + + public String serializePayload(RosterItemExchangePayload roster) { + XMLElement queryElement = new XMLElement("x", "http://jabber.org/protocol/rosterx"); + for(RosterItemExchangePayload.Item item : roster.getItems()) { + XMLElement itemElement = new XMLElement("item"); + itemElement.setAttribute("jid", item.getJID().toString()); + itemElement.setAttribute("name", item.getName()); + + switch (item.getAction()) { + case Add: itemElement.setAttribute("action", "add"); break; + case Modify: itemElement.setAttribute("action", "modify"); break; + case Delete: itemElement.setAttribute("action", "delete"); break; + } + + for(String group : item.getGroups()) { + XMLElement groupElement = new XMLElement("group"); + groupElement.addNode(new XMLTextNode(group)); + itemElement.addNode(groupElement); + } + + queryElement.addNode(itemElement); + } + + return queryElement.serialize(); + } +}
\ No newline at end of file diff --git a/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java index b75d217..6ec1e58 100644 --- a/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java +++ b/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java @@ -13,6 +13,7 @@ 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; +import com.isode.stroke.serializer.xml.XMLRawTextNode; /** * Roster to string. @@ -26,6 +27,9 @@ public class RosterSerializer extends GenericPayloadSerializer<RosterPayload> { @Override protected String serializePayload(RosterPayload roster) { XMLElement queryElement = new XMLElement("query", "jabber:iq:roster"); + if (roster.getVersion() != null) { + queryElement.setAttribute("ver", roster.getVersion()); + } for (RosterItemPayload item : roster.getItems()) { XMLElement itemElement = new XMLElement("item"); itemElement.setAttribute("jid", item.getJID().toString()); @@ -53,6 +57,11 @@ public class RosterSerializer extends GenericPayloadSerializer<RosterPayload> { itemElement.addNode(groupElement); } + + if (item.getUnknownContent().length() != 0) { + itemElement.addNode(new XMLRawTextNode(item.getUnknownContent())); + } + queryElement.addNode(itemElement); } |