summaryrefslogtreecommitdiff
path: root/src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/XmlSubscribedFeedsEntryGDataSerializer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/XmlSubscribedFeedsEntryGDataSerializer.java')
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/XmlSubscribedFeedsEntryGDataSerializer.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/XmlSubscribedFeedsEntryGDataSerializer.java b/src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/XmlSubscribedFeedsEntryGDataSerializer.java
new file mode 100644
index 0000000..f957c0b
--- /dev/null
+++ b/src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/XmlSubscribedFeedsEntryGDataSerializer.java
@@ -0,0 +1,80 @@
+package com.google.wireless.gdata.subscribedfeeds.serializer.xml;
+
+import com.google.wireless.gdata.data.StringUtils;
+import com.google.wireless.gdata.serializer.xml.XmlEntryGDataSerializer;
+import com.google.wireless.gdata.subscribedfeeds.data.FeedUrl;
+import com.google.wireless.gdata.subscribedfeeds.data.SubscribedFeedsEntry;
+import com.google.wireless.gdata.parser.xml.XmlParserFactory;
+
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.IOException;
+
+/**
+ * Serializes the SubscribedFeedEntry into the Atom XML format.
+ */
+public class XmlSubscribedFeedsEntryGDataSerializer extends
+ XmlEntryGDataSerializer {
+ public static final String NAMESPACE_GSYNC = "gsync";
+ public static final String NAMESPACE_GSYNC_URI =
+ "http://schemas.google.com/gsync/data";
+
+ public XmlSubscribedFeedsEntryGDataSerializer(XmlParserFactory factory,
+ SubscribedFeedsEntry entry) {
+ super(factory, entry);
+ }
+
+ protected SubscribedFeedsEntry getSubscribedFeedsEntry() {
+ return (SubscribedFeedsEntry) getEntry();
+ }
+
+ protected void declareExtraEntryNamespaces(XmlSerializer serializer)
+ throws IOException {
+ serializer.setPrefix(NAMESPACE_GSYNC, NAMESPACE_GSYNC_URI);
+ }
+
+ /* (non-Javadoc)
+ * @see XmlEntryGDataSerializer#serializeExtraEntryContents
+ */
+ protected void serializeExtraEntryContents(XmlSerializer serializer,
+ int format)
+ throws IOException {
+ SubscribedFeedsEntry entry = getSubscribedFeedsEntry();
+
+ serializeFeedUrl(serializer, entry.getSubscribedFeed());
+ serializeClientToken(serializer, entry.getClientToken());
+ serializeRoutingInfo(serializer, entry.getRoutingInfo());
+ }
+
+ private static void serializeFeedUrl(XmlSerializer serializer,
+ FeedUrl feedUrl)
+ throws IOException {
+ serializer.startTag(NAMESPACE_GSYNC_URI, "feedurl");
+ serializer.attribute(null /* ns */, "value", feedUrl.getFeed());
+ serializer.attribute(null /* ns */, "service", feedUrl.getService());
+ serializer.attribute(null /* ns */, "authtoken", feedUrl.getAuthToken());
+ serializer.endTag(NAMESPACE_GSYNC_URI, "feedurl");
+ }
+
+ private static void serializeClientToken(XmlSerializer serializer,
+ String clientToken)
+ throws IOException {
+ if (StringUtils.isEmpty(clientToken)) {
+ clientToken = "";
+ }
+ serializer.startTag(NAMESPACE_GSYNC_URI, "clientToken");
+ serializer.text(clientToken);
+ serializer.endTag(NAMESPACE_GSYNC_URI, "clientToken");
+ }
+
+ private static void serializeRoutingInfo(XmlSerializer serializer,
+ String routingInfo)
+ throws IOException {
+ if (StringUtils.isEmpty(routingInfo)) {
+ routingInfo = "";
+ }
+ serializer.startTag(NAMESPACE_GSYNC_URI, "routingInfo");
+ serializer.text(routingInfo);
+ serializer.endTag(NAMESPACE_GSYNC_URI, "routingInfo");
+ }
+}