diff options
Diffstat (limited to 'src/com/google/wireless/gdata/subscribedfeeds')
14 files changed, 460 insertions, 0 deletions
diff --git a/src/com/google/wireless/gdata/subscribedfeeds/client/SubscribedFeedsClient.java b/src/com/google/wireless/gdata/subscribedfeeds/client/SubscribedFeedsClient.java new file mode 100644 index 0000000..632e8e3 --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/client/SubscribedFeedsClient.java @@ -0,0 +1,49 @@ +// Copyright 2007 The Android Open Source Project + +package com.google.wireless.gdata.subscribedfeeds.client; + +import com.google.wireless.gdata.client.AuthenticationException; +import com.google.wireless.gdata.client.GDataClient; +import com.google.wireless.gdata.client.GDataServiceClient; +import com.google.wireless.gdata.client.QueryParams; +import com.google.wireless.gdata.client.GDataParserFactory; +import com.google.wireless.gdata.data.Entry; +import com.google.wireless.gdata.parser.GDataParser; +import com.google.wireless.gdata.parser.ParseException; +import com.google.wireless.gdata.serializer.xml.XmlEntryGDataSerializer; +import com.google.wireless.gdata.subscribedfeeds.data.SubscribedFeedsEntry; +import com.google.wireless.gdata.subscribedfeeds.parser.xml.XmlSubscribedFeedsGDataParser; +import com.google.wireless.gdata.subscribedfeeds.serializer.xml.XmlSubscribedFeedsEntryGDataSerializer; + +import java.io.IOException; +import java.io.InputStream; + +/** + * GDataServiceClient for accessing Subscribed Feeds. This client can access + * subscribed feeds for specific users. The parser this class uses handles + * the XML version of feeds. + */ +public class SubscribedFeedsClient extends GDataServiceClient { + + /** Service value for contacts. This is only used for downloads; uploads + * are done using the service that corresponds to the subscribed feed. */ + public static final String SERVICE = "mail"; + + /** + * Create a new SubscribedFeedsClient. + * @param client The GDataClient that should be used to authenticate + * requests, retrieve feeds, etc. + */ + public SubscribedFeedsClient(GDataClient client, + GDataParserFactory factory) { + super(client, factory); + } + + /* + * (non-Javadoc) + * @see GDataServiceClient#getServiceName() + */ + public String getServiceName() { + return SERVICE; + } +} diff --git a/src/com/google/wireless/gdata/subscribedfeeds/client/package.html b/src/com/google/wireless/gdata/subscribedfeeds/client/package.html new file mode 100644 index 0000000..1c9bf9d --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/client/package.html @@ -0,0 +1,5 @@ +<html> +<body> + {@hide} +</body> +</html> diff --git a/src/com/google/wireless/gdata/subscribedfeeds/data/FeedUrl.java b/src/com/google/wireless/gdata/subscribedfeeds/data/FeedUrl.java new file mode 100644 index 0000000..7f90176 --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/data/FeedUrl.java @@ -0,0 +1,72 @@ +/* +** Copyright 2006, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** See the License for the specific language governing permissions and +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** limitations under the License. +*/ + +package com.google.wireless.gdata.subscribedfeeds.data; + +/** + * The FeedUrl GData type. + */ +public class FeedUrl { + private String feed; + private String service; + private String authToken; + + public FeedUrl() { + } + + public FeedUrl(String feed, String service, String authToken) { + setFeed(feed); + setService(service); + setAuthToken(authToken); + } + + public String getFeed() { + return feed; + } + + public void setFeed(String feed) { + this.feed = feed; + } + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public String getAuthToken() { + return authToken; + } + + public void setAuthToken(String authToken) { + this.authToken = authToken; + } + + public void toString(StringBuffer sb) { + sb.append("FeedUrl"); + sb.append(" url:").append(getFeed()); + sb.append(" service:").append(getService()); + sb.append(" authToken:").append(getAuthToken()); + } + + public String toString() { + StringBuffer sb = new StringBuffer(); + toString(sb); + return sb.toString(); + } +} diff --git a/src/com/google/wireless/gdata/subscribedfeeds/data/SubscribedFeedsEntry.java b/src/com/google/wireless/gdata/subscribedfeeds/data/SubscribedFeedsEntry.java new file mode 100644 index 0000000..6d8cbd0 --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/data/SubscribedFeedsEntry.java @@ -0,0 +1,53 @@ +// Copyright 2007 The Android Open Source Project +package com.google.wireless.gdata.subscribedfeeds.data; + +import com.google.wireless.gdata.data.Entry; + +/** + * Entry containing information about a contact. + */ +public class SubscribedFeedsEntry extends Entry { + private FeedUrl feedUrl; + private String routingInfo; + private String clientToken; + + public String getClientToken() { + return clientToken; + } + + public void setClientToken(String clientToken) { + this.clientToken = clientToken; + } + + public SubscribedFeedsEntry() { + super(); + } + + public FeedUrl getSubscribedFeed() { + return feedUrl; + } + + public void setSubscribedFeed(FeedUrl feedUrl) { + this.feedUrl = feedUrl; + } + + public String getRoutingInfo() { + return routingInfo; + } + + public void setRoutingInfo(String routingInfo) { + this.routingInfo = routingInfo; + } + + /* + * (non-Javadoc) + * @see com.google.wireless.gdata.data.Entry#clear() + */ + public void clear() { + super.clear(); + } + + public void toString(StringBuffer sb) { + super.toString(sb); + } +} diff --git a/src/com/google/wireless/gdata/subscribedfeeds/data/SubscribedFeedsFeed.java b/src/com/google/wireless/gdata/subscribedfeeds/data/SubscribedFeedsFeed.java new file mode 100644 index 0000000..760cdb8 --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/data/SubscribedFeedsFeed.java @@ -0,0 +1,15 @@ +// Copyright 2007 The Android Open Source Project +package com.google.wireless.gdata.subscribedfeeds.data; + +import com.google.wireless.gdata.data.Feed; + +/** + * Feed containing contacts. + */ +public class SubscribedFeedsFeed extends Feed { + /** + * Creates a new empty events feed. + */ + public SubscribedFeedsFeed() { + } +} diff --git a/src/com/google/wireless/gdata/subscribedfeeds/data/package.html b/src/com/google/wireless/gdata/subscribedfeeds/data/package.html new file mode 100644 index 0000000..1c9bf9d --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/data/package.html @@ -0,0 +1,5 @@ +<html> +<body> + {@hide} +</body> +</html> diff --git a/src/com/google/wireless/gdata/subscribedfeeds/package.html b/src/com/google/wireless/gdata/subscribedfeeds/package.html new file mode 100644 index 0000000..1c9bf9d --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/package.html @@ -0,0 +1,5 @@ +<html> +<body> + {@hide} +</body> +</html> diff --git a/src/com/google/wireless/gdata/subscribedfeeds/parser/package.html b/src/com/google/wireless/gdata/subscribedfeeds/parser/package.html new file mode 100644 index 0000000..1c9bf9d --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/parser/package.html @@ -0,0 +1,5 @@ +<html> +<body> + {@hide} +</body> +</html> diff --git a/src/com/google/wireless/gdata/subscribedfeeds/parser/xml/XmlSubscribedFeedsGDataParser.java b/src/com/google/wireless/gdata/subscribedfeeds/parser/xml/XmlSubscribedFeedsGDataParser.java new file mode 100644 index 0000000..d13449f --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/parser/xml/XmlSubscribedFeedsGDataParser.java @@ -0,0 +1,75 @@ +// Copyright 2007 The Android Open Source Project +package com.google.wireless.gdata.subscribedfeeds.parser.xml; + +import com.google.wireless.gdata.data.Entry; +import com.google.wireless.gdata.data.Feed; +import com.google.wireless.gdata.data.XmlUtils; +import com.google.wireless.gdata.parser.ParseException; +import com.google.wireless.gdata.parser.xml.XmlGDataParser; +import com.google.wireless.gdata.subscribedfeeds.data.FeedUrl; +import com.google.wireless.gdata.subscribedfeeds.data.SubscribedFeedsEntry; +import com.google.wireless.gdata.subscribedfeeds.data.SubscribedFeedsFeed; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.io.InputStream; + +/** + * GDataParser for a subscribed feeds feed. + */ +public class XmlSubscribedFeedsGDataParser extends XmlGDataParser { + /** + * Creates a new XmlSubscribedFeedsGDataParser. + * @param is The InputStream that should be parsed. + * @throws ParseException Thrown if a parser cannot be created. + */ + public XmlSubscribedFeedsGDataParser(InputStream is, XmlPullParser parser) + throws ParseException { + super(is, parser); + } + + /* + * (non-Javadoc) + * @see com.google.wireless.gdata.parser.xml.XmlGDataParser#createFeed() + */ + protected Feed createFeed() { + return new SubscribedFeedsFeed(); + } + + /* + * (non-Javadoc) + * @see com.google.wireless.gdata.parser.xml.XmlGDataParser#createEntry() + */ + protected Entry createEntry() { + return new SubscribedFeedsEntry(); + } + + protected void handleExtraElementInEntry(Entry entry) + throws XmlPullParserException, IOException { + XmlPullParser parser = getParser(); + + if (!(entry instanceof SubscribedFeedsEntry)) { + throw new IllegalArgumentException("Expected SubscribedFeedsEntry!"); + } + SubscribedFeedsEntry subscribedFeedsEntry = + (SubscribedFeedsEntry) entry; + String name = parser.getName(); + if ("feedurl".equals(name)) { + FeedUrl feedUrl = new FeedUrl(); + feedUrl.setFeed(parser.getAttributeValue(null /* ns */, "value")); + feedUrl.setService(parser.getAttributeValue(null /* ns */, "service")); + feedUrl.setAuthToken(parser.getAttributeValue(null /* ns */, "authtoken")); + subscribedFeedsEntry.setSubscribedFeed(feedUrl); + } + if ("routingInfo".equals(name)) { + subscribedFeedsEntry.setRoutingInfo( + XmlUtils.extractChildText(parser)); + } + if ("clientToken".equals(name)) { + subscribedFeedsEntry.setClientToken( + XmlUtils.extractChildText(parser)); + } + } +} diff --git a/src/com/google/wireless/gdata/subscribedfeeds/parser/xml/XmlSubscribedFeedsGDataParserFactory.java b/src/com/google/wireless/gdata/subscribedfeeds/parser/xml/XmlSubscribedFeedsGDataParserFactory.java new file mode 100644 index 0000000..22c755e --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/parser/xml/XmlSubscribedFeedsGDataParserFactory.java @@ -0,0 +1,81 @@ +package com.google.wireless.gdata.subscribedfeeds.parser.xml; + +import com.google.wireless.gdata.client.GDataParserFactory; +import com.google.wireless.gdata.data.Entry; +import com.google.wireless.gdata.parser.GDataParser; +import com.google.wireless.gdata.parser.ParseException; +import com.google.wireless.gdata.parser.xml.XmlParserFactory; +import com.google.wireless.gdata.serializer.GDataSerializer; +import com.google.wireless.gdata.subscribedfeeds.data.SubscribedFeedsEntry; +import com.google.wireless.gdata.subscribedfeeds.serializer.xml.XmlSubscribedFeedsEntryGDataSerializer; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.InputStream; + +/** + * GDataParserFactory that creates XML GDataParsers and GDataSerializers for + * Subscribed Feeds. + */ +public class XmlSubscribedFeedsGDataParserFactory implements + GDataParserFactory { + private final XmlParserFactory xmlFactory; + + public XmlSubscribedFeedsGDataParserFactory(XmlParserFactory xmlFactory) { + this.xmlFactory = xmlFactory; + } + + /* + * (non-javadoc) + * + * @see GDataParserFactory#createParser + */ + public GDataParser createParser(InputStream is) throws ParseException { + XmlPullParser xmlParser; + try { + xmlParser = xmlFactory.createParser(); + } catch (XmlPullParserException xppe) { + throw new ParseException("Could not create XmlPullParser", xppe); + } + return new XmlSubscribedFeedsGDataParser(is, xmlParser); + } + + /* + * (non-Javadoc) + * + * @see GDataParserFactory#createMetaFeedParser(int, java.io.InputStream) + */ + public GDataParser createParser(Class entryClass, InputStream is) + throws ParseException { + if (entryClass != SubscribedFeedsEntry.class) { + throw new IllegalArgumentException( + "SubscribedFeeds supports only a single feed type"); + } + // we don't have feed sub-types, so just return the default + return createParser(is); + } + + + /** + * Creates a new {@link GDataSerializer} for the provided entry. The entry + * <strong>must</strong> be an instance of {@link SubscribedFeedsEntry}. + * + * @param entry The {@link SubscribedFeedsEntry} that should be + * serialized. + * @return The {@link GDataSerializer} that will serialize this entry. + * @throws IllegalArgumentException Thrown if entry is not a + * {@link SubscribedFeedsEntry}. + * @see com.google.wireless.gdata.client.GDataParserFactory#createSerializer + */ + public GDataSerializer createSerializer(Entry entry) { + if (!(entry instanceof SubscribedFeedsEntry)) { + throw new IllegalArgumentException( + "Expected SubscribedFeedsEntry!"); + } + SubscribedFeedsEntry subscribedFeedsEntry = + (SubscribedFeedsEntry) entry; + return new XmlSubscribedFeedsEntryGDataSerializer(xmlFactory, + subscribedFeedsEntry); + } +} diff --git a/src/com/google/wireless/gdata/subscribedfeeds/parser/xml/package.html b/src/com/google/wireless/gdata/subscribedfeeds/parser/xml/package.html new file mode 100644 index 0000000..1c9bf9d --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/parser/xml/package.html @@ -0,0 +1,5 @@ +<html> +<body> + {@hide} +</body> +</html> diff --git a/src/com/google/wireless/gdata/subscribedfeeds/serializer/package.html b/src/com/google/wireless/gdata/subscribedfeeds/serializer/package.html new file mode 100644 index 0000000..1c9bf9d --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/serializer/package.html @@ -0,0 +1,5 @@ +<html> +<body> + {@hide} +</body> +</html> 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"); + } +} diff --git a/src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/package.html b/src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/package.html new file mode 100644 index 0000000..1c9bf9d --- /dev/null +++ b/src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/package.html @@ -0,0 +1,5 @@ +<html> +<body> + {@hide} +</body> +</html> |