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");
}
}
|