diff options
author | Richard Maudsley <richard.maudsley@isode.com> | 2014-02-04 09:49:24 (GMT) |
---|---|---|
committer | Richard Maudsley <richard.maudsley@isode.com> | 2014-03-07 14:28:58 (GMT) |
commit | a511087b1f57f1f6372374f41d0b4b7ebeef9930 (patch) | |
tree | a319c6c65f4c4722635f78ac564a823a370d011c /src/com/isode/stroke/serializer | |
parent | 535e1a979a164f807aa64bf2df2bb36e7015ff17 (diff) | |
download | stroke-a511087b1f57f1f6372374f41d0b4b7ebeef9930.zip stroke-a511087b1f57f1f6372374f41d0b4b7ebeef9930.tar.bz2 |
PubSub parsers and serializers, plus manager and test code.
Change-Id: Ie8ca77ba8dbcd83926d46307ad0e73d804ff7422
Diffstat (limited to 'src/com/isode/stroke/serializer')
41 files changed, 1899 insertions, 1 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java index d8a7a7d..f846d85 100644 --- a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java +++ b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java @@ -56,6 +56,11 @@ public class FullPayloadSerializerCollection extends PayloadSerializerCollection //addSerializer(new NicknameSerializer()); addSerializer(new SearchPayloadSerializer()); addSerializer(new LastSerializer()); + + addSerializer(new PubSubSerializer(this)); + addSerializer(new PubSubEventSerializer(this)); + addSerializer(new PubSubOwnerPubSubSerializer(this)); + addSerializer(new PubSubErrorSerializer()); } } diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubAffiliationSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubAffiliationSerializer.java new file mode 100644 index 0000000..df26b3a --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubAffiliationSerializer.java @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubAffiliation; + +public class PubSubAffiliationSerializer extends GenericPayloadSerializer<PubSubAffiliation> { +public PubSubAffiliationSerializer(PayloadSerializerCollection serializers) { + super(PubSubAffiliation.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubAffiliation payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("affiliation", "http://jabber.org/protocol/pubsub"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + element.setAttribute("affiliation", serializeType(payload.getType())); + + return element.serialize(); +} + +private static String serializeType(PubSubAffiliation.Type value) { + switch (value) { + case None: return "none"; + case Member: return "member"; + case Outcast: return "outcast"; + case Owner: return "owner"; + case Publisher: return "publisher"; + case PublishOnly: return "publish-only"; + } + return "undefined-type"; +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubAffiliationsSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubAffiliationsSerializer.java new file mode 100644 index 0000000..bceac02 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubAffiliationsSerializer.java @@ -0,0 +1,45 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubAffiliation; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubAffiliations; + +public class PubSubAffiliationsSerializer extends GenericPayloadSerializer<PubSubAffiliations> { +public PubSubAffiliationsSerializer(PayloadSerializerCollection serializers) { + super(PubSubAffiliations.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubAffiliations payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("affiliations", "http://jabber.org/protocol/pubsub"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + for (PubSubAffiliation item : payload.getAffiliations()) { + element.addNode(new XMLRawTextNode((new PubSubAffiliationSerializer(serializers_)).serialize(item))); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubConfigureSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubConfigureSerializer.java new file mode 100644 index 0000000..6f5dd10 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubConfigureSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.serializer.payloadserializers.FormSerializer; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubConfigure; + +public class PubSubConfigureSerializer extends GenericPayloadSerializer<PubSubConfigure> { +public PubSubConfigureSerializer(PayloadSerializerCollection serializers) { + super(PubSubConfigure.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubConfigure payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("configure", "http://jabber.org/protocol/pubsub"); + + element.addNode(new XMLRawTextNode((new FormSerializer()).serialize(payload.getData()))); + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubCreateSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubCreateSerializer.java new file mode 100644 index 0000000..45b4128 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubCreateSerializer.java @@ -0,0 +1,40 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubConfigure; +import com.isode.stroke.elements.PubSubCreate; + +public class PubSubCreateSerializer extends GenericPayloadSerializer<PubSubCreate> { +public PubSubCreateSerializer(PayloadSerializerCollection serializers) { + super(PubSubCreate.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubCreate payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("create", "http://jabber.org/protocol/pubsub"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubDefaultSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubDefaultSerializer.java new file mode 100644 index 0000000..88efb53 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubDefaultSerializer.java @@ -0,0 +1,50 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubDefault; + +public class PubSubDefaultSerializer extends GenericPayloadSerializer<PubSubDefault> { +public PubSubDefaultSerializer(PayloadSerializerCollection serializers) { + super(PubSubDefault.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubDefault payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("default", "http://jabber.org/protocol/pubsub"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + element.setAttribute("type", serializeType(payload.getType())); + + return element.serialize(); +} + +private static String serializeType(PubSubDefault.Type value) { + switch (value) { + case None: return "none"; + case Collection: return "collection"; + case Leaf: return "leaf"; + } + return "undefined-type"; +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubErrorSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubErrorSerializer.java new file mode 100644 index 0000000..d4f765f --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubErrorSerializer.java @@ -0,0 +1,112 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.elements.PubSubError; +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.xml.XMLElement; + +public class PubSubErrorSerializer extends GenericPayloadSerializer<PubSubError> { +public PubSubErrorSerializer() { + super(PubSubError.class); +} + +@Override +public String serializePayload(PubSubError payload) { + if (payload.getType().equals(PubSubError.Type.UnknownType)) { + return ""; + } + XMLElement element = new XMLElement(serializeType(payload.getType()), "http://jabber.org/protocol/pubsub#errors"); + if (payload.getType().equals(PubSubError.Type.Unsupported)) { + if (!payload.getUnsupportedFeatureType().equals(PubSubError.UnsupportedFeatureType.UnknownUnsupportedFeatureType)) { + element.setAttribute("feature", serializeUnsupportedFeatureType(payload.getUnsupportedFeatureType())); + } + } + return element.serialize(); +} + +static String serializeType(PubSubError.Type value) { + switch (value) { + case UnknownType: return ""; + case ClosedNode: return "closed-node"; + case ConfigurationRequired: return "configuration-required"; + case InvalidJID: return "invalid-jid"; + case InvalidOptions: return "invalid-options"; + case InvalidPayload: return "invalid-payload"; + case InvalidSubscriptionID: return "invalid-subid"; + case ItemForbidden: return "item-forbidden"; + case ItemRequired: return "item-required"; + case JIDRequired: return "jid-required"; + case MaximumItemsExceeded: return "max-items-exceeded"; + case MaximumNodesExceeded: return "max-nodes-exceeded"; + case NodeIDRequired: return "nodeid-required"; + case NotInRosterGroup: return "not-in-roster-group"; + case NotSubscribed: return "not-subscribed"; + case PayloadTooBig: return "payload-too-big"; + case PayloadRequired: return "payload-required"; + case PendingSubscription: return "pending-subscription"; + case PresenceSubscriptionRequired: return "presence-subscription-required"; + case SubscriptionIDRequired: return "subid-required"; + case TooManySubscriptions: return "too-many-subscriptions"; + case Unsupported: return "unsupported"; + case UnsupportedAccessModel: return "unsupported-access-model"; + default: return null; + } +} + +static String serializeUnsupportedFeatureType(PubSubError.UnsupportedFeatureType value) { + switch (value) { + case UnknownUnsupportedFeatureType: assert(false); return ""; + case AccessAuthorize: return "access-authorize"; + case AccessOpen: return "access-open"; + case AccessPresence: return "access-presence"; + case AccessRoster: return "access-roster"; + case AccessWhitelist: return "access-whitelist"; + case AutoCreate: return "auto-create"; + case AutoSubscribe: return "auto-subscribe"; + case Collections: return "collections"; + case ConfigNode: return "config-node"; + case CreateAndConfigure: return "create-and-configure"; + case CreateNodes: return "create-nodes"; + case DeleteItems: return "delete-items"; + case DeleteNodes: return "delete-nodes"; + case FilteredNotifications: return "filtered-notifications"; + case GetPending: return "get-pending"; + case InstantNodes: return "instant-nodes"; + case ItemIDs: return "item-ids"; + case LastPublished: return "last-published"; + case LeasedSubscription: return "leased-subscription"; + case ManageSubscriptions: return "manage-subscriptions"; + case MemberAffiliation: return "member-affiliation"; + case MetaData: return "meta-data"; + case ModifyAffiliations: return "modify-affiliations"; + case MultiCollection: return "multi-collection"; + case MultiSubscribe: return "multi-subscribe"; + case OutcastAffiliation: return "outcast-affiliation"; + case PersistentItems: return "persistent-items"; + case PresenceNotifications: return "presence-notifications"; + case PresenceSubscribe: return "presence-subscribe"; + case Publish: return "publish"; + case PublishOptions: return "publish-options"; + case PublishOnlyAffiliation: return "publish-only-affiliation"; + case PublisherAffiliation: return "publisher-affiliation"; + case PurgeNodes: return "purge-nodes"; + case RetractItems: return "retract-items"; + case RetrieveAffiliations: return "retrieve-affiliations"; + case RetrieveDefault: return "retrieve-default"; + case RetrieveItems: return "retrieve-items"; + case RetrieveSubscriptions: return "retrieve-subscriptions"; + case Subscribe: return "subscribe"; + case SubscriptionOptions: return "subscription-options"; + case SubscriptionNotifications: return "subscription-notifications"; + default: return null; + } +} +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventAssociateSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventAssociateSerializer.java new file mode 100644 index 0000000..83b769b --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventAssociateSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubEventAssociate; + +public class PubSubEventAssociateSerializer extends GenericPayloadSerializer<PubSubEventAssociate> { +public PubSubEventAssociateSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventAssociate.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventAssociate payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("associate", "http://jabber.org/protocol/pubsub#event"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventCollectionSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventCollectionSerializer.java new file mode 100644 index 0000000..194d9bb --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventCollectionSerializer.java @@ -0,0 +1,46 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubEventAssociate; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubEventDisassociate; +import com.isode.stroke.elements.PubSubEventCollection; + +public class PubSubEventCollectionSerializer extends GenericPayloadSerializer<PubSubEventCollection> { +public PubSubEventCollectionSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventCollection.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventCollection payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("collection", "http://jabber.org/protocol/pubsub#event"); + + element.addNode(new XMLRawTextNode((new PubSubEventAssociateSerializer(serializers_)).serialize(payload.getAssociate()))); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + element.addNode(new XMLRawTextNode((new PubSubEventDisassociateSerializer(serializers_)).serialize(payload.getDisassociate()))); + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventConfigurationSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventConfigurationSerializer.java new file mode 100644 index 0000000..0876853 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventConfigurationSerializer.java @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.serializer.payloadserializers.FormSerializer; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubEventConfiguration; + +public class PubSubEventConfigurationSerializer extends GenericPayloadSerializer<PubSubEventConfiguration> { +public PubSubEventConfigurationSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventConfiguration.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventConfiguration payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("configuration", "http://jabber.org/protocol/pubsub#event"); + + element.addNode(new XMLRawTextNode((new FormSerializer()).serialize(payload.getData()))); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventDeleteSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventDeleteSerializer.java new file mode 100644 index 0000000..1c54016 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventDeleteSerializer.java @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubEventRedirect; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubEventDelete; + +public class PubSubEventDeleteSerializer extends GenericPayloadSerializer<PubSubEventDelete> { +public PubSubEventDeleteSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventDelete.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventDelete payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("delete", "http://jabber.org/protocol/pubsub#event"); + + element.addNode(new XMLRawTextNode((new PubSubEventRedirectSerializer(serializers_)).serialize(payload.getRedirects()))); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventDisassociateSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventDisassociateSerializer.java new file mode 100644 index 0000000..34cb3d0 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventDisassociateSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubEventDisassociate; + +public class PubSubEventDisassociateSerializer extends GenericPayloadSerializer<PubSubEventDisassociate> { +public PubSubEventDisassociateSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventDisassociate.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventDisassociate payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("disassociate", "http://jabber.org/protocol/pubsub#event"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventItemSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventItemSerializer.java new file mode 100644 index 0000000..939f268 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventItemSerializer.java @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.Payload; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubEventItem; + +public class PubSubEventItemSerializer extends GenericPayloadSerializer<PubSubEventItem> { +public PubSubEventItemSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventItem.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventItem payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("item", "http://jabber.org/protocol/pubsub#event"); + + if(payload.getPublisher() != null) { + element.setAttribute("publisher", payload.getPublisher()); + } + + for (Payload item : payload.getData()) { + element.addNode(new XMLRawTextNode(serializers_.getPayloadSerializer(item).serialize(item))); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + if(payload.getID() != null) { + element.setAttribute("id", payload.getID()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventItemsSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventItemsSerializer.java new file mode 100644 index 0000000..9b49e59 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventItemsSerializer.java @@ -0,0 +1,50 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubEventItem; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubEventRetract; +import com.isode.stroke.elements.PubSubEventItems; + +public class PubSubEventItemsSerializer extends GenericPayloadSerializer<PubSubEventItems> { +public PubSubEventItemsSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventItems.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventItems payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("items", "http://jabber.org/protocol/pubsub#event"); + + for (PubSubEventItem item : payload.getItems()) { + element.addNode(new XMLRawTextNode((new PubSubEventItemSerializer(serializers_)).serialize(item))); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + for (PubSubEventRetract item : payload.getRetracts()) { + element.addNode(new XMLRawTextNode((new PubSubEventRetractSerializer(serializers_)).serialize(item))); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventPurgeSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventPurgeSerializer.java new file mode 100644 index 0000000..224f6f0 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventPurgeSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubEventPurge; + +public class PubSubEventPurgeSerializer extends GenericPayloadSerializer<PubSubEventPurge> { +public PubSubEventPurgeSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventPurge.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventPurge payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("purge", "http://jabber.org/protocol/pubsub#event"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventRedirectSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventRedirectSerializer.java new file mode 100644 index 0000000..53d105c --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventRedirectSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubEventRedirect; + +public class PubSubEventRedirectSerializer extends GenericPayloadSerializer<PubSubEventRedirect> { +public PubSubEventRedirectSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventRedirect.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventRedirect payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("redirect", "http://jabber.org/protocol/pubsub#event"); + + if(payload.getURI() != null) { + element.setAttribute("uri", payload.getURI()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventRetractSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventRetractSerializer.java new file mode 100644 index 0000000..dbb6bae --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventRetractSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubEventRetract; + +public class PubSubEventRetractSerializer extends GenericPayloadSerializer<PubSubEventRetract> { +public PubSubEventRetractSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventRetract.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventRetract payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("retract", "http://jabber.org/protocol/pubsub#event"); + + if(payload.getID() != null) { + element.setAttribute("id", payload.getID()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventSerializer.java new file mode 100644 index 0000000..e7e09a3 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventSerializer.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014, Isode Limited, London, England. + * All rights reserved. + */ +/* + * Copyright (c) 2014, Remko Tronçon. + * All rights reserved. + */ + +package com.isode.stroke.serializer.payloadserializers; + +import java.util.ArrayList; + +import com.isode.stroke.elements.PubSubEventPayload; +import com.isode.stroke.parser.payloadparsers.PubSubEvent; +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; + +public class PubSubEventSerializer extends GenericPayloadSerializer<PubSubEvent> { + public PubSubEventSerializer(PayloadSerializerCollection serializer) { + super(PubSubEvent.class); + } + + protected String serializePayload(PubSubEvent payload) { + if (payload == null) { + return ""; + } + XMLElement element = new XMLElement("event", "http://jabber.org/protocol/pubsub#event"); + PubSubEventPayload p = payload.getPayload(); + + for (PayloadSerializer serializer : pubsubSerializers_) { + if (serializer.canSerialize(p)) { + element.addNode(new XMLRawTextNode(serializer.serialize(p))); + } + } + return element.serialize(); + } + + PayloadSerializerCollection serializers_; + ArrayList<PayloadSerializer> pubsubSerializers_ = new ArrayList<PayloadSerializer>(); +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubEventSubscriptionSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventSubscriptionSerializer.java new file mode 100644 index 0000000..d34bfb1 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubEventSubscriptionSerializer.java @@ -0,0 +1,75 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; +import com.isode.stroke.elements.PubSubEventSubscription; + +public class PubSubEventSubscriptionSerializer extends GenericPayloadSerializer<PubSubEventSubscription> { +public PubSubEventSubscriptionSerializer(PayloadSerializerCollection serializers) { + super(PubSubEventSubscription.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubEventSubscription payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("subscription", "http://jabber.org/protocol/pubsub#event"); + + element.setAttribute("subscription", serializeSubscriptionType(payload.getSubscription())); + + if(payload.getSubscriptionID() != null) { + element.setAttribute("subid", payload.getSubscriptionID()); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + if(payload.getJID() != null) { + element.setAttribute("jid", payload.getJID().toString()); + } + + if(payload.getExpiry() != null) { + element.setAttribute("expiry", dateToString(payload.getExpiry())); + } + + return element.serialize(); +} + +private static String serializeSubscriptionType(PubSubEventSubscription.SubscriptionType value) { + switch (value) { + case None: return "none"; + case Pending: return "pending"; + case Subscribed: return "subscribed"; + case Unconfigured: return "unconfigured"; + } + return "undefined-subscriptiontype"; +} + +private static String dateToString(Date date) { + SimpleDateFormat dfm = new SimpleDateFormat("YYYY-MM-dd"); + SimpleDateFormat tfm = new SimpleDateFormat("hh:mm:ss"); + dfm.setTimeZone(TimeZone.getTimeZone("UTC")); + tfm.setTimeZone(TimeZone.getTimeZone("UTC")); + String sinceDateString = dfm.format(date) + "T" + tfm.format(date) + "Z"; + return sinceDateString; +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubItemSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubItemSerializer.java new file mode 100644 index 0000000..dc34489 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubItemSerializer.java @@ -0,0 +1,45 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.Payload; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubItem; + +public class PubSubItemSerializer extends GenericPayloadSerializer<PubSubItem> { +public PubSubItemSerializer(PayloadSerializerCollection serializers) { + super(PubSubItem.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubItem payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("item", "http://jabber.org/protocol/pubsub"); + + for (Payload item : payload.getData()) { + element.addNode(new XMLRawTextNode(serializers_.getPayloadSerializer(item).serialize(item))); + } + + if(payload.getID() != null) { + element.setAttribute("id", payload.getID()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubItemsSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubItemsSerializer.java new file mode 100644 index 0000000..6739e44 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubItemsSerializer.java @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubItem; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubItems; + +public class PubSubItemsSerializer extends GenericPayloadSerializer<PubSubItems> { +public PubSubItemsSerializer(PayloadSerializerCollection serializers) { + super(PubSubItems.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubItems payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("items", "http://jabber.org/protocol/pubsub"); + + if(payload.getMaximumItems() != null) { + element.setAttribute("max_items", payload.getMaximumItems().toString()); + } + + for (PubSubItem item : payload.getItems()) { + element.addNode(new XMLRawTextNode((new PubSubItemSerializer(serializers_)).serialize(item))); + } + + if(payload.getSubscriptionID() != null) { + element.setAttribute("subid", payload.getSubscriptionID()); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOptionsSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOptionsSerializer.java new file mode 100644 index 0000000..2f3cb54 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOptionsSerializer.java @@ -0,0 +1,51 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.serializer.payloadserializers.FormSerializer; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubOptions; + +public class PubSubOptionsSerializer extends GenericPayloadSerializer<PubSubOptions> { +public PubSubOptionsSerializer(PayloadSerializerCollection serializers) { + super(PubSubOptions.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOptions payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("options", "http://jabber.org/protocol/pubsub"); + + element.addNode(new XMLRawTextNode((new FormSerializer()).serialize(payload.getData()))); + + if(payload.getSubscriptionID() != null) { + element.setAttribute("subid", payload.getSubscriptionID()); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + if(payload.getJID() != null) { + element.setAttribute("jid", payload.getJID().toString()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerAffiliationSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerAffiliationSerializer.java new file mode 100644 index 0000000..144a469 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerAffiliationSerializer.java @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubOwnerAffiliation; + +public class PubSubOwnerAffiliationSerializer extends GenericPayloadSerializer<PubSubOwnerAffiliation> { +public PubSubOwnerAffiliationSerializer(PayloadSerializerCollection serializers) { + super(PubSubOwnerAffiliation.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOwnerAffiliation payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("affiliation", "http://jabber.org/protocol/pubsub#owner"); + + if(payload.getJID() != null) { + element.setAttribute("jid", payload.getJID().toString()); + } + + element.setAttribute("affiliation", serializeType(payload.getType())); + + return element.serialize(); +} + +private static String serializeType(PubSubOwnerAffiliation.Type value) { + switch (value) { + case None: return "none"; + case Member: return "member"; + case Outcast: return "outcast"; + case Owner: return "owner"; + case Publisher: return "publisher"; + case PublishOnly: return "publish-only"; + } + return "undefined-type"; +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerAffiliationsSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerAffiliationsSerializer.java new file mode 100644 index 0000000..5c9898f --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerAffiliationsSerializer.java @@ -0,0 +1,45 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubOwnerAffiliation; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubOwnerAffiliations; + +public class PubSubOwnerAffiliationsSerializer extends GenericPayloadSerializer<PubSubOwnerAffiliations> { +public PubSubOwnerAffiliationsSerializer(PayloadSerializerCollection serializers) { + super(PubSubOwnerAffiliations.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOwnerAffiliations payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("affiliations", "http://jabber.org/protocol/pubsub#owner"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + for (PubSubOwnerAffiliation item : payload.getAffiliations()) { + element.addNode(new XMLRawTextNode((new PubSubOwnerAffiliationSerializer(serializers_)).serialize(item))); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerConfigureSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerConfigureSerializer.java new file mode 100644 index 0000000..bcf03e3 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerConfigureSerializer.java @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.serializer.payloadserializers.FormSerializer; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubOwnerConfigure; + +public class PubSubOwnerConfigureSerializer extends GenericPayloadSerializer<PubSubOwnerConfigure> { +public PubSubOwnerConfigureSerializer(PayloadSerializerCollection serializers) { + super(PubSubOwnerConfigure.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOwnerConfigure payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("configure", "http://jabber.org/protocol/pubsub#owner"); + + element.addNode(new XMLRawTextNode((new FormSerializer()).serialize(payload.getData()))); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerDefaultSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerDefaultSerializer.java new file mode 100644 index 0000000..3b3fe98 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerDefaultSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.serializer.payloadserializers.FormSerializer; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubOwnerDefault; + +public class PubSubOwnerDefaultSerializer extends GenericPayloadSerializer<PubSubOwnerDefault> { +public PubSubOwnerDefaultSerializer(PayloadSerializerCollection serializers) { + super(PubSubOwnerDefault.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOwnerDefault payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("default", "http://jabber.org/protocol/pubsub#owner"); + + element.addNode(new XMLRawTextNode((new FormSerializer()).serialize(payload.getData()))); + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerDeleteSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerDeleteSerializer.java new file mode 100644 index 0000000..6518f56 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerDeleteSerializer.java @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubOwnerRedirect; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubOwnerDelete; + +public class PubSubOwnerDeleteSerializer extends GenericPayloadSerializer<PubSubOwnerDelete> { +public PubSubOwnerDeleteSerializer(PayloadSerializerCollection serializers) { + super(PubSubOwnerDelete.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOwnerDelete payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("delete", "http://jabber.org/protocol/pubsub#owner"); + + element.addNode(new XMLRawTextNode((new PubSubOwnerRedirectSerializer(serializers_)).serialize(payload.getRedirect()))); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerPubSubSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerPubSubSerializer.java new file mode 100644 index 0000000..6a72af0 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerPubSubSerializer.java @@ -0,0 +1,56 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import java.util.ArrayList; + +import com.isode.stroke.elements.PubSubOwnerPayload; +import com.isode.stroke.elements.PubSubOwnerPubSub; +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; + +public class PubSubOwnerPubSubSerializer extends GenericPayloadSerializer<PubSubOwnerPubSub> { + +public PubSubOwnerPubSubSerializer(PayloadSerializerCollection serializers) +{ + super(PubSubOwnerPubSub.class); + + serializers_ = serializers; + + pubsubSerializers_.add(new PubSubOwnerConfigureSerializer(serializers)); + pubsubSerializers_.add(new PubSubOwnerSubscriptionsSerializer(serializers)); + pubsubSerializers_.add(new PubSubOwnerDefaultSerializer(serializers)); + pubsubSerializers_.add(new PubSubOwnerPurgeSerializer(serializers)); + pubsubSerializers_.add(new PubSubOwnerAffiliationsSerializer(serializers)); + pubsubSerializers_.add(new PubSubOwnerDeleteSerializer(serializers)); +} + +protected String serializePayload(PubSubOwnerPubSub payload) +{ + if (payload == null) { + return ""; + } + XMLElement element = new XMLElement("pubsub", "http://jabber.org/protocol/pubsub#owner"); + PubSubOwnerPayload p = payload.getPayload(); + for (PayloadSerializer serializer : pubsubSerializers_) { + if (serializer.canSerialize(p)) { + element.addNode(new XMLRawTextNode(serializer.serialize(p))); + } + } + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +ArrayList<PayloadSerializer> pubsubSerializers_ = new ArrayList<PayloadSerializer>(); + +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerPurgeSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerPurgeSerializer.java new file mode 100644 index 0000000..59d3d39 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerPurgeSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubOwnerPurge; + +public class PubSubOwnerPurgeSerializer extends GenericPayloadSerializer<PubSubOwnerPurge> { +public PubSubOwnerPurgeSerializer(PayloadSerializerCollection serializers) { + super(PubSubOwnerPurge.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOwnerPurge payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("purge", "http://jabber.org/protocol/pubsub#owner"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerRedirectSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerRedirectSerializer.java new file mode 100644 index 0000000..a1ad660 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerRedirectSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubOwnerRedirect; + +public class PubSubOwnerRedirectSerializer extends GenericPayloadSerializer<PubSubOwnerRedirect> { +public PubSubOwnerRedirectSerializer(PayloadSerializerCollection serializers) { + super(PubSubOwnerRedirect.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOwnerRedirect payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("redirect", "http://jabber.org/protocol/pubsub#owner"); + + if(payload.getURI() != null) { + element.setAttribute("uri", payload.getURI()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerSubscriptionSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerSubscriptionSerializer.java new file mode 100644 index 0000000..81cbec8 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerSubscriptionSerializer.java @@ -0,0 +1,51 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubOwnerSubscription; + +public class PubSubOwnerSubscriptionSerializer extends GenericPayloadSerializer<PubSubOwnerSubscription> { +public PubSubOwnerSubscriptionSerializer(PayloadSerializerCollection serializers) { + super(PubSubOwnerSubscription.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOwnerSubscription payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("subscription", "http://jabber.org/protocol/pubsub#owner"); + + element.setAttribute("subscription", serializeSubscriptionType(payload.getSubscription())); + + if(payload.getJID() != null) { + element.setAttribute("jid", payload.getJID().toString()); + } + + return element.serialize(); +} + +private static String serializeSubscriptionType(PubSubOwnerSubscription.SubscriptionType value) { + switch (value) { + case None: return "none"; + case Pending: return "pending"; + case Subscribed: return "subscribed"; + case Unconfigured: return "unconfigured"; + } + return "undefined-subscriptiontype"; +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerSubscriptionsSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerSubscriptionsSerializer.java new file mode 100644 index 0000000..c66a1b0 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubOwnerSubscriptionsSerializer.java @@ -0,0 +1,45 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubOwnerSubscription; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubOwnerSubscriptions; + +public class PubSubOwnerSubscriptionsSerializer extends GenericPayloadSerializer<PubSubOwnerSubscriptions> { +public PubSubOwnerSubscriptionsSerializer(PayloadSerializerCollection serializers) { + super(PubSubOwnerSubscriptions.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubOwnerSubscriptions payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("subscriptions", "http://jabber.org/protocol/pubsub#owner"); + + for (PubSubOwnerSubscription item : payload.getSubscriptions()) { + element.addNode(new XMLRawTextNode((new PubSubOwnerSubscriptionSerializer(serializers_)).serialize(item))); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubPublishSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubPublishSerializer.java new file mode 100644 index 0000000..ec71839 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubPublishSerializer.java @@ -0,0 +1,45 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubItem; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubPublish; + +public class PubSubPublishSerializer extends GenericPayloadSerializer<PubSubPublish> { +public PubSubPublishSerializer(PayloadSerializerCollection serializers) { + super(PubSubPublish.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubPublish payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("publish", "http://jabber.org/protocol/pubsub"); + + for (PubSubItem item : payload.getItems()) { + element.addNode(new XMLRawTextNode((new PubSubItemSerializer(serializers_)).serialize(item))); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubRetractSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubRetractSerializer.java new file mode 100644 index 0000000..87f18ce --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubRetractSerializer.java @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubItem; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubRetract; + +public class PubSubRetractSerializer extends GenericPayloadSerializer<PubSubRetract> { +public PubSubRetractSerializer(PayloadSerializerCollection serializers) { + super(PubSubRetract.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubRetract payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("retract", "http://jabber.org/protocol/pubsub"); + + for (PubSubItem item : payload.getItems()) { + element.addNode(new XMLRawTextNode((new PubSubItemSerializer(serializers_)).serialize(item))); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + element.setAttribute("notify", payload.isNotify() ? "true" : "false"); + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubSerializer.java new file mode 100644 index 0000000..232baa7 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubSerializer.java @@ -0,0 +1,73 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import java.util.ArrayList; + +import com.isode.stroke.elements.PubSub; +import com.isode.stroke.elements.PubSubCreate; +import com.isode.stroke.elements.PubSubPayload; +import com.isode.stroke.elements.PubSubSubscribe; +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; + +public class PubSubSerializer extends GenericPayloadSerializer<PubSub> { + +public PubSubSerializer(PayloadSerializerCollection serializers) { + super(PubSub.class); + + serializers_ = serializers; + + pubsubSerializers_.add(new PubSubItemsSerializer(serializers)); + pubsubSerializers_.add(new PubSubCreateSerializer(serializers)); + pubsubSerializers_.add(new PubSubPublishSerializer(serializers)); + pubsubSerializers_.add(new PubSubOptionsSerializer(serializers)); + pubsubSerializers_.add(new PubSubAffiliationsSerializer(serializers)); + pubsubSerializers_.add(new PubSubRetractSerializer(serializers)); + pubsubSerializers_.add(new PubSubDefaultSerializer(serializers)); + pubsubSerializers_.add(new PubSubSubscriptionsSerializer(serializers)); + pubsubSerializers_.add(new PubSubSubscribeSerializer(serializers)); + pubsubSerializers_.add(new PubSubUnsubscribeSerializer(serializers)); + pubsubSerializers_.add(new PubSubSubscriptionSerializer(serializers)); +} + +@Override +protected String serializePayload(PubSub payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("pubsub", "http://jabber.org/protocol/pubsub"); + PubSubPayload p = payload.getPayload(); + + for (PayloadSerializer serializer : pubsubSerializers_) { + if (serializer.canSerialize(p)) { + element.addNode(new XMLRawTextNode(serializer.serialize(p))); + PubSubCreate create = null; + if(p instanceof PubSubCreate) { + create = (PubSubCreate)p; + element.addNode(new XMLRawTextNode((new PubSubConfigureSerializer(serializers_)).serialize(create.getConfigure()))); + } + PubSubSubscribe subscribe = null; + if (p instanceof PubSubSubscribe) { + subscribe = (PubSubSubscribe)p; + element.addNode(new XMLRawTextNode((new PubSubConfigureSerializer(serializers_)).serialize(subscribe.getOptions()))); + } + } + } + return element.serialize(); +} + +ArrayList<PayloadSerializer> pubsubSerializers_ = new ArrayList<PayloadSerializer>(); +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscribeOptionsSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscribeOptionsSerializer.java new file mode 100644 index 0000000..40c0298 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscribeOptionsSerializer.java @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubSubscribeOptions; + +public class PubSubSubscribeOptionsSerializer extends GenericPayloadSerializer<PubSubSubscribeOptions> { +public PubSubSubscribeOptionsSerializer(PayloadSerializerCollection serializers) { + super(PubSubSubscribeOptions.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubSubscribeOptions payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("subscribe-options", "http://jabber.org/protocol/pubsub"); + + if (payload.isRequired()) { + element.addNode(new XMLElement("required", "")); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscribeSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscribeSerializer.java new file mode 100644 index 0000000..9a886b9 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscribeSerializer.java @@ -0,0 +1,44 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubOptions; +import com.isode.stroke.elements.PubSubSubscribe; + +public class PubSubSubscribeSerializer extends GenericPayloadSerializer<PubSubSubscribe> { +public PubSubSubscribeSerializer(PayloadSerializerCollection serializers) { + super(PubSubSubscribe.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubSubscribe payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("subscribe", "http://jabber.org/protocol/pubsub"); + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + if(payload.getJID() != null) { + element.setAttribute("jid", payload.getJID().toString()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscriptionSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscriptionSerializer.java new file mode 100644 index 0000000..41e6f9d --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscriptionSerializer.java @@ -0,0 +1,63 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubSubscribeOptions; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubSubscription; + +public class PubSubSubscriptionSerializer extends GenericPayloadSerializer<PubSubSubscription> { +public PubSubSubscriptionSerializer(PayloadSerializerCollection serializers) { + super(PubSubSubscription.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubSubscription payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("subscription", "http://jabber.org/protocol/pubsub"); + + element.setAttribute("subscription", serializeSubscriptionType(payload.getSubscription())); + + if(payload.getSubscriptionID() != null) { + element.setAttribute("subid", payload.getSubscriptionID()); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + if(payload.getJID() != null) { + element.setAttribute("jid", payload.getJID().toString()); + } + + element.addNode(new XMLRawTextNode((new PubSubSubscribeOptionsSerializer(serializers_)).serialize(payload.getOptions()))); + + return element.serialize(); +} + +private static String serializeSubscriptionType(PubSubSubscription.SubscriptionType value) { + switch (value) { + case None: return "none"; + case Pending: return "pending"; + case Subscribed: return "subscribed"; + case Unconfigured: return "unconfigured"; + } + return "undefined-subscriptiontype"; +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscriptionsSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscriptionsSerializer.java new file mode 100644 index 0000000..2092caa --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubSubscriptionsSerializer.java @@ -0,0 +1,45 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubSubscription; +import com.isode.stroke.serializer.xml.XMLRawTextNode; +import com.isode.stroke.elements.PubSubSubscriptions; + +public class PubSubSubscriptionsSerializer extends GenericPayloadSerializer<PubSubSubscriptions> { +public PubSubSubscriptionsSerializer(PayloadSerializerCollection serializers) { + super(PubSubSubscriptions.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubSubscriptions payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("subscriptions", "http://jabber.org/protocol/pubsub"); + + for (PubSubSubscription item : payload.getSubscriptions()) { + element.addNode(new XMLRawTextNode((new PubSubSubscriptionSerializer(serializers_)).serialize(item))); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/PubSubUnsubscribeSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/PubSubUnsubscribeSerializer.java new file mode 100644 index 0000000..f0a8bb0 --- /dev/null +++ b/src/com/isode/stroke/serializer/payloadserializers/PubSubUnsubscribeSerializer.java @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2014, Isode Limited, London, England. +* All rights reserved. +*/ +/* +* Copyright (c) 2014, Remko Tronçon. +* All rights reserved. +*/ + +package com.isode.stroke.serializer.payloadserializers; + +import com.isode.stroke.serializer.GenericPayloadSerializer; +import com.isode.stroke.serializer.PayloadSerializerCollection; +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.elements.PubSubUnsubscribe; + +public class PubSubUnsubscribeSerializer extends GenericPayloadSerializer<PubSubUnsubscribe> { +public PubSubUnsubscribeSerializer(PayloadSerializerCollection serializers) { + super(PubSubUnsubscribe.class); + + serializers_ = serializers; +} + +protected String serializePayload(PubSubUnsubscribe payload) { + if (payload == null) { + return ""; + } + + XMLElement element = new XMLElement("unsubscribe", "http://jabber.org/protocol/pubsub"); + + if(payload.getSubscriptionID() != null) { + element.setAttribute("subid", payload.getSubscriptionID()); + } + + if(payload.getNode() != null) { + element.setAttribute("node", payload.getNode()); + } + + if(payload.getJID() != null) { + element.setAttribute("jid", payload.getJID().toString()); + } + + return element.serialize(); +} + +PayloadSerializerCollection serializers_; +} diff --git a/src/com/isode/stroke/serializer/payloadserializers/RawXMLPayloadSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/RawXMLPayloadSerializer.java index 70c405b..a52ab98 100644 --- a/src/com/isode/stroke/serializer/payloadserializers/RawXMLPayloadSerializer.java +++ b/src/com/isode/stroke/serializer/payloadserializers/RawXMLPayloadSerializer.java @@ -14,7 +14,7 @@ import com.isode.stroke.serializer.GenericPayloadSerializer; class RawXMLPayloadSerializer extends GenericPayloadSerializer<RawXMLPayload> { public RawXMLPayloadSerializer() { - super(RawXMLPayloadSerializer.class); + super(RawXMLPayload.class); } @Override |