From d3f94718eb82d70d26fef788be443671f2a630f3 Mon Sep 17 00:00:00 2001 From: lresende Date: Wed, 8 Oct 2008 06:17:14 +0000 Subject: TUSCANY-2577 - Applying Haibo's patch to add support for google web albums feeds trough gdata. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@702729 13f79535-47bb-0310-9956-ffa450edef68 --- .../provider/GdataReferenceBindingProvider.java | 17 +++ .../gdata/GoogleWebAlbumServiceTestCase.java | 120 +++++++++++++++++++++ .../binding/gdata/ConsumerGoogleWebAlbum.composite | 32 ++++++ 3 files changed, 169 insertions(+) create mode 100644 java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleWebAlbumServiceTestCase.java create mode 100644 java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleWebAlbum.composite (limited to 'java/sca/modules') diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GdataReferenceBindingProvider.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GdataReferenceBindingProvider.java index 70bf58a161..ba082e72b6 100644 --- a/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GdataReferenceBindingProvider.java +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GdataReferenceBindingProvider.java @@ -128,6 +128,11 @@ class GdataReferenceBindingProvider implements ReferenceBindingProvider { supportsFeedEntries = true; } + String entryURI = this.binding.getURI(); + if(entryURI.contains("picasaweb.google.com/data/feed/api/")){ + entryURI = entryURI.replace("picasaweb.google.com/data/feed/api/", "picasaweb.google.com/data/entry/api/"); + binding.setURI(entryURI); + } return new GdataBindingInvoker.GetInvoker(operation, binding.getURI(), googleService, httpClient, authorizationHeader, this); } else if (operationName.equals("post")) { @@ -136,9 +141,21 @@ class GdataReferenceBindingProvider implements ReferenceBindingProvider { } else if (operationName.equals("put")) { + String entryURI = this.binding.getURI(); + if(entryURI.contains("picasaweb.google.com/data/feed/api/")){ + entryURI = entryURI.replace("picasaweb.google.com/data/feed/api/", "picasaweb.google.com/data/entry/api/"); + binding.setURI(entryURI); + } return new GdataBindingInvoker.PutInvoker(operation, binding.getURI(), googleService, httpClient, authorizationHeader, this); } else if (operationName.equals("delete")) { + + + String entryURI = this.binding.getURI(); + if(entryURI.contains("picasaweb.google.com/data/feed/api/")){ + entryURI = entryURI.replace("picasaweb.google.com/data/feed/api/", "picasaweb.google.com/data/entry/api/"); + binding.setURI(entryURI); + } return new GdataBindingInvoker.DeleteInvoker(operation, binding.getURI(), googleService, httpClient, authorizationHeader, this); } else if (operationName.equals("getFeed") || operationName.equals("getAll")) { diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleWebAlbumServiceTestCase.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleWebAlbumServiceTestCase.java new file mode 100644 index 0000000000..96484cdf29 --- /dev/null +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleWebAlbumServiceTestCase.java @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.tuscany.sca.binding.gdata; + +import java.net.URL; + +import junit.framework.TestCase; + +import org.apache.tuscany.sca.host.embedded.SCADomain; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.google.gdata.client.Query; +import com.google.gdata.data.DateTime; +import com.google.gdata.data.Entry; +import com.google.gdata.data.Feed; +import com.google.gdata.data.PlainTextConstruct; + +public class GoogleWebAlbumServiceTestCase extends TestCase{ + + private SCADomain scaDomainConsumer = null; + private CustomerClient testService = null; + + public GoogleWebAlbumServiceTestCase(){ + + } + + @Before + @Override + public void setUp() throws Exception { + System.out.println("Method Test Start-----------------------------------------------------------------------"); + + //Initialize the GData client service (Reference Binding test) + scaDomainConsumer = SCADomain.newInstance("org/apache/tuscany/sca/binding/gdata/ConsumerGoogleWebAlbum.composite"); + testService = scaDomainConsumer.getService(CustomerClient.class, "CustomerClient"); + } + + @After + @Override + public void tearDown(){ + System.out.println("Method Test End------------------------------------------------------------------------"); + System.out.println("\n\n"); + } + + @Test + public void testClientGetFeed() throws Exception { + Feed feed = testService.clientGetFeed(); + System.out.println("feed title: " + feed.getTitle().getPlainText()); + assertEquals("flowers", feed.getTitle().getPlainText()); + } + + + + + @Test + public void testClientGetEntry() throws Exception { + String entryID = "photoid/5233468700029715874"; + Entry contactEntry = testService.clientGetEntry(entryID); + System.out.println("Entry ID: " + contactEntry.getId()); + assertTrue(contactEntry.getId().endsWith(entryID)); + System.out.println("------------------------------------------------------------\n\n"); + } + + + @Test + public void testClientQuery() throws Exception { + String feedUrlString = "http://picasaweb.google.com/data/feed/api/user/haibotuscany/album/flowers"; + URL feedURL = new URL(feedUrlString); + Query myQuery = new Query(feedURL); + myQuery.setMaxResults(100); + myQuery.setFullTextQuery("photo"); + Feed resultFeed = testService.clientQuery(myQuery); + System.out.println("Query result feed title: " + resultFeed.getTitle().getPlainText()); + System.out.println("Query result entry number: "+ resultFeed.getEntries().size()); + //assertEquals("gdata binding tuscany test", resultFeed.getTitle().getPlainText()); + } + + + + @Test + public void testClientPut() throws Exception { + String entryID = "photoid/5233468700029715874"; + String newBlogEntryTitle = "updatedTitle:dog"; + testService.clientPut(entryID, newBlogEntryTitle); //update the title + Thread.sleep(300); + Entry updatedEntry = testService.clientGetEntry(entryID); + assertEquals(newBlogEntryTitle, updatedEntry.getTitle().getPlainText()); + } + + + @Test + public void testClientDelete() throws Exception { + + //Tested and it worked, but only once because we can not delete the same entry twice + String entryID = "photoid/5233468698153151618"; + + //Delete this entry + //To test, change the entryID + //testService.clientDelete(entryID); + } + +} diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleWebAlbum.composite b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleWebAlbum.composite new file mode 100644 index 0000000000..99db48cc4e --- /dev/null +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleWebAlbum.composite @@ -0,0 +1,32 @@ + + + + + + + + + + + + -- cgit v1.2.3