diff options
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.java | 80 |
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"); + } +} |