summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2011-07-01 09:19:49 (GMT)
committerKevin Smith <git@kismith.co.uk>2011-07-01 09:19:49 (GMT)
commit2da71a8a85486a494343f1662d64fb5ae5a2a44e (patch)
tree23992f9f2a00bac23b345e5c2cc9c1194efc25be /src/com/isode/stroke/serializer/payloadserializers
downloadstroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.zip
stroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.tar.bz2
Initial import
Diffstat (limited to 'src/com/isode/stroke/serializer/payloadserializers')
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/BodySerializer.java29
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java70
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java52
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/LastSerializer.java24
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/RawXMLPayloadSerializer.java25
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/ResourceBindSerializer.java38
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java64
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java66
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/SoftwareVersionSerializer.java39
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/StartSessionSerializer.java27
10 files changed, 434 insertions, 0 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/BodySerializer.java b/src/com/isode/stroke/serializer/payloadserializers/BodySerializer.java
new file mode 100644
index 0000000..31037db
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/BodySerializer.java
@@ -0,0 +1,29 @@
+/*
+ * 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.Body;
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+import com.isode.stroke.serializer.xml.XMLTextNode;
+
+/**
+ * Body to String.
+ */
+public class BodySerializer extends GenericPayloadSerializer<Body> {
+
+ public BodySerializer() {
+ super(Body.class);
+ }
+
+ @Override
+ protected String serializePayload(Body body) {
+ XMLTextNode textNode = new XMLTextNode(body.getText());
+ return "<body>" + textNode.serialize() + "</body>";
+ }
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java
new file mode 100644
index 0000000..9c34d53
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/ErrorSerializer.java
@@ -0,0 +1,70 @@
+/*
+ * 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.ErrorPayload;
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+import com.isode.stroke.serializer.xml.XMLTextNode;
+
+class ErrorSerializer extends GenericPayloadSerializer<ErrorPayload> {
+
+ public ErrorSerializer() {
+ super(ErrorPayload.class);
+ }
+
+ @Override
+ protected String serializePayload(ErrorPayload error) {
+ String result = "<error type=\"";
+ switch (error.getType()) {
+ case Continue: result += "continue"; break;
+ case Modify: result += "modify"; break;
+ case Auth: result += "auth"; break;
+ case Wait: result += "wait"; break;
+ default: result += "cancel"; break;
+ }
+ result += "\">";
+
+ String conditionElement;
+ switch (error.getCondition()) {
+ case BadRequest: conditionElement = "bad-request"; break;
+ case Conflict: conditionElement = "conflict"; break;
+ case FeatureNotImplemented: conditionElement = "feature-not-implemented"; break;
+ case Forbidden: conditionElement = "forbidden"; break;
+ case Gone: conditionElement = "gone"; break;
+ case InternalServerError: conditionElement = "internal-server-error"; break;
+ case ItemNotFound: conditionElement = "item-not-found"; break;
+ case JIDMalformed: conditionElement = "jid-malformed"; break;
+ case NotAcceptable: conditionElement = "not-acceptable"; break;
+ case NotAllowed: conditionElement = "not-allowed"; break;
+ case NotAuthorized: conditionElement = "not-authorized"; break;
+ case PaymentRequired: conditionElement = "payment-required"; break;
+ case RecipientUnavailable: conditionElement = "recipient-unavailable"; break;
+ case Redirect: conditionElement = "redirect"; break;
+ case RegistrationRequired: conditionElement = "registration-required"; break;
+ case RemoteServerNotFound: conditionElement = "remote-server-not-found"; break;
+ case RemoteServerTimeout: conditionElement = "remote-server-timeout"; break;
+ case ResourceConstraint: conditionElement = "resource-constraint"; break;
+ case ServiceUnavailable: conditionElement = "service-unavailable"; break;
+ case SubscriptionRequired: conditionElement = "subscription-required"; break;
+ case UnexpectedRequest: conditionElement = "unexpected-request"; break;
+ default: conditionElement = "undefined-condition"; break;
+ }
+ result += "<" + conditionElement + " xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>";
+
+ if (error.getText().length() != 0) {
+ XMLTextNode textNode = new XMLTextNode(error.getText());
+ result += "<text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">" + textNode.serialize() + "</text>";
+ }
+
+ result += "</error>";
+ return result;
+ }
+
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
new file mode 100644
index 0000000..52de35b
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
@@ -0,0 +1,52 @@
+/*
+ * 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.serializer.PayloadSerializerCollection;
+
+public class FullPayloadSerializerCollection extends PayloadSerializerCollection {
+
+ public FullPayloadSerializerCollection() {
+ /*FIXME: Implement what's needed. */
+ //addSerializer(new IBBSerializer());
+ addSerializer(new BodySerializer());
+ //addSerializer(new SubjectSerializer());
+ //addSerializer(new ChatStateSerializer());
+ //addSerializer(new PrioritySerializer());
+ addSerializer(new ErrorSerializer());
+ addSerializer(new RosterSerializer());
+ //addSerializer(new MUCPayloadSerializer());
+ //addSerializer(new MUCUserPayloadSerializer());
+ //addSerializer(new MUCOwnerPayloadSerializer(this));
+ addSerializer(new SoftwareVersionSerializer());
+ //addSerializer(new StatusSerializer());
+ //addSerializer(new StatusShowSerializer());
+ //addSerializer(new DiscoInfoSerializer());
+ //addSerializer(new DiscoItemsSerializer());
+ //addSerializer(new CapsInfoSerializer());
+ addSerializer(new ResourceBindSerializer());
+ addSerializer(new StartSessionSerializer());
+ //addSerializer(new SecurityLabelSerializer());
+ //addSerializer(new SecurityLabelsCatalogSerializer());
+ //addSerializer(new StreamInitiationSerializer());
+ //addSerializer(new BytestreamsSerializer());
+ //addSerializer(new VCardSerializer());
+ //addSerializer(new VCardUpdateSerializer());
+ addSerializer(new RawXMLPayloadSerializer());
+ //addSerializer(new StorageSerializer());
+ //addSerializer(new DelaySerializer());
+ //addSerializer(new FormSerializer());
+ //addSerializer(new PrivateStorageSerializer(this));
+ //addSerializer(new CommandSerializer());
+ //addSerializer(new NicknameSerializer());
+ addSerializer(new SearchPayloadSerializer());
+ addSerializer(new LastSerializer());
+ }
+
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/LastSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/LastSerializer.java
new file mode 100644
index 0000000..e78a724
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/LastSerializer.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2011 Isode Limited, London, England.
+ * All rights reserved.
+ */
+/*
+ * Copyright (c) 2011 Kevin Smith
+ * All rights reserved.
+ */
+package com.isode.stroke.serializer.payloadserializers;
+
+import com.isode.stroke.elements.Last;
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+
+public class LastSerializer extends GenericPayloadSerializer<Last> {
+
+ public LastSerializer() {
+ super(Last.class);
+ }
+
+ @Override
+ protected String serializePayload(Last last) {
+ return "<query xmlns='jabber:iq:last' seconds='" + Integer.toString(last.getSeconds()) + "'/>";
+ }
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/RawXMLPayloadSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/RawXMLPayloadSerializer.java
new file mode 100644
index 0000000..4128537
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/RawXMLPayloadSerializer.java
@@ -0,0 +1,25 @@
+/*
+ * 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.RawXMLPayload;
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+
+class RawXMLPayloadSerializer extends GenericPayloadSerializer<RawXMLPayload> {
+
+ public RawXMLPayloadSerializer() {
+ super(RawXMLPayloadSerializer.class);
+ }
+
+ @Override
+ protected String serializePayload(RawXMLPayload payload) {
+ return payload.getRawXML();
+ }
+
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/ResourceBindSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/ResourceBindSerializer.java
new file mode 100644
index 0000000..a33627b
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/ResourceBindSerializer.java
@@ -0,0 +1,38 @@
+/*
+ * 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.ResourceBind;
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.serializer.xml.XMLTextNode;
+
+class ResourceBindSerializer extends GenericPayloadSerializer<ResourceBind> {
+
+ public ResourceBindSerializer() {
+ super(ResourceBind.class);
+ }
+
+ @Override
+ protected String serializePayload(ResourceBind resourceBind) {
+ XMLElement bindElement = new XMLElement("bind", "urn:ietf:params:xml:ns:xmpp-bind");
+ if (resourceBind.getJID().isValid()) {
+ XMLElement jidNode = new XMLElement("jid");
+ jidNode.addNode(new XMLTextNode(resourceBind.getJID().toString()));
+ bindElement.addNode(jidNode);
+ }
+ else if (resourceBind.getResource().length() != 0) {
+ XMLElement resourceNode = new XMLElement("resource");
+ resourceNode.addNode(new XMLTextNode(resourceBind.getResource()));
+ bindElement.addNode(resourceNode);
+ }
+ return bindElement.serialize();
+ }
+
+}
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();
+
+
+
+ }
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java
new file mode 100644
index 0000000..6928c97
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/SearchPayloadSerializer.java
@@ -0,0 +1,66 @@
+/*
+ * 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.SearchPayload;
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.serializer.xml.XMLTextNode;
+
+/**
+ * SearchPayload to String.
+ */
+public class SearchPayloadSerializer extends GenericPayloadSerializer<SearchPayload> {
+
+ public SearchPayloadSerializer() {
+ super(SearchPayload.class);
+ }
+
+ @Override
+ protected String serializePayload(SearchPayload searchPayload) {
+ XMLElement searchElement = new XMLElement("query", "jabber:iq:search");
+
+ if (searchPayload.getInstructions() != null) {
+ searchElement.addNode(new XMLElement("instructions", "", searchPayload.getInstructions()));
+ }
+
+ if (searchPayload.getNick() != null) {
+ searchElement.addNode(new XMLElement("nick", "", searchPayload.getNick()));
+ }
+
+ if (searchPayload.getFirst() != null) {
+ searchElement.addNode(new XMLElement("first", "", searchPayload.getFirst()));
+ }
+
+ if (searchPayload.getLast() != null) {
+ searchElement.addNode(new XMLElement("last", "", searchPayload.getLast()));
+ }
+
+ if (searchPayload.getEMail() != null) {
+ searchElement.addNode(new XMLElement("email", "", searchPayload.getEMail()));
+ }
+
+ for (SearchPayload.Item item : searchPayload.getItems()) {
+ XMLElement itemElement = new XMLElement("item");
+ itemElement.setAttribute("jid", item.jid.toString());
+ itemElement.addNode(new XMLElement("first", "", item.first));
+ itemElement.addNode(new XMLElement("last", "", item.last));
+ itemElement.addNode(new XMLElement("nick", "", item.nick));
+ itemElement.addNode(new XMLElement("email", "", item.email));
+
+ searchElement.addNode(itemElement);
+ }
+
+ //if (Form::ref form = searchPayload->getForm()) {
+ // searchElement.addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(FormSerializer().serialize(form))));
+ //} /* Not ported yet. When the time comes, look at Swiften to check if it's changed. It will have. */
+
+ return searchElement.serialize();
+ }
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/SoftwareVersionSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/SoftwareVersionSerializer.java
new file mode 100644
index 0000000..cb2b653
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/SoftwareVersionSerializer.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2010 Remko Tron¨on
+ * All rights reserved.
+ */
+/*
+ * Copyright (c) 2010 Isode Limited, London, England.
+ * All rights reserved.
+ */
+
+package com.isode.stroke.serializer.payloadserializers;
+
+import com.isode.stroke.elements.Version;
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+
+public class SoftwareVersionSerializer extends GenericPayloadSerializer<Version>{
+
+ public SoftwareVersionSerializer() {
+ super(Version.class);
+ }
+
+ @Override
+ protected String serializePayload(Version version) {
+ StringBuilder result = new StringBuilder();
+ result.append("<query xmlns=\"jabber:iq:version\">");
+ if (version.getName() != null && version.getName().length() > 0) {
+ result.append("<name>").append(version.getName()).append("</name>");
+ }
+ if (version.getVersion() != null && version.getVersion().length() > 0) {
+ result.append("<version>").append(version.getVersion()).append("</version>");
+ }
+ if (version.getOS() != null && version.getOS().length() > 0) {
+ result.append("<os>").append(version.getOS()).append("</os>");
+ }
+ result.append("</query>");
+ return result.toString();
+
+ }
+
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/StartSessionSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/StartSessionSerializer.java
new file mode 100644
index 0000000..8d36b8c
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/StartSessionSerializer.java
@@ -0,0 +1,27 @@
+/*
+ * 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.StartSession;
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+import com.isode.stroke.serializer.xml.XMLElement;
+
+class StartSessionSerializer extends GenericPayloadSerializer<StartSession> {
+
+ public StartSessionSerializer() {
+ super(StartSession.class);
+ }
+
+ @Override
+ protected String serializePayload(StartSession payload) {
+ return new XMLElement("session", "urn:ietf:params:xml:ns:xmpp-session").serialize();
+ }
+
+}