summaryrefslogtreecommitdiff
path: root/src/com/google/wireless/gdata/subscribedfeeds
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/google/wireless/gdata/subscribedfeeds')
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/client/SubscribedFeedsClient.java49
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/client/package.html5
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/data/FeedUrl.java72
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/data/SubscribedFeedsEntry.java53
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/data/SubscribedFeedsFeed.java15
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/data/package.html5
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/package.html5
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/parser/package.html5
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/parser/xml/XmlSubscribedFeedsGDataParser.java75
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/parser/xml/XmlSubscribedFeedsGDataParserFactory.java81
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/parser/xml/package.html5
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/serializer/package.html5
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/XmlSubscribedFeedsEntryGDataSerializer.java80
-rw-r--r--src/com/google/wireless/gdata/subscribedfeeds/serializer/xml/package.html5
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>