OSDN Git Service

moved the gdata library to vendor/google
authorFred Quintana <fredq@google.com>
Tue, 24 Nov 2009 17:47:01 +0000 (09:47 -0800)
committerFred Quintana <fredq@google.com>
Tue, 24 Nov 2009 18:42:00 +0000 (10:42 -0800)
15 files changed:
Android.mk
core/java/android/provider/Calendar.java
core/java/com/google/android/gdata/client/AndroidGDataClient.java [deleted file]
core/java/com/google/android/gdata/client/AndroidXmlParserFactory.java [deleted file]
core/java/com/google/android/gdata/client/QueryParamsImpl.java [deleted file]
core/java/com/google/android/gdata2/client/AndroidGDataClient.java [deleted file]
core/java/com/google/android/gdata2/client/AndroidXmlParserFactory.java [deleted file]
core/java/com/google/android/gdata2/client/QueryParamsImpl.java [deleted file]
preloaded-classes
tests/AndroidTests/res/raw/calendarjs.txt [deleted file]
tests/AndroidTests/res/raw/calendarjsgz.jsgz [deleted file]
tests/AndroidTests/res/raw/calendarxml.xml [deleted file]
tests/AndroidTests/res/raw/calendarxmlgz.xmlgz [deleted file]
tests/AndroidTests/res/xml/calendar.xml [deleted file]
tests/AndroidTests/src/com/android/unit_tests/GDataParseTest.java [deleted file]

index 8d13e3b..be3f569 100644 (file)
@@ -525,7 +525,6 @@ include $(BUILD_DROIDDOC)
 
 ext_dirs := \
        ../../external/apache-http/src \
-       ../../external/gdata/src \
        ../../external/tagsoup/src
 
 ext_src_files := $(call all-java-files-under,$(ext_dirs))
index b8cf6c2..1652ebd 100644 (file)
@@ -33,17 +33,6 @@ import android.text.format.Time;
 import android.util.Config;
 import android.util.Log;
 import android.accounts.Account;
-import com.android.internal.database.ArrayListCursor;
-import com.google.android.gdata.client.AndroidGDataClient;
-import com.google.android.gdata.client.AndroidXmlParserFactory;
-import com.google.wireless.gdata.calendar.client.CalendarClient;
-import com.google.wireless.gdata.calendar.data.EventEntry;
-import com.google.wireless.gdata.calendar.data.Who;
-import com.google.wireless.gdata.calendar.parser.xml.XmlCalendarGDataParserFactory;
-import com.google.wireless.gdata.data.StringUtils;
-
-import java.util.ArrayList;
-import java.util.Vector;
 
 /**
  * The Calendar provider contains all calendar events.
@@ -547,8 +536,6 @@ public final class Calendar {
                                AttendeesColumns.ATTENDEE_TYPE,
                                AttendeesColumns.ATTENDEE_STATUS };
 
-        private static CalendarClient sCalendarClient = null;
-
         public static final Cursor query(ContentResolver cr, String[] projection) {
             return cr.query(CONTENT_URI, projection, null, null, DEFAULT_SORT_ORDER);
         }
@@ -600,7 +587,7 @@ public final class Calendar {
 
             // where
             String where = extractValue(event, "LOCATION");
-            if (!StringUtils.isEmpty(where)) {
+            if (!TextUtils.isEmpty(where)) {
                 values.put(EVENT_LOCATION, where);
             }
 
@@ -687,47 +674,6 @@ public final class Calendar {
         }
 
         /**
-         * Returns a singleton instance of the CalendarClient used to fetch entries from the
-         * calendar server.
-         * @param cr The ContentResolver used to lookup the address of the calendar server in the
-         * settings database.
-         * @return The singleton instance of the CalendarClient used to fetch entries from the
-         * calendar server.
-         */
-        private static synchronized CalendarClient getCalendarClient(ContentResolver cr) {
-            if (sCalendarClient == null) {
-                sCalendarClient = new CalendarClient(
-                        new AndroidGDataClient(cr),
-                        new XmlCalendarGDataParserFactory(new AndroidXmlParserFactory()));
-            }
-            return sCalendarClient;
-        }
-
-        /**
-         * Extracts the attendees information out of event and adds it to a new ArrayList of columns
-         * within the supplied ArrayList of rows.  These rows are expected to be used within an
-         * {@link ArrayListCursor}.
-         */
-        private static final void extractAttendeesIntoArrayList(EventEntry event,
-                ArrayList<ArrayList> rows) {
-            Log.d(TAG, "EVENT: " + event.toString());
-            Vector<Who> attendees = (Vector<Who>) event.getAttendees();
-
-            int numAttendees = attendees == null ? 0 : attendees.size();
-
-            for (int i = 0; i < numAttendees; ++i) {
-                Who attendee = attendees.elementAt(i);
-                ArrayList row = new ArrayList();
-                row.add(attendee.getValue());
-                row.add(attendee.getEmail());
-                row.add(attendee.getRelationship());
-                row.add(attendee.getType());
-                row.add(attendee.getStatus());
-                rows.add(row);
-            }
-        }
-
-        /**
          * The content:// style URL for this table
          */
         public static final Uri CONTENT_URI =
diff --git a/core/java/com/google/android/gdata/client/AndroidGDataClient.java b/core/java/com/google/android/gdata/client/AndroidGDataClient.java
deleted file mode 100644 (file)
index 9a2a51d..0000000
+++ /dev/null
@@ -1,508 +0,0 @@
-// Copyright 2007 The Android Open Source Project
-
-package com.google.android.gdata.client;
-
-import com.google.android.net.GoogleHttpClient;
-import com.google.wireless.gdata.client.GDataClient;
-import com.google.wireless.gdata.client.HttpException;
-import com.google.wireless.gdata.client.QueryParams;
-import com.google.wireless.gdata.data.StringUtils;
-import com.google.wireless.gdata.parser.ParseException;
-import com.google.wireless.gdata.serializer.GDataSerializer;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.InputStreamEntity;
-import org.apache.http.entity.AbstractHttpEntity;
-import org.apache.http.entity.ByteArrayEntity;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.http.AndroidHttpClient;
-import android.text.TextUtils;
-import android.util.Config;
-import android.util.Log;
-import android.os.SystemProperties;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.io.BufferedInputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URLEncoder;
-
-/**
- * Implementation of a GDataClient using GoogleHttpClient to make HTTP
- * requests.  Always issues GETs and POSTs, using the X-HTTP-Method-Override
- * header when a PUT or DELETE is desired, to avoid issues with firewalls, etc.,
- * that do not allow methods other than GET or POST.
- */
-public class AndroidGDataClient implements GDataClient {
-
-    private static final String TAG = "GDataClient";
-    private static final boolean DEBUG = false;
-    private static final boolean LOCAL_LOGV = DEBUG ? Config.LOGD : Config.LOGV;
-
-    private static final String X_HTTP_METHOD_OVERRIDE =
-        "X-HTTP-Method-Override";
-
-    private static final String DEFAULT_USER_AGENT_APP_VERSION = "Android-GData/1.1";
-
-    private static final int MAX_REDIRECTS = 10;
-
-    // boolean system property that can be used to control whether or not
-    // requests/responses are gzip'd.
-    private static final String NO_GZIP_SYSTEM_PROPERTY = "sync.nogzip";
-
-    private final GoogleHttpClient mHttpClient;
-    private ContentResolver mResolver;
-
-    /**
-     * Interface for creating HTTP requests.  Used by
-     * {@link AndroidGDataClient#createAndExecuteMethod}, since HttpUriRequest does not allow for
-     * changing the URI after creation, e.g., when you want to follow a redirect.
-     */
-    private interface HttpRequestCreator {
-        HttpUriRequest createRequest(URI uri);
-    }
-
-    private static class GetRequestCreator implements HttpRequestCreator {
-        public GetRequestCreator() {
-        }
-
-        public HttpUriRequest createRequest(URI uri) {
-            HttpGet get = new HttpGet(uri);
-            return get;
-        }
-    }
-
-    private static class PostRequestCreator implements HttpRequestCreator {
-        private final String mMethodOverride;
-        private final HttpEntity mEntity;
-        public PostRequestCreator(String methodOverride, HttpEntity entity) {
-            mMethodOverride = methodOverride;
-            mEntity = entity;
-        }
-
-        public HttpUriRequest createRequest(URI uri) {
-            HttpPost post = new HttpPost(uri);
-            if (mMethodOverride != null) {
-                post.addHeader(X_HTTP_METHOD_OVERRIDE, mMethodOverride);
-            }
-            post.setEntity(mEntity);
-            return post;
-        }
-    }
-
-    // MAJOR TODO: make this work across redirects (if we can reset the InputStream).
-    // OR, read the bits into a local buffer (yuck, the media could be large).
-    private static class MediaPutRequestCreator implements HttpRequestCreator {
-        private final InputStream mMediaInputStream;
-        private final String mContentType;
-        public MediaPutRequestCreator(InputStream mediaInputStream, String contentType) {
-            mMediaInputStream = mediaInputStream;
-            mContentType = contentType;
-        }
-
-        public HttpUriRequest createRequest(URI uri) {
-            HttpPost post = new HttpPost(uri);
-            post.addHeader(X_HTTP_METHOD_OVERRIDE, "PUT");
-            // mMediaInputStream.reset();
-            InputStreamEntity entity = new InputStreamEntity(mMediaInputStream,
-                    -1 /* read until EOF */);
-            entity.setContentType(mContentType);
-            post.setEntity(entity);
-            return post;
-        }
-    }
-
-    /**
-     * @deprecated Use AndroidGDAtaClient(Context) instead.
-     */
-    public AndroidGDataClient(ContentResolver resolver) {
-        mHttpClient = new GoogleHttpClient(resolver, DEFAULT_USER_AGENT_APP_VERSION,
-                true /* gzip capable */);
-        mHttpClient.enableCurlLogging(TAG, Log.VERBOSE);
-        mResolver = resolver;
-    }
-
-    /**
-     * Creates a new AndroidGDataClient.
-     * 
-     * @param context The ContentResolver to get URL rewriting rules from
-     * through the Android proxy server, using null to indicate not using proxy.
-     * The context will also be used by GoogleHttpClient for configuration of 
-     * SSL session persistence.
-     */
-    public AndroidGDataClient(Context context) {
-       this(context, DEFAULT_USER_AGENT_APP_VERSION);
-    }
-
-    /**
-     * Creates a new AndroidGDataClient.
-     *
-     * @param context The ContentResolver to get URL rewriting rules from
-     * through the Android proxy server, using null to indicate not using proxy.
-     * The context will also be used by GoogleHttpClient for configuration of
-     * SSL session persistence.
-     * @param appAndVersion The application name and version to be used as the basis of the
-     * User-Agent.  e.g., Android-GData/1.5.0.
-     */
-    public AndroidGDataClient(Context context, String appAndVersion) {
-        mHttpClient = new GoogleHttpClient(context, appAndVersion,
-                true /* gzip capable */);
-        mHttpClient.enableCurlLogging(TAG, Log.VERBOSE);
-        mResolver = context.getContentResolver();
-    }
-
-    public void close() {
-        mHttpClient.close();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see GDataClient#encodeUri(java.lang.String)
-     */
-    public String encodeUri(String uri) {
-        String encodedUri;
-        try {
-            encodedUri = URLEncoder.encode(uri, "UTF-8");
-        } catch (UnsupportedEncodingException uee) {
-            // should not happen.
-            Log.e("JakartaGDataClient",
-                  "UTF-8 not supported -- should not happen.  "
-                  + "Using default encoding.", uee);
-            encodedUri = URLEncoder.encode(uri);
-        }
-        return encodedUri;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see com.google.wireless.gdata.client.GDataClient#createQueryParams()
-     */
-    public QueryParams createQueryParams() {
-        return new QueryParamsImpl();
-    }
-
-    // follows redirects
-    private InputStream createAndExecuteMethod(HttpRequestCreator creator,
-                                               String uriString,
-                                               String authToken)
-        throws HttpException, IOException {
-
-        HttpResponse response = null;
-        int status = 500;
-        int redirectsLeft = MAX_REDIRECTS;
-
-        URI uri;
-        try {
-            uri = new URI(uriString);
-        } catch (URISyntaxException use) {
-            Log.w(TAG, "Unable to parse " + uriString + " as URI.", use);
-            throw new IOException("Unable to parse " + uriString + " as URI: "
-                    + use.getMessage());
-        }
-
-        // we follow redirects ourselves, since we want to follow redirects even on POSTs, which
-        // the HTTP library does not do.  following redirects ourselves also allows us to log
-        // the redirects using our own logging.
-        while (redirectsLeft > 0) {
-
-            HttpUriRequest request = creator.createRequest(uri);
-
-            if (!SystemProperties.getBoolean(NO_GZIP_SYSTEM_PROPERTY, false)) {
-                AndroidHttpClient.modifyRequestToAcceptGzipResponse(request);
-            }
-
-            // only add the auth token if not null (to allow for GData feeds that do not require
-            // authentication.)
-            if (!TextUtils.isEmpty(authToken)) {
-                request.addHeader("Authorization", "GoogleLogin auth=" + authToken);
-            }
-            if (LOCAL_LOGV) {
-                for (Header h : request.getAllHeaders()) {
-                    Log.v(TAG, h.getName() + ": " + h.getValue());
-                }
-            }
-
-            if (Log.isLoggable(TAG, Log.DEBUG)) {
-                    Log.d(TAG, "Executing " + request.getRequestLine().toString());
-            }
-
-            response = null;
-
-            try {
-                response = mHttpClient.execute(request);
-            } catch (IOException ioe) {
-                Log.w(TAG, "Unable to execute HTTP request." + ioe);
-                throw ioe;
-            }
-
-            StatusLine statusLine = response.getStatusLine();
-            if (statusLine == null) {
-                Log.w(TAG, "StatusLine is null.");
-                throw new NullPointerException("StatusLine is null -- should not happen.");
-            }
-
-            if (Log.isLoggable(TAG, Log.DEBUG)) {
-                Log.d(TAG, response.getStatusLine().toString());
-                for (Header h : response.getAllHeaders()) {
-                    Log.d(TAG, h.getName() + ": " + h.getValue());
-                }
-            }
-            status = statusLine.getStatusCode();
-
-            HttpEntity entity = response.getEntity();
-
-            if ((status >= 200) && (status < 300) && entity != null) {
-                InputStream in = AndroidHttpClient.getUngzippedContent(entity);
-                if (Log.isLoggable(TAG, Log.DEBUG)) {
-                    in = logInputStreamContents(in);
-                }
-                return in;
-            }
-
-            // TODO: handle 301, 307?
-            // TODO: let the http client handle the redirects, if we can be sure we'll never get a
-            // redirect on POST.
-            if (status == 302) {
-                // consume the content, so the connection can be closed.
-                entity.consumeContent();
-                Header location = response.getFirstHeader("Location");
-                if (location == null) {
-                    if (Log.isLoggable(TAG, Log.DEBUG)) {
-                        Log.d(TAG, "Redirect requested but no Location "
-                                + "specified.");
-                    }
-                    break;
-                }
-                if (Log.isLoggable(TAG, Log.DEBUG)) {
-                    Log.d(TAG, "Following redirect to " + location.getValue());
-                }
-                try {
-                    uri = new URI(location.getValue());
-                } catch (URISyntaxException use) {
-                    if (Log.isLoggable(TAG, Log.DEBUG)) {
-                        Log.d(TAG, "Unable to parse " + location.getValue() + " as URI.", use);
-                        throw new IOException("Unable to parse " + location.getValue()
-                                + " as URI.");
-                    }
-                    break;
-                }
-                --redirectsLeft;
-            } else {
-                break;
-            }
-        }
-
-        if (Log.isLoggable(TAG, Log.VERBOSE)) {
-            Log.v(TAG, "Received " + status + " status code.");
-        }
-        String errorMessage = null;
-        HttpEntity entity = response.getEntity();
-        try {
-            if (response != null && entity != null) {
-                InputStream in = AndroidHttpClient.getUngzippedContent(entity);
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                byte[] buf = new byte[8192];
-                int bytesRead = -1;
-                while ((bytesRead = in.read(buf)) != -1) {
-                    baos.write(buf, 0, bytesRead);
-                }
-                // TODO: use appropriate encoding, picked up from Content-Type.
-                errorMessage = new String(baos.toByteArray());
-                if (Log.isLoggable(TAG, Log.VERBOSE)) {
-                    Log.v(TAG, errorMessage);
-                }
-            }
-        } finally {
-            if (entity != null) {
-                entity.consumeContent();
-            }
-        }
-        String exceptionMessage = "Received " + status + " status code";
-        if (errorMessage != null) {
-            exceptionMessage += (": " + errorMessage);
-        }
-        throw new HttpException(exceptionMessage, status, null /* InputStream */);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see GDataClient#getFeedAsStream(java.lang.String, java.lang.String)
-     */
-    public InputStream getFeedAsStream(String feedUrl,
-                                       String authToken)
-        throws HttpException, IOException {
-
-        InputStream in = createAndExecuteMethod(new GetRequestCreator(), feedUrl, authToken);
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to access feed.");
-    }
-
-    /**
-     * Log the contents of the input stream.
-     * The original input stream is consumed, so the caller must use the
-     * BufferedInputStream that is returned.
-     * @param in InputStream
-     * @return replacement input stream for caller to use
-     * @throws IOException
-     */
-    private InputStream logInputStreamContents(InputStream in) throws IOException {
-        if (in == null) {
-            return in;
-        }
-        // bufferSize is the (arbitrary) maximum amount to log.
-        // The original InputStream is wrapped in a
-        // BufferedInputStream with a 16K buffer.  This lets
-        // us read up to 16K, write it to the log, and then
-        // reset the stream so the the original client can
-        // then read the data.  The BufferedInputStream
-        // provides the mark and reset support, even when
-        // the original InputStream does not.
-        final int bufferSize = 16384;
-        BufferedInputStream bin = new BufferedInputStream(in, bufferSize);
-        bin.mark(bufferSize);
-        int wanted = bufferSize;
-        int totalReceived = 0;
-        byte buf[] = new byte[wanted];
-        while (wanted > 0) {
-            int got = bin.read(buf, totalReceived, wanted);
-            if (got <= 0) break; // EOF
-            wanted -= got;
-            totalReceived += got;
-        }
-        Log.d(TAG, new String(buf, 0, totalReceived, "UTF-8"));
-        bin.reset();
-        return bin;
-    }
-
-    public InputStream getMediaEntryAsStream(String mediaEntryUrl, String authToken)
-            throws HttpException, IOException {
-
-        InputStream in = createAndExecuteMethod(new GetRequestCreator(), mediaEntryUrl, authToken);
-
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to access media entry.");
-    }
-
-    /* (non-Javadoc)
-    * @see GDataClient#createEntry
-    */
-    public InputStream createEntry(String feedUrl,
-                                   String authToken,
-                                   GDataSerializer entry)
-        throws HttpException, IOException {
-
-        HttpEntity entity = createEntityForEntry(entry, GDataSerializer.FORMAT_CREATE);
-        InputStream in = createAndExecuteMethod(
-                new PostRequestCreator(null /* override */, entity),
-                feedUrl,
-                authToken);
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to create entry.");
-    }
-
-    /* (non-Javadoc)
-     * @see GDataClient#updateEntry
-     */
-    public InputStream updateEntry(String editUri,
-                                   String authToken,
-                                   GDataSerializer entry)
-        throws HttpException, IOException {
-        HttpEntity entity = createEntityForEntry(entry, GDataSerializer.FORMAT_UPDATE);
-        InputStream in = createAndExecuteMethod(
-                new PostRequestCreator("PUT", entity),
-                editUri,
-                authToken);
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to update entry.");
-    }
-
-    /* (non-Javadoc)
-     * @see GDataClient#deleteEntry
-     */
-    public void deleteEntry(String editUri, String authToken)
-        throws HttpException, IOException {
-        if (StringUtils.isEmpty(editUri)) {
-            throw new IllegalArgumentException(
-                    "you must specify an non-empty edit url");
-        }
-        InputStream in =
-            createAndExecuteMethod(
-                    new PostRequestCreator("DELETE", null /* entity */),
-                    editUri,
-                    authToken);
-        if (in == null) {
-            throw new IOException("Unable to delete entry.");
-        }
-        try {
-            in.close();
-        } catch (IOException ioe) {
-            // ignore
-        }
-    }
-
-    public InputStream updateMediaEntry(String editUri, String authToken,
-            InputStream mediaEntryInputStream, String contentType)
-        throws HttpException, IOException {
-        InputStream in = createAndExecuteMethod(
-                new MediaPutRequestCreator(mediaEntryInputStream, contentType),
-                editUri,
-                authToken);
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to write media entry.");
-    }
-
-    private HttpEntity createEntityForEntry(GDataSerializer entry, int format) throws IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try {
-            entry.serialize(baos, format);
-        } catch (IOException ioe) {
-            Log.e(TAG, "Unable to serialize entry.", ioe);
-            throw ioe;
-        } catch (ParseException pe) {
-            Log.e(TAG, "Unable to serialize entry.", pe);
-            throw new IOException("Unable to serialize entry: " + pe.getMessage());
-        }
-
-        byte[] entryBytes = baos.toByteArray();
-
-        if (entryBytes != null && Log.isLoggable(TAG, Log.DEBUG)) {
-            try {
-                Log.d(TAG, "Serialized entry: " + new String(entryBytes, "UTF-8"));
-            } catch (UnsupportedEncodingException uee) {
-                // should not happen
-                throw new IllegalStateException("UTF-8 should be supported!",
-                        uee);
-            }
-        }
-
-        AbstractHttpEntity entity;
-        if (SystemProperties.getBoolean(NO_GZIP_SYSTEM_PROPERTY, false)) {
-            entity = new ByteArrayEntity(entryBytes);
-        } else {
-            entity = AndroidHttpClient.getCompressedEntity(entryBytes, mResolver);
-        }
-        entity.setContentType(entry.getContentType());
-        return entity;
-    }
-}
diff --git a/core/java/com/google/android/gdata/client/AndroidXmlParserFactory.java b/core/java/com/google/android/gdata/client/AndroidXmlParserFactory.java
deleted file mode 100644 (file)
index a308fc0..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.google.android.gdata.client;
-
-import com.google.wireless.gdata.parser.xml.XmlParserFactory;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlSerializer;
-
-import android.util.Xml;
-
-/**
- * XmlParserFactory for the Android platform.
- */
-public class AndroidXmlParserFactory implements XmlParserFactory {
-
-    /*
-     * (non-javadoc)
-     * @see XmlParserFactory#createParser
-     */
-    public XmlPullParser createParser() throws XmlPullParserException {
-        return Xml.newPullParser();
-    }
-
-    /*
-     * (non-javadoc)
-     * @see XmlParserFactory#createSerializer
-     */
-    public XmlSerializer createSerializer() throws XmlPullParserException {
-        return Xml.newSerializer();
-    }
-}
diff --git a/core/java/com/google/android/gdata/client/QueryParamsImpl.java b/core/java/com/google/android/gdata/client/QueryParamsImpl.java
deleted file mode 100644 (file)
index fbe0d22..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.google.android.gdata.client;
-
-import com.google.wireless.gdata.client.QueryParams;
-
-import android.text.TextUtils;
-import android.util.Log;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Simple implementation of the QueryParams interface.
- */
-// TODO: deal with categories
-public class QueryParamsImpl extends QueryParams {
-
-    private final Map<String,String> mParams = new HashMap<String,String>();
-
-    /**
-     * Creates a new empty QueryParamsImpl.
-     */
-    public QueryParamsImpl() {
-    }
-
-    @Override
-    public void clear() {
-        setEntryId(null);
-        mParams.clear();
-    }
-
-    @Override
-    public String generateQueryUrl(String feedUrl) {
-
-        if (TextUtils.isEmpty(getEntryId()) &&
-            mParams.isEmpty()) {
-            // nothing to do
-            return feedUrl;
-        }
-
-        // handle entry IDs
-        if (!TextUtils.isEmpty(getEntryId())) {
-            if (!mParams.isEmpty()) {
-                throw new IllegalStateException("Cannot set both an entry ID "
-                        + "and other query paramters.");
-            }
-            return feedUrl + '/' + getEntryId();
-        }
-
-        // otherwise, append the querystring params.
-        StringBuilder sb = new StringBuilder();
-        sb.append(feedUrl);
-        Set<String> params = mParams.keySet();
-        boolean first = true;
-        if (feedUrl.contains("?")) {
-            first = false;
-        } else {
-            sb.append('?');
-        }
-        for (String param : params) {
-            String value = mParams.get(param);
-            if (value == null) continue;
-            if (first) {
-                first = false;
-            } else {
-                sb.append('&');
-            }
-            sb.append(param);
-            sb.append('=');
-
-            String encodedValue = null;
-
-            try {
-                encodedValue = URLEncoder.encode(value, "UTF-8");
-            } catch (UnsupportedEncodingException uee) {
-                // should not happen.
-                Log.w("QueryParamsImpl",
-                      "UTF-8 not supported -- should not happen.  "
-                      + "Using default encoding.", uee);
-                encodedValue = URLEncoder.encode(value);
-            }
-            sb.append(encodedValue);
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public String getParamValue(String param) {
-        if (!(mParams.containsKey(param))) {
-            return null;
-        }
-        return mParams.get(param);
-    }
-
-    @Override
-    public void setParamValue(String param, String value) {
-        mParams.put(param, value);
-    }
-
-}
diff --git a/core/java/com/google/android/gdata2/client/AndroidGDataClient.java b/core/java/com/google/android/gdata2/client/AndroidGDataClient.java
deleted file mode 100644 (file)
index 3721fa4..0000000
+++ /dev/null
@@ -1,603 +0,0 @@
-// Copyright 2007 The Android Open Source Project
-
-package com.google.android.gdata2.client;
-
-import com.google.android.net.GoogleHttpClient;
-import com.google.wireless.gdata2.client.GDataClient;
-import com.google.wireless.gdata2.client.HttpException;
-import com.google.wireless.gdata2.client.QueryParams;
-import com.google.wireless.gdata2.data.StringUtils;
-import com.google.wireless.gdata2.parser.ParseException;
-import com.google.wireless.gdata2.serializer.GDataSerializer;
-import com.google.android.gdata2.client.QueryParamsImpl;
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.InputStreamEntity;
-import org.apache.http.entity.AbstractHttpEntity;
-import org.apache.http.entity.ByteArrayEntity;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.http.AndroidHttpClient;
-import android.text.TextUtils;
-import android.util.Config;
-import android.util.Log;
-import android.os.SystemProperties;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.io.BufferedInputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URLEncoder;
-
-/**
- * Implementation of a GDataClient using GoogleHttpClient to make HTTP
- * requests.  Always issues GETs and POSTs, using the X-HTTP-Method-Override
- * header when a PUT or DELETE is desired, to avoid issues with firewalls, etc.,
- * that do not allow methods other than GET or POST.
- */
-public class AndroidGDataClient implements GDataClient {
-
-    private static final String TAG = "GDataClient";
-    private static final boolean DEBUG = false;
-    private static final boolean LOCAL_LOGV = DEBUG ? Config.LOGD : Config.LOGV;
-
-    private static final String X_HTTP_METHOD_OVERRIDE =
-        "X-HTTP-Method-Override";
-
-    private static final String DEFAULT_USER_AGENT_APP_VERSION = "Android-GData/1.2";
-
-    private static final int MAX_REDIRECTS = 10;
-    private static String DEFAULT_GDATA_VERSION = "2.0";
-
-    // boolean system property that can be used to control whether or not
-    // requests/responses are gzip'd.
-    private static final String NO_GZIP_SYSTEM_PROPERTY = "sync.nogzip";
-
-    private String mGDataVersion; 
-    private final GoogleHttpClient mHttpClient;
-    private ContentResolver mResolver;
-
-    /**
-     * Interface for creating HTTP requests.  Used by
-     * {@link AndroidGDataClient#createAndExecuteMethod}, since HttpUriRequest does not allow for
-     * changing the URI after creation, e.g., when you want to follow a redirect.
-     */
-    private interface HttpRequestCreator {
-        HttpUriRequest createRequest(URI uri);
-    }
-
-    private static class GetRequestCreator implements HttpRequestCreator {
-        public GetRequestCreator() {
-        }
-
-        public HttpUriRequest createRequest(URI uri) {
-            HttpGet get = new HttpGet(uri);
-            return get;
-        }
-    }
-
-    private static class PostRequestCreator implements HttpRequestCreator {
-        private final String mMethodOverride;
-        private final HttpEntity mEntity;
-        public PostRequestCreator(String methodOverride, HttpEntity entity) {
-            mMethodOverride = methodOverride;
-            mEntity = entity;
-        }
-
-        public HttpUriRequest createRequest(URI uri) {
-            HttpPost post = new HttpPost(uri);
-            if (mMethodOverride != null) {
-                post.addHeader(X_HTTP_METHOD_OVERRIDE, mMethodOverride);
-            }
-            post.setEntity(mEntity);
-            return post;
-        }
-    }
-
-    // MAJOR TODO: make this work across redirects (if we can reset the InputStream).
-    // OR, read the bits into a local buffer (yuck, the media could be large).
-    private static class MediaPutRequestCreator implements HttpRequestCreator {
-        private final InputStream mMediaInputStream;
-        private final String mContentType;
-        public MediaPutRequestCreator(InputStream mediaInputStream, String contentType) {
-            mMediaInputStream = mediaInputStream;
-            mContentType = contentType;
-        }
-
-        public HttpUriRequest createRequest(URI uri) {
-            HttpPost post = new HttpPost(uri);
-            post.addHeader(X_HTTP_METHOD_OVERRIDE, "PUT");
-            // mMediaInputStream.reset();
-            InputStreamEntity entity = new InputStreamEntity(mMediaInputStream,
-                    -1 /* read until EOF */);
-            entity.setContentType(mContentType);
-            post.setEntity(entity);
-            return post;
-        }
-    }
-
-   
-    /**
-     * Creates a new AndroidGDataClient.
-     * 
-     * @param context The ContentResolver to get URL rewriting rules from
-     * through the Android proxy server, using null to indicate not using proxy.
-     * The context will also be used by GoogleHttpClient for configuration of 
-     * SSL session persistence.
-     */
-    public AndroidGDataClient(Context context) {
-       this(context, DEFAULT_USER_AGENT_APP_VERSION);
-    }
-
-    /**
-     * Creates a new AndroidGDataClient.
-     *
-     * @param context The ContentResolver to get URL rewriting rules from
-     * through the Android proxy server, using null to indicate not using proxy.
-     * The context will also be used by GoogleHttpClient for configuration of
-     * SSL session persistence.
-     * @param appAndVersion The application name and version to be used as the basis of the
-     * User-Agent.  e.g., Android-GData/1.5.0.
-     */
-    public AndroidGDataClient(Context context, String appAndVersion) {
-        this(context, appAndVersion, DEFAULT_GDATA_VERSION);
-    }
-
-    /**
-     * Creates a new AndroidGDataClient.
-     *
-     * @param context The ContentResolver to get URL rewriting rules from
-     * through the Android proxy server, using null to indicate not using proxy.
-     * The context will also be used by GoogleHttpClient for configuration of
-     * SSL session persistence.
-     * @param appAndVersion The application name and version to be used as the basis of the
-     * User-Agent.  e.g., Android-GData/1.5.0. 
-     * @param gdataVersion The gdata service version that should be 
-     * used, e.g. "2.0" 
-     *  
-     */
-    public AndroidGDataClient(Context context, String appAndVersion, String gdataVersion) {
-        mHttpClient = new GoogleHttpClient(context, appAndVersion,
-                true /* gzip capable */);
-        mHttpClient.enableCurlLogging(TAG, Log.VERBOSE);
-        mResolver = context.getContentResolver();
-        mGDataVersion = gdataVersion;
-    }
-
-
-    public void close() {
-        mHttpClient.close();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see GDataClient#encodeUri(java.lang.String)
-     */
-    public String encodeUri(String uri) {
-        String encodedUri;
-        try {
-            encodedUri = URLEncoder.encode(uri, "UTF-8");
-        } catch (UnsupportedEncodingException uee) {
-            // should not happen.
-            Log.e("JakartaGDataClient",
-                  "UTF-8 not supported -- should not happen.  "
-                  + "Using default encoding.", uee);
-            encodedUri = URLEncoder.encode(uri);
-        }
-        return encodedUri;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see com.google.wireless.gdata.client.GDataClient#createQueryParams()
-     */
-    public QueryParams createQueryParams() {
-        return new QueryParamsImpl();
-    }
-
-    // follows redirects
-    private InputStream createAndExecuteMethod(HttpRequestCreator creator,
-                                               String uriString,
-                                               String authToken,
-                                               String eTag,
-                                               String protocolVersion)
-        throws HttpException, IOException {
-
-        HttpResponse response = null;
-        int status = 500;
-        int redirectsLeft = MAX_REDIRECTS;
-
-        URI uri;
-        try {
-            uri = new URI(uriString);
-        } catch (URISyntaxException use) {
-            Log.w(TAG, "Unable to parse " + uriString + " as URI.", use);
-            throw new IOException("Unable to parse " + uriString + " as URI: "
-                    + use.getMessage());
-        }
-
-        // we follow redirects ourselves, since we want to follow redirects even on POSTs, which
-        // the HTTP library does not do.  following redirects ourselves also allows us to log
-        // the redirects using our own logging.
-        while (redirectsLeft > 0) {
-
-            HttpUriRequest request = creator.createRequest(uri);
-
-            if (!SystemProperties.getBoolean(NO_GZIP_SYSTEM_PROPERTY, false)) {
-                AndroidHttpClient.modifyRequestToAcceptGzipResponse(request);
-            }
-
-            // only add the auth token if not null (to allow for GData feeds that do not require
-            // authentication.)
-            if (!TextUtils.isEmpty(authToken)) {
-                request.addHeader("Authorization", "GoogleLogin auth=" + authToken);
-            }
-
-            // while by default we have a 2.0 in this variable, it is possible to construct
-            // a client that has an empty version field, to work with 1.0 services. 
-            if (!TextUtils.isEmpty(mGDataVersion)) {
-                request.addHeader("GDataVersion", mGDataVersion);
-            }
-
-            // if we have a passed down eTag value, we need to add several headers
-            if (!TextUtils.isEmpty(eTag)) { 
-                String method = request.getMethod();
-                Header overrideMethodHeader = request.getFirstHeader(X_HTTP_METHOD_OVERRIDE);
-                if (overrideMethodHeader != null) {
-                    method = overrideMethodHeader.getValue();
-                }
-                if ("GET".equals(method)) {
-                    // add the none match header, if the resource is not changed
-                    // this request will result in a 304 now.
-                    request.addHeader("If-None-Match", eTag);
-                } else if ("DELETE".equals(method) 
-                           || "PUT".equals(method)) {
-                    // now we send an if-match, but only if the passed in eTag is a strong eTag
-                    // as this only makes sense for a strong eTag
-                    if (!eTag.startsWith("W/")) {
-                        request.addHeader("If-Match", eTag);
-                    }
-                }
-            }
-
-            if (LOCAL_LOGV) {
-                for (Header h : request.getAllHeaders()) {
-                    Log.v(TAG, h.getName() + ": " + h.getValue());
-                }
-            }
-
-            if (Log.isLoggable(TAG, Log.DEBUG)) {
-                    Log.d(TAG, "Executing " + request.getRequestLine().toString());
-            }
-
-            response = null;
-
-            try {
-                response = mHttpClient.execute(request);
-            } catch (IOException ioe) {
-                Log.w(TAG, "Unable to execute HTTP request." + ioe);
-                throw ioe;
-            }
-
-            StatusLine statusLine = response.getStatusLine();
-            if (statusLine == null) {
-                Log.w(TAG, "StatusLine is null.");
-                throw new NullPointerException("StatusLine is null -- should not happen.");
-            }
-
-            if (Log.isLoggable(TAG, Log.DEBUG)) {
-                Log.d(TAG, response.getStatusLine().toString());
-                for (Header h : response.getAllHeaders()) {
-                    Log.d(TAG, h.getName() + ": " + h.getValue());
-                }
-            }
-            status = statusLine.getStatusCode();
-
-            HttpEntity entity = response.getEntity();
-
-            if ((status >= 200) && (status < 300) && entity != null) {
-                InputStream in = AndroidHttpClient.getUngzippedContent(entity);
-                if (Log.isLoggable(TAG, Log.DEBUG)) {
-                    in = logInputStreamContents(in);
-                }
-                return in;
-            }
-
-            // TODO: handle 301, 307?
-            // TODO: let the http client handle the redirects, if we can be sure we'll never get a
-            // redirect on POST.
-            if (status == 302) {
-                // consume the content, so the connection can be closed.
-                entity.consumeContent();
-                Header location = response.getFirstHeader("Location");
-                if (location == null) {
-                    if (Log.isLoggable(TAG, Log.DEBUG)) {
-                        Log.d(TAG, "Redirect requested but no Location "
-                                + "specified.");
-                    }
-                    break;
-                }
-                if (Log.isLoggable(TAG, Log.DEBUG)) {
-                    Log.d(TAG, "Following redirect to " + location.getValue());
-                }
-                try {
-                    uri = new URI(location.getValue());
-                } catch (URISyntaxException use) {
-                    if (Log.isLoggable(TAG, Log.DEBUG)) {
-                        Log.d(TAG, "Unable to parse " + location.getValue() + " as URI.", use);
-                        throw new IOException("Unable to parse " + location.getValue()
-                                + " as URI.");
-                    }
-                    break;
-                }
-                --redirectsLeft;
-            } else {
-                break;
-            }
-        }
-
-        if (Log.isLoggable(TAG, Log.VERBOSE)) {
-            Log.v(TAG, "Received " + status + " status code.");
-        }
-        String errorMessage = null;
-        HttpEntity entity = response.getEntity();
-        try {
-            if (response != null && entity != null) {
-                InputStream in = AndroidHttpClient.getUngzippedContent(entity);
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                byte[] buf = new byte[8192];
-                int bytesRead = -1;
-                while ((bytesRead = in.read(buf)) != -1) {
-                    baos.write(buf, 0, bytesRead);
-                }
-                // TODO: use appropriate encoding, picked up from Content-Type.
-                errorMessage = new String(baos.toByteArray());
-                if (Log.isLoggable(TAG, Log.VERBOSE)) {
-                    Log.v(TAG, errorMessage);
-                }
-            }
-        } finally {
-            if (entity != null) {
-                entity.consumeContent();
-            }
-        }
-        String exceptionMessage = "Received " + status + " status code";
-        if (errorMessage != null) {
-            exceptionMessage += (": " + errorMessage);
-        }
-        throw new HttpException(exceptionMessage, status, null /* InputStream */);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see GDataClient#getFeedAsStream(java.lang.String, java.lang.String)
-     */
-    public InputStream getFeedAsStream(String feedUrl,
-                                       String authToken,
-                                       String eTag,
-                                       String protocolVersion)
-        throws HttpException, IOException {
-
-        InputStream in = createAndExecuteMethod(new GetRequestCreator(), feedUrl, authToken, eTag, protocolVersion);
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to access feed.");
-    }
-
-    /**
-     * Log the contents of the input stream.
-     * The original input stream is consumed, so the caller must use the
-     * BufferedInputStream that is returned.
-     * @param in InputStream
-     * @return replacement input stream for caller to use
-     * @throws IOException
-     */
-    private InputStream logInputStreamContents(InputStream in) throws IOException {
-        if (in == null) {
-            return in;
-        }
-        // bufferSize is the (arbitrary) maximum amount to log.
-        // The original InputStream is wrapped in a
-        // BufferedInputStream with a 16K buffer.  This lets
-        // us read up to 16K, write it to the log, and then
-        // reset the stream so the the original client can
-        // then read the data.  The BufferedInputStream
-        // provides the mark and reset support, even when
-        // the original InputStream does not.
-        final int bufferSize = 16384;
-        BufferedInputStream bin = new BufferedInputStream(in, bufferSize);
-        bin.mark(bufferSize);
-        int wanted = bufferSize;
-        int totalReceived = 0;
-        byte buf[] = new byte[wanted];
-        while (wanted > 0) {
-            int got = bin.read(buf, totalReceived, wanted);
-            if (got <= 0) break; // EOF
-            wanted -= got;
-            totalReceived += got;
-        }
-        Log.d(TAG, new String(buf, 0, totalReceived, "UTF-8"));
-        bin.reset();
-        return bin;
-    }
-
-    public InputStream getMediaEntryAsStream(String mediaEntryUrl, String authToken, String eTag, String protocolVersion)
-            throws HttpException, IOException {
-
-        InputStream in = createAndExecuteMethod(new GetRequestCreator(), mediaEntryUrl, authToken, eTag, protocolVersion);
-
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to access media entry.");
-    }
-
-    /* (non-Javadoc)
-    * @see GDataClient#createEntry
-    */
-    public InputStream createEntry(String feedUrl,
-                                   String authToken,
-                                   String protocolVersion, 
-                                   GDataSerializer entry)
-        throws HttpException, IOException {
-
-        HttpEntity entity = createEntityForEntry(entry, GDataSerializer.FORMAT_CREATE);
-        InputStream in = createAndExecuteMethod(
-                new PostRequestCreator(null /* override */, entity),
-                feedUrl,
-                authToken,
-                null,
-                protocolVersion);
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to create entry.");
-    }
-
-    /* (non-Javadoc)
-     * @see GDataClient#updateEntry
-     */
-    public InputStream updateEntry(String editUri,
-                                   String authToken,
-                                   String eTag,
-                                   String protocolVersion, 
-                                   GDataSerializer entry)
-        throws HttpException, IOException {
-        HttpEntity entity = createEntityForEntry(entry, GDataSerializer.FORMAT_UPDATE);
-        final String method = entry.getSupportsPartial() ? "PATCH" : "PUT";
-        InputStream in = createAndExecuteMethod(
-                new PostRequestCreator(method, entity),
-                editUri,
-                authToken,
-                eTag,
-                protocolVersion);
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to update entry.");
-    }
-
-    /* (non-Javadoc)
-     * @see GDataClient#deleteEntry
-     */
-    public void deleteEntry(String editUri, String authToken, String eTag)
-        throws HttpException, IOException {
-        if (StringUtils.isEmpty(editUri)) {
-            throw new IllegalArgumentException(
-                    "you must specify an non-empty edit url");
-        }
-        InputStream in =
-            createAndExecuteMethod(
-                    new PostRequestCreator("DELETE", null /* entity */),
-                    editUri,
-                    authToken,
-                    eTag,
-                    null /* protocolVersion, not required for a delete */);
-        if (in == null) {
-            throw new IOException("Unable to delete entry.");
-        }
-        try {
-            in.close();
-        } catch (IOException ioe) {
-            // ignore
-        }
-    }
-
-    public InputStream updateMediaEntry(String editUri, String authToken, String eTag,
-            String protocolVersion, InputStream mediaEntryInputStream, String contentType)
-        throws HttpException, IOException {
-        InputStream in = createAndExecuteMethod(
-                new MediaPutRequestCreator(mediaEntryInputStream, contentType),
-                editUri,
-                authToken,
-                eTag,
-                protocolVersion);
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to write media entry.");
-    }
-
-    private HttpEntity createEntityForEntry(GDataSerializer entry, int format) throws IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try {
-            entry.serialize(baos, format);
-        } catch (IOException ioe) {
-            Log.e(TAG, "Unable to serialize entry.", ioe);
-            throw ioe;
-        } catch (ParseException pe) {
-            Log.e(TAG, "Unable to serialize entry.", pe);
-            throw new IOException("Unable to serialize entry: " + pe.getMessage());
-        }
-
-        byte[] entryBytes = baos.toByteArray();
-
-        if (entryBytes != null && Log.isLoggable(TAG, Log.DEBUG)) {
-            try {
-                Log.d(TAG, "Serialized entry: " + new String(entryBytes, "UTF-8"));
-            } catch (UnsupportedEncodingException uee) {
-                // should not happen
-                throw new IllegalStateException("UTF-8 should be supported!",
-                        uee);
-            }
-        }
-
-        AbstractHttpEntity entity;
-        if (SystemProperties.getBoolean(NO_GZIP_SYSTEM_PROPERTY, false)) {
-            entity = new ByteArrayEntity(entryBytes);
-        } else {
-            entity = AndroidHttpClient.getCompressedEntity(entryBytes, mResolver);
-        }
-
-        entity.setContentType(entry.getContentType());
-        return entity;
-    }
-
-    /**
-     * Connects to a GData server (specified by the batchUrl) and submits a
-     * batch for processing.  The response from the server is returned as an
-     * {@link InputStream}.  The caller is responsible for calling
-     * {@link InputStream#close()} on the returned {@link InputStream}.
-     *
-     * @param batchUrl The batch url to which the batch is submitted.
-     * @param authToken the authentication token that should be used when
-     * submitting the batch.
-     * @param protocolVersion The version of the protocol that 
-     *                 should be used for this request.
-     * @param batch The batch of entries to submit.
-     * @throws IOException Thrown if an io error occurs while communicating with
-     * the service.
-     * @throws HttpException if the service returns an error response.
-     */
-    public InputStream submitBatch(String batchUrl,
-       String authToken,
-       String protocolVersion,
-       GDataSerializer batch)
-       throws HttpException, IOException
-    {
-        HttpEntity entity = createEntityForEntry(batch, GDataSerializer.FORMAT_BATCH);
-        InputStream in = createAndExecuteMethod(
-                new PostRequestCreator("POST", entity),
-                batchUrl,
-                authToken,
-                null,
-                protocolVersion);
-        if (in != null) {
-            return in;
-        }
-        throw new IOException("Unable to process batch request.");
-    }
-}   
diff --git a/core/java/com/google/android/gdata2/client/AndroidXmlParserFactory.java b/core/java/com/google/android/gdata2/client/AndroidXmlParserFactory.java
deleted file mode 100644 (file)
index f097706..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.google.android.gdata2.client;
-
-import com.google.wireless.gdata2.parser.xml.XmlParserFactory;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlSerializer;
-
-import android.util.Xml;
-
-/**
- * XmlParserFactory for the Android platform.
- */
-public class AndroidXmlParserFactory implements XmlParserFactory {
-
-    /*
-     * (non-javadoc)
-     * @see XmlParserFactory#createParser
-     */
-    public XmlPullParser createParser() throws XmlPullParserException {
-        return Xml.newPullParser();
-    }
-
-    /*
-     * (non-javadoc)
-     * @see XmlParserFactory#createSerializer
-     */
-    public XmlSerializer createSerializer() throws XmlPullParserException {
-        return Xml.newSerializer();
-    }
-}
diff --git a/core/java/com/google/android/gdata2/client/QueryParamsImpl.java b/core/java/com/google/android/gdata2/client/QueryParamsImpl.java
deleted file mode 100644 (file)
index a26f4ce..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.google.android.gdata2.client;
-import com.google.wireless.gdata2.client.QueryParams;
-
-import android.text.TextUtils;
-import android.util.Log;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Simple implementation of the QueryParams interface.
- */
-// TODO: deal with categories
-public class QueryParamsImpl extends QueryParams {
-
-    private final Map<String,String> mParams = new HashMap<String,String>();
-
-    /**
-     * Creates a new empty QueryParamsImpl.
-     */
-    public QueryParamsImpl() {
-    }
-
-    @Override
-    public void clear() {
-        setEntryId(null);
-        mParams.clear();
-    }
-
-    @Override
-    public String generateQueryUrl(String feedUrl) {
-
-        if (TextUtils.isEmpty(getEntryId()) &&
-            mParams.isEmpty()) {
-            // nothing to do
-            return feedUrl;
-        }
-
-        // handle entry IDs
-        if (!TextUtils.isEmpty(getEntryId())) {
-            if (!mParams.isEmpty()) {
-                throw new IllegalStateException("Cannot set both an entry ID "
-                        + "and other query paramters.");
-            }
-            return feedUrl + '/' + getEntryId();
-        }
-
-        // otherwise, append the querystring params.
-        StringBuilder sb = new StringBuilder();
-        sb.append(feedUrl);
-        Set<String> params = mParams.keySet();
-        boolean first = true;
-        if (feedUrl.contains("?")) {
-            first = false;
-        } else {
-            sb.append('?');
-        }
-        for (String param : params) {
-            if (first) {
-                first = false;
-            } else {
-                sb.append('&');
-            }
-            sb.append(param);
-            sb.append('=');
-            String value = mParams.get(param);
-            String encodedValue = null;
-
-            try {
-                encodedValue = URLEncoder.encode(value, "UTF-8");
-            } catch (UnsupportedEncodingException uee) {
-                // should not happen.
-                Log.w("QueryParamsImpl",
-                      "UTF-8 not supported -- should not happen.  "
-                      + "Using default encoding.", uee);
-                encodedValue = URLEncoder.encode(value);
-            }
-            sb.append(encodedValue);
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public String getParamValue(String param) {
-        if (!(mParams.containsKey(param))) {
-            return null;
-        }
-        return mParams.get(param);
-    }
-
-    @Override
-    public void setParamValue(String param, String value) {
-        mParams.put(param, value);
-    }
-
-}
index ab83b67..08fc2a1 100644 (file)
@@ -1097,10 +1097,6 @@ com.android.internal.widget.NumberPicker$NumberRangeKeyListener
 com.android.internal.widget.NumberPickerButton
 com.android.internal.widget.RotarySelector
 com.android.internal.widget.Smileys
-com.google.android.gdata.client.AndroidGDataClient
-com.google.android.gdata.client.AndroidGDataClient$GetRequestCreator
-com.google.android.gdata.client.AndroidGDataClient$PostRequestCreator
-com.google.android.gdata.client.QueryParamsImpl
 com.google.android.gles_jni.EGLDisplayImpl
 com.google.android.gles_jni.EGLImpl
 com.google.android.gles_jni.EGLSurfaceImpl
@@ -1115,17 +1111,6 @@ com.google.android.net.ParentalControlState
 com.google.android.net.ParentalControlState$1
 com.google.android.net.UrlRules
 com.google.android.net.UrlRules$Rule
-com.google.wireless.gdata.calendar.client.CalendarClient
-com.google.wireless.gdata.calendar.data.CalendarEntry
-com.google.wireless.gdata.calendar.data.CalendarsFeed
-com.google.wireless.gdata.calendar.data.EventEntry
-com.google.wireless.gdata.calendar.data.Who
-com.google.wireless.gdata.calendar.parser.xml.XmlCalendarGDataParserFactory
-com.google.wireless.gdata.calendar.serializer.xml.XmlEventEntryGDataSerializer
-com.google.wireless.gdata.client.GDataServiceClient
-com.google.wireless.gdata.client.QueryParams
-com.google.wireless.gdata.data.Entry
-com.google.wireless.gdata.parser.xml.XmlGDataParser
 com.ibm.icu4jni.charset.CharsetDecoderICU
 com.ibm.icu4jni.charset.CharsetEncoderICU
 com.ibm.icu4jni.charset.CharsetICU
diff --git a/tests/AndroidTests/res/raw/calendarjs.txt b/tests/AndroidTests/res/raw/calendarjs.txt
deleted file mode 100644 (file)
index 15f7bab..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":"1.0","encoding":"UTF-8","feed":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$openSearch":"http://a9.com/-/spec/opensearchrss/1.0/","xmlns$gd":"http://schemas.google.com/g/2005","xmlns$gCal":"http://schemas.google.com/gCal/2005","id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic"},"updated":{"$t":"2007-02-06T02:55:15.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"w g"},"subtitle":{"type":"text","$t":"w g"},"link":[{"rel":"http://schemas.google.com/g/2005#feed","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic?alt\u003Djson\u0026max-results\u003D25"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"generator":{"version":"1.0","uri":"http://www.google.com/calendar","$t":"Google Calendar"},"openSearch$totalResults":{"$t":"13"},"openSearch$startIndex":{"$t":"1"},"openSearch$itemsPerPage":{"$t":"25"},"gCal$timezone":{"value":"America/Los_Angeles"},"entry":[{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/7iqc1ro0ihc69vhsiq3uabooig"},"published":{"$t":"2007-02-05T22:04:50.000Z"},"updated":{"$t":"2007-02-05T22:04:50.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"skate"},"summary":{"type":"html","$t":"When: Wed Feb 7, 2007 13:30 to Wed Feb 7, 2007 16:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Wed Feb 7, 2007 13:30 to Wed Feb 7, 2007 16:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003DN2lxYzFybzBpaGM2OXZoc2lxM3VhYm9vaWcgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/7iqc1ro0ihc69vhsiq3uabooig"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/kp4gil76n2vcrkt9kaotj3s12c"},"published":{"$t":"2007-02-05T22:04:42.000Z"},"updated":{"$t":"2007-02-05T22:04:42.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"skate"},"summary":{"type":"html","$t":"When: Fri Feb 9, 2007 15:30 to Fri Feb 9, 2007 18:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Fri Feb 9, 2007 15:30 to Fri Feb 9, 2007 18:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003Da3A0Z2lsNzZuMnZjcmt0OWthb3RqM3MxMmMgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/kp4gil76n2vcrkt9kaotj3s12c"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/gkhb48fj68lcp15fd1k03tjbj0"},"published":{"$t":"2007-02-05T22:04:35.000Z"},"updated":{"$t":"2007-02-05T22:04:35.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"test event 6"},"summary":{"type":"html","$t":"When: Sat Feb 10, 2007 14:00 to Sat Feb 10, 2007 17:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Sat Feb 10, 2007 14:00 to Sat Feb 10, 2007 17:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003DZ2toYjQ4Zmo2OGxjcDE1ZmQxazAzdGpiajAgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/gkhb48fj68lcp15fd1k03tjbj0"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/32p5g68cpean3p2ol7kanj38sg"},"published":{"$t":"2007-02-05T22:04:29.000Z"},"updated":{"$t":"2007-02-05T22:04:29.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"test event 5"},"summary":{"type":"html","$t":"When: Fri Feb 9, 2007 09:00 to 10:30\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Fri Feb 9, 2007 09:00 to 10:30\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003DMzJwNWc2OGNwZWFuM3Ayb2w3a2FuajM4c2cgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/32p5g68cpean3p2ol7kanj38sg"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/tfqpth26conshdmav0apje1tf4"},"published":{"$t":"2007-02-05T22:04:19.000Z"},"updated":{"$t":"2007-02-05T22:04:19.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"skate"},"summary":{"type":"html","$t":"When: Thu Feb 8, 2007 15:00 to Thu Feb 8, 2007 17:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Thu Feb 8, 2007 15:00 to Thu Feb 8, 2007 17:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003DdGZxcHRoMjZjb25zaGRtYXYwYXBqZTF0ZjQgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/tfqpth26conshdmav0apje1tf4"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/onbo9mhbr5m6mo356nog7uel4s"},"published":{"$t":"2007-02-05T22:04:07.000Z"},"updated":{"$t":"2007-02-05T22:04:07.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"Sharks at Anaheim"},"summary":{"type":"html","$t":"When: Wed Feb 7, 2007 19:00 to 22:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Wed Feb 7, 2007 19:00 to 22:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003Db25ibzltaGJyNW02bW8zNTZub2c3dWVsNHMgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/onbo9mhbr5m6mo356nog7uel4s"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"true"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/tjqrd9fve576hieh3sa67nql5k"},"published":{"$t":"2007-02-05T22:04:02.000Z"},"updated":{"$t":"2007-02-05T22:04:02.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"Sharks vs. ANAHEIM"},"summary":{"type":"html","$t":"When: Tue Feb 6, 2007 19:30 to 22:30\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Tue Feb 6, 2007 19:30 to 22:30\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003DdGpxcmQ5ZnZlNTc2aGllaDNzYTY3bnFsNWsgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/tjqrd9fve576hieh3sa67nql5k"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"true"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/or6dtpn065f9mntond4jh2docc"},"published":{"$t":"2007-02-05T22:03:52.000Z"},"updated":{"$t":"2007-02-05T22:03:52.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"skate"},"summary":{"type":"html","$t":"When: Tue Feb 6, 2007 14:00 to 15:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Tue Feb 6, 2007 14:00 to 15:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003Db3I2ZHRwbjA2NWY5bW50b25kNGpoMmRvY2Mgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/or6dtpn065f9mntond4jh2docc"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/k70v8o4jt1afi17hg2spavq1c0"},"published":{"$t":"2007-02-05T22:03:36.000Z"},"updated":{"$t":"2007-02-05T22:03:36.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"lunch"},"summary":{"type":"html","$t":"Recurring Event\u003Cbr\u003E First start: 2007-02-06 12:00:00 PST \u003Cbr\u003E Duration: 3600    \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"Recurring Event\u003Cbr\u003E First start: 2007-02-06 12:00:00 PST \u003Cbr\u003E Duration: 3600    \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003DazcwdjhvNGp0MWFmaTE3aGcyc3BhdnExYzBfMjAwNzAyMDZUMjAwMDAwWiB3Z0B2b2ljZW1lLm5ldA","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/k70v8o4jt1afi17hg2spavq1c0"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"true"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/6ee7b8nohdt03tv0gknm4v7124"},"published":{"$t":"2007-02-05T22:03:19.000Z"},"updated":{"$t":"2007-02-05T22:03:19.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"test event 4"},"summary":{"type":"html","$t":"When: Tue Feb 6, 2007 09:00 to 11:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Tue Feb 6, 2007 09:00 to 11:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003DNmVlN2I4bm9oZHQwM3R2MGdrbm00djcxMjQgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/6ee7b8nohdt03tv0gknm4v7124"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/of1vh1r2q5aqdplo65i8bqbn3o"},"published":{"$t":"2007-02-05T22:03:11.000Z"},"updated":{"$t":"2007-02-05T22:03:11.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"test event 3"},"summary":{"type":"html","$t":"When: Mon Feb 5, 2007 18:00 to 19:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Mon Feb 5, 2007 18:00 to 19:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003Db2YxdmgxcjJxNWFxZHBsbzY1aThicWJuM28gd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/of1vh1r2q5aqdplo65i8bqbn3o"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/s7ahgfomlgii9qbkgpfbinr9u8"},"published":{"$t":"2007-02-05T22:02:40.000Z"},"updated":{"$t":"2007-02-05T22:03:04.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"test event 2"},"summary":{"type":"html","$t":"When: Mon Feb 5, 2007 16:30 to 17:30\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Mon Feb 5, 2007 16:30 to 17:30\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003DczdhaGdmb21sZ2lpOXFia2dwZmJpbnI5dTggd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/s7ahgfomlgii9qbkgpfbinr9u8"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}},{"id":{"$t":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/rl8focglfe6jndql4u8lg73q5k"},"published":{"$t":"2007-02-05T22:02:28.000Z"},"updated":{"$t":"2007-02-05T22:02:53.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://schemas.google.com/g/2005#event"}],"title":{"type":"text","$t":"test event 1"},"summary":{"type":"html","$t":"When: Mon Feb 5, 2007 15:00 to Mon Feb 5, 2007 16:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"content":{"type":"text","$t":"When: Mon Feb 5, 2007 15:00 to Mon Feb 5, 2007 16:00\u0026nbsp; PST\u003Cbr\u003E   \u003Cbr\u003EEvent Status:     confirmed"},"link":[{"rel":"alternate","type":"text/html","href":"http://www.google.com/calendar/event?eid\u003Dcmw4Zm9jZ2xmZTZqbmRxbDR1OGxnNzNxNWsgd2dAdm9pY2VtZS5uZXQ","title":"alternate"},{"rel":"self","type":"application/atom+xml","href":"http://www.google.com/calendar/feeds/wg%40voiceme.net/public/basic/rl8focglfe6jndql4u8lg73q5k"}],"author":[{"name":{"$t":"w g"},"email":{"$t":"wg@voiceme.net"}}],"gCal$sendEventNotifications":{"value":"false"}}]}}
\ No newline at end of file
diff --git a/tests/AndroidTests/res/raw/calendarjsgz.jsgz b/tests/AndroidTests/res/raw/calendarjsgz.jsgz
deleted file mode 100644 (file)
index 6f1bf54..0000000
Binary files a/tests/AndroidTests/res/raw/calendarjsgz.jsgz and /dev/null differ
diff --git a/tests/AndroidTests/res/raw/calendarxml.xml b/tests/AndroidTests/res/raw/calendarxml.xml
deleted file mode 100644 (file)
index 1adcd74..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 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,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:gCal='http://schemas.google.com/gCal/2005'><id>http://www.google.com/calendar/feeds/default/private/full</id><updated>2007-02-05T22:04:50.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>w g</title><subtitle type='text'>w g</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full'></link><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full?max-results=25'></link><author><name>w g</name><email>wg@voiceme.net</email></author><generator version='1.0' uri='http://www.google.com/calendar'>Google Calendar</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><gCal:timezone value='America/Los_Angeles'></gCal:timezone><entry><id>http://www.google.com/calendar/feeds/default/private/full/7iqc1ro0ihc69vhsiq3uabooig</id><published>2007-02-05T22:04:50.000Z</published><updated>2007-02-05T22:04:50.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>skate</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=N2lxYzFybzBpaGM2OXZoc2lxM3VhYm9vaWcgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/7iqc1ro0ihc69vhsiq3uabooig'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/7iqc1ro0ihc69vhsiq3uabooig/63306396290'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/7iqc1ro0ihc69vhsiq3uabooig/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-07T13:30:00.000-08:00' endTime='2007-02-07T16:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/kp4gil76n2vcrkt9kaotj3s12c</id><published>2007-02-05T22:04:42.000Z</published><updated>2007-02-05T22:04:42.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>skate</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=a3A0Z2lsNzZuMnZjcmt0OWthb3RqM3MxMmMgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/kp4gil76n2vcrkt9kaotj3s12c'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/kp4gil76n2vcrkt9kaotj3s12c/63306396282'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/kp4gil76n2vcrkt9kaotj3s12c/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-09T15:30:00.000-08:00' endTime='2007-02-09T18:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/gkhb48fj68lcp15fd1k03tjbj0</id><published>2007-02-05T22:04:35.000Z</published><updated>2007-02-05T22:04:35.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 6</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=Z2toYjQ4Zmo2OGxjcDE1ZmQxazAzdGpiajAgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/gkhb48fj68lcp15fd1k03tjbj0'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/gkhb48fj68lcp15fd1k03tjbj0/63306396275'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/gkhb48fj68lcp15fd1k03tjbj0/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-10T14:00:00.000-08:00' endTime='2007-02-10T17:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/32p5g68cpean3p2ol7kanj38sg</id><published>2007-02-05T22:04:29.000Z</published><updated>2007-02-05T22:04:29.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 5</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=MzJwNWc2OGNwZWFuM3Ayb2w3a2FuajM4c2cgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/32p5g68cpean3p2ol7kanj38sg'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/32p5g68cpean3p2ol7kanj38sg/63306396269'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/32p5g68cpean3p2ol7kanj38sg/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-09T09:00:00.000-08:00' endTime='2007-02-09T10:30:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/tfqpth26conshdmav0apje1tf4</id><published>2007-02-05T22:04:19.000Z</published><updated>2007-02-05T22:04:19.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>skate</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=dGZxcHRoMjZjb25zaGRtYXYwYXBqZTF0ZjQgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/tfqpth26conshdmav0apje1tf4'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/tfqpth26conshdmav0apje1tf4/63306396259'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/tfqpth26conshdmav0apje1tf4/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-08T15:00:00.000-08:00' endTime='2007-02-08T17:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/onbo9mhbr5m6mo356nog7uel4s</id><published>2007-02-05T22:04:07.000Z</published><updated>2007-02-05T22:04:07.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>Sharks at Anaheim</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=b25ibzltaGJyNW02bW8zNTZub2c3dWVsNHMgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/onbo9mhbr5m6mo356nog7uel4s'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/onbo9mhbr5m6mo356nog7uel4s/63306396247'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/onbo9mhbr5m6mo356nog7uel4s/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='true'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where valueString=''></gd:where><gd:when startTime='2007-02-07T19:00:00.000-08:00' endTime='2007-02-07T22:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/tjqrd9fve576hieh3sa67nql5k</id><published>2007-02-05T22:04:02.000Z</published><updated>2007-02-05T22:04:02.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>Sharks vs. ANAHEIM</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=dGpxcmQ5ZnZlNTc2aGllaDNzYTY3bnFsNWsgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/tjqrd9fve576hieh3sa67nql5k'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/tjqrd9fve576hieh3sa67nql5k/63306396242'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/tjqrd9fve576hieh3sa67nql5k/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='true'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where valueString=''></gd:where><gd:when startTime='2007-02-06T19:30:00.000-08:00' endTime='2007-02-06T22:30:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/or6dtpn065f9mntond4jh2docc</id><published>2007-02-05T22:03:52.000Z</published><updated>2007-02-05T22:03:52.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>skate</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=b3I2ZHRwbjA2NWY5bW50b25kNGpoMmRvY2Mgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/or6dtpn065f9mntond4jh2docc'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/or6dtpn065f9mntond4jh2docc/63306396232'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/or6dtpn065f9mntond4jh2docc/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-06T14:00:00.000-08:00' endTime='2007-02-06T15:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/k70v8o4jt1afi17hg2spavq1c0</id><published>2007-02-05T22:03:36.000Z</published><updated>2007-02-05T22:03:36.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>lunch</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=azcwdjhvNGp0MWFmaTE3aGcyc3BhdnExYzBfMjAwNzAyMDZUMjAwMDAwWiB3Z0B2b2ljZW1lLm5ldA' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/k70v8o4jt1afi17hg2spavq1c0'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/k70v8o4jt1afi17hg2spavq1c0/63306396216'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='true'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:recurrence>DTSTART;TZID=America/Los_Angeles:20070206T120000
-DURATION:PT3600S
-RRULE:FREQ=DAILY;WKST=SU
-BEGIN:VTIMEZONE
-TZID:America/Los_Angeles
-X-LIC-LOCATION:America/Los_Angeles
-BEGIN:STANDARD
-TZOFFSETFROM:-0700
-TZOFFSETTO:-0800
-TZNAME:PST
-DTSTART:19701025T020000
-RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
-END:STANDARD
-BEGIN:DAYLIGHT
-TZOFFSETFROM:-0800
-TZOFFSETTO:-0700
-TZNAME:PDT
-DTSTART:19700405T020000
-RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
-END:DAYLIGHT
-END:VTIMEZONE
-</gd:recurrence><gd:where valueString=''></gd:where><gd:reminder minutes='10'></gd:reminder></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/6ee7b8nohdt03tv0gknm4v7124</id><published>2007-02-05T22:03:19.000Z</published><updated>2007-02-05T22:03:19.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 4</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=NmVlN2I4bm9oZHQwM3R2MGdrbm00djcxMjQgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/6ee7b8nohdt03tv0gknm4v7124'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/6ee7b8nohdt03tv0gknm4v7124/63306396199'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/6ee7b8nohdt03tv0gknm4v7124/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-06T09:00:00.000-08:00' endTime='2007-02-06T11:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/of1vh1r2q5aqdplo65i8bqbn3o</id><published>2007-02-05T22:03:11.000Z</published><updated>2007-02-05T22:03:11.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 3</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=b2YxdmgxcjJxNWFxZHBsbzY1aThicWJuM28gd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/of1vh1r2q5aqdplo65i8bqbn3o'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/of1vh1r2q5aqdplo65i8bqbn3o/63306396191'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/of1vh1r2q5aqdplo65i8bqbn3o/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-05T18:00:00.000-08:00' endTime='2007-02-05T19:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/s7ahgfomlgii9qbkgpfbinr9u8</id><published>2007-02-05T22:02:40.000Z</published><updated>2007-02-05T22:03:04.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 2</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=czdhaGdmb21sZ2lpOXFia2dwZmJpbnI5dTggd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/s7ahgfomlgii9qbkgpfbinr9u8'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/s7ahgfomlgii9qbkgpfbinr9u8/63306396184'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/s7ahgfomlgii9qbkgpfbinr9u8/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where valueString=''></gd:where><gd:when startTime='2007-02-05T16:30:00.000-08:00' endTime='2007-02-05T17:30:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/rl8focglfe6jndql4u8lg73q5k</id><published>2007-02-05T22:02:28.000Z</published><updated>2007-02-05T22:02:53.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 1</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=cmw4Zm9jZ2xmZTZqbmRxbDR1OGxnNzNxNWsgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/rl8focglfe6jndql4u8lg73q5k'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/rl8focglfe6jndql4u8lg73q5k/63306396173'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/rl8focglfe6jndql4u8lg73q5k/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-05T15:00:00.000-08:00' endTime='2007-02-05T16:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry></feed>
diff --git a/tests/AndroidTests/res/raw/calendarxmlgz.xmlgz b/tests/AndroidTests/res/raw/calendarxmlgz.xmlgz
deleted file mode 100644 (file)
index 6c86462..0000000
Binary files a/tests/AndroidTests/res/raw/calendarxmlgz.xmlgz and /dev/null differ
diff --git a/tests/AndroidTests/res/xml/calendar.xml b/tests/AndroidTests/res/xml/calendar.xml
deleted file mode 100644 (file)
index 1adcd74..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 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,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:gCal='http://schemas.google.com/gCal/2005'><id>http://www.google.com/calendar/feeds/default/private/full</id><updated>2007-02-05T22:04:50.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>w g</title><subtitle type='text'>w g</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full'></link><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full?max-results=25'></link><author><name>w g</name><email>wg@voiceme.net</email></author><generator version='1.0' uri='http://www.google.com/calendar'>Google Calendar</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><gCal:timezone value='America/Los_Angeles'></gCal:timezone><entry><id>http://www.google.com/calendar/feeds/default/private/full/7iqc1ro0ihc69vhsiq3uabooig</id><published>2007-02-05T22:04:50.000Z</published><updated>2007-02-05T22:04:50.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>skate</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=N2lxYzFybzBpaGM2OXZoc2lxM3VhYm9vaWcgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/7iqc1ro0ihc69vhsiq3uabooig'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/7iqc1ro0ihc69vhsiq3uabooig/63306396290'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/7iqc1ro0ihc69vhsiq3uabooig/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-07T13:30:00.000-08:00' endTime='2007-02-07T16:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/kp4gil76n2vcrkt9kaotj3s12c</id><published>2007-02-05T22:04:42.000Z</published><updated>2007-02-05T22:04:42.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>skate</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=a3A0Z2lsNzZuMnZjcmt0OWthb3RqM3MxMmMgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/kp4gil76n2vcrkt9kaotj3s12c'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/kp4gil76n2vcrkt9kaotj3s12c/63306396282'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/kp4gil76n2vcrkt9kaotj3s12c/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-09T15:30:00.000-08:00' endTime='2007-02-09T18:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/gkhb48fj68lcp15fd1k03tjbj0</id><published>2007-02-05T22:04:35.000Z</published><updated>2007-02-05T22:04:35.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 6</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=Z2toYjQ4Zmo2OGxjcDE1ZmQxazAzdGpiajAgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/gkhb48fj68lcp15fd1k03tjbj0'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/gkhb48fj68lcp15fd1k03tjbj0/63306396275'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/gkhb48fj68lcp15fd1k03tjbj0/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-10T14:00:00.000-08:00' endTime='2007-02-10T17:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/32p5g68cpean3p2ol7kanj38sg</id><published>2007-02-05T22:04:29.000Z</published><updated>2007-02-05T22:04:29.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 5</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=MzJwNWc2OGNwZWFuM3Ayb2w3a2FuajM4c2cgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/32p5g68cpean3p2ol7kanj38sg'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/32p5g68cpean3p2ol7kanj38sg/63306396269'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/32p5g68cpean3p2ol7kanj38sg/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-09T09:00:00.000-08:00' endTime='2007-02-09T10:30:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/tfqpth26conshdmav0apje1tf4</id><published>2007-02-05T22:04:19.000Z</published><updated>2007-02-05T22:04:19.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>skate</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=dGZxcHRoMjZjb25zaGRtYXYwYXBqZTF0ZjQgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/tfqpth26conshdmav0apje1tf4'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/tfqpth26conshdmav0apje1tf4/63306396259'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/tfqpth26conshdmav0apje1tf4/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-08T15:00:00.000-08:00' endTime='2007-02-08T17:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/onbo9mhbr5m6mo356nog7uel4s</id><published>2007-02-05T22:04:07.000Z</published><updated>2007-02-05T22:04:07.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>Sharks at Anaheim</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=b25ibzltaGJyNW02bW8zNTZub2c3dWVsNHMgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/onbo9mhbr5m6mo356nog7uel4s'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/onbo9mhbr5m6mo356nog7uel4s/63306396247'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/onbo9mhbr5m6mo356nog7uel4s/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='true'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where valueString=''></gd:where><gd:when startTime='2007-02-07T19:00:00.000-08:00' endTime='2007-02-07T22:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/tjqrd9fve576hieh3sa67nql5k</id><published>2007-02-05T22:04:02.000Z</published><updated>2007-02-05T22:04:02.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>Sharks vs. ANAHEIM</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=dGpxcmQ5ZnZlNTc2aGllaDNzYTY3bnFsNWsgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/tjqrd9fve576hieh3sa67nql5k'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/tjqrd9fve576hieh3sa67nql5k/63306396242'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/tjqrd9fve576hieh3sa67nql5k/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='true'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where valueString=''></gd:where><gd:when startTime='2007-02-06T19:30:00.000-08:00' endTime='2007-02-06T22:30:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/or6dtpn065f9mntond4jh2docc</id><published>2007-02-05T22:03:52.000Z</published><updated>2007-02-05T22:03:52.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>skate</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=b3I2ZHRwbjA2NWY5bW50b25kNGpoMmRvY2Mgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/or6dtpn065f9mntond4jh2docc'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/or6dtpn065f9mntond4jh2docc/63306396232'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/or6dtpn065f9mntond4jh2docc/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-06T14:00:00.000-08:00' endTime='2007-02-06T15:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/k70v8o4jt1afi17hg2spavq1c0</id><published>2007-02-05T22:03:36.000Z</published><updated>2007-02-05T22:03:36.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>lunch</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=azcwdjhvNGp0MWFmaTE3aGcyc3BhdnExYzBfMjAwNzAyMDZUMjAwMDAwWiB3Z0B2b2ljZW1lLm5ldA' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/k70v8o4jt1afi17hg2spavq1c0'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/k70v8o4jt1afi17hg2spavq1c0/63306396216'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='true'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:recurrence>DTSTART;TZID=America/Los_Angeles:20070206T120000
-DURATION:PT3600S
-RRULE:FREQ=DAILY;WKST=SU
-BEGIN:VTIMEZONE
-TZID:America/Los_Angeles
-X-LIC-LOCATION:America/Los_Angeles
-BEGIN:STANDARD
-TZOFFSETFROM:-0700
-TZOFFSETTO:-0800
-TZNAME:PST
-DTSTART:19701025T020000
-RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
-END:STANDARD
-BEGIN:DAYLIGHT
-TZOFFSETFROM:-0800
-TZOFFSETTO:-0700
-TZNAME:PDT
-DTSTART:19700405T020000
-RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
-END:DAYLIGHT
-END:VTIMEZONE
-</gd:recurrence><gd:where valueString=''></gd:where><gd:reminder minutes='10'></gd:reminder></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/6ee7b8nohdt03tv0gknm4v7124</id><published>2007-02-05T22:03:19.000Z</published><updated>2007-02-05T22:03:19.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 4</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=NmVlN2I4bm9oZHQwM3R2MGdrbm00djcxMjQgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/6ee7b8nohdt03tv0gknm4v7124'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/6ee7b8nohdt03tv0gknm4v7124/63306396199'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/6ee7b8nohdt03tv0gknm4v7124/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-06T09:00:00.000-08:00' endTime='2007-02-06T11:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/of1vh1r2q5aqdplo65i8bqbn3o</id><published>2007-02-05T22:03:11.000Z</published><updated>2007-02-05T22:03:11.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 3</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=b2YxdmgxcjJxNWFxZHBsbzY1aThicWJuM28gd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/of1vh1r2q5aqdplo65i8bqbn3o'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/of1vh1r2q5aqdplo65i8bqbn3o/63306396191'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/of1vh1r2q5aqdplo65i8bqbn3o/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-05T18:00:00.000-08:00' endTime='2007-02-05T19:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/s7ahgfomlgii9qbkgpfbinr9u8</id><published>2007-02-05T22:02:40.000Z</published><updated>2007-02-05T22:03:04.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 2</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=czdhaGdmb21sZ2lpOXFia2dwZmJpbnI5dTggd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/s7ahgfomlgii9qbkgpfbinr9u8'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/s7ahgfomlgii9qbkgpfbinr9u8/63306396184'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/s7ahgfomlgii9qbkgpfbinr9u8/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where valueString=''></gd:where><gd:when startTime='2007-02-05T16:30:00.000-08:00' endTime='2007-02-05T17:30:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry><entry><id>http://www.google.com/calendar/feeds/default/private/full/rl8focglfe6jndql4u8lg73q5k</id><published>2007-02-05T22:02:28.000Z</published><updated>2007-02-05T22:02:53.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title type='text'>test event 1</title><content type='text'></content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/hosted/voiceme.net/event?eid=cmw4Zm9jZ2xmZTZqbmRxbDR1OGxnNzNxNWsgd2dAdm9pY2VtZS5uZXQ' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/rl8focglfe6jndql4u8lg73q5k'></link><link rel='edit' type='application/atom+xml' href='http://www.google.com/calendar/feeds/default/private/full/rl8focglfe6jndql4u8lg73q5k/63306396173'></link><author><name>w g</name><email>wg@voiceme.net</email></author><gd:comments><gd:feedLink href='http://www.google.com/calendar/feeds/default/private/full/rl8focglfe6jndql4u8lg73q5k/comments'></gd:feedLink></gd:comments><gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus><gd:visibility value='http://schemas.google.com/g/2005#event.default'></gd:visibility><gCal:sendEventNotifications value='false'></gCal:sendEventNotifications><gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency><gd:where></gd:where><gd:when startTime='2007-02-05T15:00:00.000-08:00' endTime='2007-02-05T16:00:00.000-08:00'><gd:reminder minutes='10'></gd:reminder></gd:when></entry></feed>
diff --git a/tests/AndroidTests/src/com/android/unit_tests/GDataParseTest.java b/tests/AndroidTests/src/com/android/unit_tests/GDataParseTest.java
deleted file mode 100644 (file)
index af85483..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.unit_tests;
-
-import android.content.res.XmlResourceParser;
-import android.test.AndroidTestCase;
-import android.test.PerformanceTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.Xml;
-import com.google.wireless.gdata.data.Entry;
-import com.google.wireless.gdata.data.Feed;
-import com.google.wireless.gdata.parser.ParseException;
-import com.google.wireless.gdata.parser.xml.XmlGDataParser;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.zip.GZIPInputStream;
-
-/**
- * Tests timing on parsing various formats of GData.
- */
-public class GDataParseTest extends AndroidTestCase implements PerformanceTestCase {
-
-    private static void parseXml(InputStream is) throws ParseException, IOException {
-        XmlPullParser xmlParser = Xml.newPullParser();
-        XmlGDataParser parser = new XmlGDataParser(is, xmlParser);
-        Feed feed = parser.init();
-        Entry entry = null;
-        while (parser.hasMoreData()) {
-            entry = parser.readNextEntry(entry);
-        }
-    }
-
-    private static void parseXml(XmlPullParser xmlP) throws ParseException, IOException {
-        XmlGDataParser parser = new XmlGDataParser(null /* in */, xmlP);
-        Feed feed = parser.init();
-        Entry entry = null;
-        while (parser.hasMoreData()) {
-            entry = parser.readNextEntry(entry);
-        }
-    }
-
-    private static void dumpXml(XmlPullParser parser) throws
-            XmlPullParserException, IOException {
-        int eventType = parser.nextTag();
-        while (eventType != XmlPullParser.END_DOCUMENT) {
-            switch (eventType) {
-                case XmlPullParser.START_TAG:
-                    parser.getName();
-                    // System.out.print("<" + parser.getName());
-                    int nattrs = parser.getAttributeCount();
-                    for (int i = 0; i < nattrs; ++i) {
-                        parser.getAttributeName(i);
-                        parser.getAttributeValue(i);
-                        // System.out.print(" " + parser.getAttributeName(i) + "=\""
-                        //        + parser.getAttributeValue(i) + "\"");
-                    }
-                    // System.out.print(">");
-                    break;
-                case XmlPullParser.END_TAG:
-                    parser.getName();
-                    // System.out.print("</" + parser.getName() + ">");
-                    break;
-                case XmlPullParser.TEXT:
-                    parser.getText();
-                    // System.out.print(parser.getText());
-                    break;
-                default:
-                    // do nothing
-            }
-            eventType = parser.next();
-        }
-    }
-
-    private byte[] getBytesForResource(int resid) throws Exception {
-        // all resources are written into a zip file, so the InputStream we
-        // get for a resource is on top of zipped
-        // data.  in order to compare performance of parsing unzipped vs.
-        // zipped content, we first read the data into an in-memory buffer.
-        InputStream zipIs = null;
-        try {
-            zipIs = mContext.getResources().openRawResource(resid);
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            byte buf[] = new byte[1024];
-            int bytesRead = zipIs.read(buf);
-            while (bytesRead > 0) {
-                baos.write(buf, 0, bytesRead);
-                bytesRead = zipIs.read(buf);
-            }
-            return baos.toByteArray();
-        } finally {
-            if (zipIs != null) {
-                zipIs.close();
-            }
-        }
-    }
-
-    public boolean isPerformanceOnly() {
-        return true;
-    }
-
-    public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
-        return 0;
-    }
-
-    @MediumTest
-    public void testXml() throws Exception {
-        InputStream is = new ByteArrayInputStream(getBytesForResource(R.raw.calendarxml));
-        try {
-            is.reset();
-            parseXml(is);
-        } finally {
-            is.close();
-        }
-    }
-
-    @MediumTest
-    public void testXmlGzip() throws Exception {
-        InputStream gzIs = new GZIPInputStream(
-                new ByteArrayInputStream(getBytesForResource(R.raw.calendarxmlgz)));
-        try {
-            parseXml(gzIs);
-        } finally {
-            gzIs.close();
-        }
-    }
-
-    @MediumTest
-    public void testJson() throws Exception {
-        String jsonString = new String(getBytesForResource(R.raw.calendarjs), "UTF-8");
-        JSONTokener tokens = new JSONTokener(jsonString);
-        assertNotNull(new JSONObject(tokens));
-    }
-
-    @SmallTest
-    public void testBinaryXml() throws Exception {
-        XmlResourceParser parser = mContext.getResources().getXml(R.xml.calendar);
-        parseXml(parser);
-        parser.close();
-    }
-}