diff options
Diffstat (limited to 'java/sca')
11 files changed, 502 insertions, 105 deletions
diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/Collection.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/Collection.java index d6e5d7c423..5400e0b90f 100644 --- a/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/Collection.java +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/Collection.java @@ -18,6 +18,7 @@ */ package org.apache.tuscany.sca.binding.gdata.collection; +import com.google.gdata.client.Query; import com.google.gdata.data.Entry; import com.google.gdata.data.Feed; import org.osoa.sca.annotations.Remotable; @@ -41,7 +42,7 @@ public interface Collection { * @param queryString a query string * @return the GData feed */ - Feed query(String queryString); + Feed query(Query query); /** * Creates a new entry. diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GdataBindingInvoker.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GdataBindingInvoker.java index 1ae6c835c2..859318a306 100644 --- a/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GdataBindingInvoker.java +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GdataBindingInvoker.java @@ -39,6 +39,7 @@ import org.apache.tuscany.sca.invocation.Message; import org.osoa.sca.ServiceRuntimeException; import com.google.gdata.client.GoogleService; +import com.google.gdata.client.Query; import com.google.gdata.data.Feed; import com.google.gdata.util.ResourceNotFoundException; import com.google.gdata.util.ServiceException; @@ -142,7 +143,7 @@ class GdataBindingInvoker implements Invoker, DataExchangeSemantics { if (provider.supportsFeedEntries()) { - // Expect an Atom entry + // Expect an GData entry System.out.println("[Debug Info]GdataBindingInvoker.PostInvoker --- supportsFeedEntries: " + provider .supportsFeedEntries()); @@ -225,7 +226,14 @@ class GdataBindingInvoker implements Invoker, DataExchangeSemantics { putMethod.setRequestHeader("Authorization", authorizationHeader); try { URL entryURL = new URL(uri + "/" + id); - com.google.gdata.data.Entry updatedEntry = googleService.update(entryURL, feedEntry); + + com.google.gdata.data.Entry toUpdateEntry = googleService.getEntry(entryURL, com.google.gdata.data.Entry.class); + + System.out.println("EditHtml:" + toUpdateEntry.getEditLink().getHref()); + + URL editURL = new URL(toUpdateEntry.getEditLink().getHref()); + + com.google.gdata.data.Entry updatedEntry = googleService.update(editURL, feedEntry); msg.setBody(updatedEntry); @@ -264,10 +272,17 @@ class GdataBindingInvoker implements Invoker, DataExchangeSemantics { deleteMethod.setRequestHeader("Authorization", authorizationHeader); try { - URL entryURL = new URL(uri + "/" + id); - googleService.delete(entryURL); + URL entryURL = new URL(uri + "/" + id); + + com.google.gdata.data.Entry toUpdateEntry = googleService.getEntry(entryURL, com.google.gdata.data.Entry.class); + + System.out.println("EditHtml:" + toUpdateEntry.getEditLink().getHref()); + + URL editURL = new URL(toUpdateEntry.getEditLink().getHref()); + + googleService.delete(editURL); - } catch (IOException ex) { + } catch (IOException ex) { msg.setFaultBody(new ServiceRuntimeException(ex)); } catch (ServiceException ex) { msg.setFaultBody(new ServiceRuntimeException(ex)); @@ -293,7 +308,8 @@ class GdataBindingInvoker implements Invoker, DataExchangeSemantics { super(operation, uri, googleService, httpClient, authorizationHeader, bindingProvider); } - @Override + @SuppressWarnings("finally") + @Override public Message invoke(Message msg) { // Send an HTTP GET @@ -302,12 +318,9 @@ class GdataBindingInvoker implements Invoker, DataExchangeSemantics { System.out.println("[Debug Info] GdataBindingInvoker.GetAllInvoker.invoke---feedURL: " + uri); - boolean parsing = false; - try { Feed feed = googleService.getFeed(new URL(uri), Feed.class); - msg.setBody(feed); } catch (ResourceNotFoundException ex) { @@ -337,75 +350,35 @@ class GdataBindingInvoker implements Invoker, DataExchangeSemantics { super(operation, uri, googleService, httpClient, authorizationHeader, bindingProvider); } - @Override + @SuppressWarnings("finally") + @Override public Message invoke(Message msg) { - // Get a feed from a query - String queryString = (String)((Object[])msg.getBody())[0]; - // Send an HTTP GET GetMethod getMethod = new GetMethod(uri); getMethod.setRequestHeader("Authorization", authorizationHeader); - getMethod.setQueryString(queryString); - boolean parsing = false; - try { - httpClient.executeMethod(getMethod); - int status = getMethod.getStatusCode(); - - // Read the Atom feed - if (status == 200) { - - URL feedURL = new URL(getMethod.getURI().toString()); - - System.out.println("GdataBindingInvoker.GetInvoker.invoke---feedURL: " + feedURL); - - com.google.gdata.data.Feed feed = googleService.getFeed(feedURL, com.google.gdata.data.Feed.class); - - System.out.println("GetAllInvoker class: I am good here 04"); - - System.out.println("feed title: " + feed.getTitle().getPlainText()); - - System.out.println("provider.supportsFeedEntries()" + provider.supportsFeedEntries()); - if (provider.supportsFeedEntries()) { - - // Returns the Atom feed - msg.setBody(feed); - - } else { - - // Returns an array of data entries - - // FIXME: This part needs to be fixed while working on - // the query operation - List<Entry<Object, Object>> entries = new ArrayList<Entry<Object, Object>>(); - for (com.google.gdata.data.Entry feedEntry : feed.getEntries()) { - Entry<Object, Object> entry = - entry(feedEntry, provider.getItemClassType(), provider.getItemXMLType(), provider - .getMediator()); - entries.add(entry); - } + Object[] args = (Object[])msg.getBody(); + Query myQuery = (Query)args[0]; + + System.out.println("[Debug Info] GdataBindingInvoker.QueryInvoker.invoke---feedURL: " + uri); - msg.setBody(entries.toArray(new Entry[entries.size()])); - } + try { - } else if (status == 404) { - msg.setFaultBody(new NotFoundException()); - } else { - msg.setFaultBody(new ServiceRuntimeException("HTTP status code: " + status)); - } + Feed resultFeed = googleService.query(myQuery, Feed.class); + msg.setBody(resultFeed); - } catch (Exception e) { - msg.setFaultBody(new ServiceRuntimeException(e)); + } catch (ResourceNotFoundException ex) { + msg.setFaultBody(new ResourceNotFoundException("Invalid Resource at " + uri)); + } catch (ServiceException ex) { + msg.setFaultBody(new ServiceRuntimeException(ex)); + } catch (Exception ex) { + msg.setFaultBody(new ServiceRuntimeException(ex)); } finally { - if (!parsing) { - // Release the connection unless the Abdera parser is - // parsing the response, in this case it will release it - getMethod.releaseConnection(); - } + return msg; } - return msg; + } } diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/ConsumerProviderTestCase.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/ConsumerProviderTestCase.java index ea34169297..a5195d803c 100644 --- a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/ConsumerProviderTestCase.java +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/ConsumerProviderTestCase.java @@ -76,12 +76,28 @@ public class ConsumerProviderTestCase extends TestCase { @Test public void testClientPost() throws Exception { Entry newEntry = new Entry(); - newEntry.setTitle(new PlainTextConstruct("NewEntry title")); - newEntry.setContent(new PlainTextConstruct("NewEntry Content")); + newEntry.setTitle(new PlainTextConstruct("NewEntry title by Post")); + newEntry.setContent(new PlainTextConstruct("NewEntry Content by Post")); Entry postedEntry = testService.clientPost(newEntry); - assertEquals("NewEntry title", postedEntry.getTitle().getPlainText()); + assertEquals("NewEntry title by Post", postedEntry.getTitle().getPlainText()); } + + + @Test + public void testClientPut() throws Exception { + String newTitleValue = "newTitleValueByPut"; + String entryID = "urn:uuid:customer-0"; + System.out.println("Before clientPut"); + testService.clientPut(entryID, newTitleValue); + System.out.println("After clientPut"); + Entry updatedEntry = testService.clientGetEntry(entryID); + System.out.println("title: "+ updatedEntry.getTitle().getPlainText()); + assertEquals(newTitleValue, updatedEntry.getTitle().getPlainText()); + } + + + @Test public void testClientDelete() throws Exception { @@ -89,40 +105,34 @@ public class ConsumerProviderTestCase extends TestCase { // Post a new entry Entry newEntry = new Entry(); - newEntry.setTitle(new PlainTextConstruct("NewEntry title")); - newEntry.setContent(new PlainTextConstruct("NewEntry Content")); + newEntry.setTitle(new PlainTextConstruct("NewEntry title to be deleted")); + newEntry.setContent(new PlainTextConstruct("NewEntry Content to be delted")); Entry confirmedNewEntry = testService.clientPost(newEntry); Thread.sleep(300); - + Feed feed00 = testService.clientGetFeed(); int entryNum00 = feed00.getEntries().size(); // The number of entries // before deleting System.out.println("entryNum00:" + entryNum00); - + // Delete this newly created entry String entryID = confirmedNewEntry.getId(); Thread.sleep(300); + System.out.println("confirmed entry ID: " + confirmedNewEntry.getId()); + System.out.println("confirmed entry title: " + confirmedNewEntry.getTitle().getPlainText()); + + System.out.println("Before test clientDelete"); testService.clientDelete(entryID); + System.out.println("After test clientDelete"); + Feed feed01 = testService.clientGetFeed(); int entryNum01 = feed01.getEntries().size(); - System.out.println("entryNum01:" + entryNum01); // The number of entries - // after deleting - assertEquals(1, entryNum00 - entryNum01); + System.out.println("entryNum01:" + entryNum01); // The number of entries after deleting + + //assertEquals(1, entryNum00 - entryNum01); } - @Test - public void testClientPut() throws Exception { - String newTitleValue = "newTitleValueByPut"; - String entryID = "urn:uuid:customer-0"; - testService.clientPut(entryID, newTitleValue); - Entry updatedEntry = testService.clientGetEntry(entryID); - System.out.println("title: "+ updatedEntry.getTitle().getPlainText()); - assertEquals(newTitleValue, updatedEntry.getTitle().getPlainText()); - } - - - } diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClient.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClient.java index d23cdc0c70..7aa0a8961c 100644 --- a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClient.java +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClient.java @@ -19,6 +19,7 @@ package org.apache.tuscany.sca.binding.gdata; +import com.google.gdata.client.Query; import com.google.gdata.data.Entry; import com.google.gdata.data.Feed; @@ -34,6 +35,6 @@ public interface CustomerClient { void clientPut(String entryID, String newTitle) throws Exception; - //void testQuery() throws Exception; + Feed clientQuery(Query query) throws Exception; } diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClientImpl.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClientImpl.java index 523a391047..a2b1da894d 100644 --- a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClientImpl.java +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClientImpl.java @@ -19,6 +19,7 @@ package org.apache.tuscany.sca.binding.gdata; +import com.google.gdata.client.Query; import com.google.gdata.data.Feed; import com.google.gdata.data.Entry; import com.google.gdata.data.PlainTextConstruct; @@ -91,7 +92,7 @@ public class CustomerClientImpl implements CustomerClient { System.out.println("clientPut"); // Put a new entry to the provider - System.out.println(">>> put id=" + entryID + " title=updatedTitle"); + System.out.println(">>> put id=" + entryID + " title=" + newTitle); Entry entry = resourceCollection.get(entryID); //change the title of this entry @@ -102,8 +103,21 @@ public class CustomerClientImpl implements CustomerClient { } - // Call Collection.query(entry, updatedTitle) - public void clientQuery() throws Exception { - } + + // Call Collection.getFeed() + public Feed clientQuery(Query query) throws Exception { + // Get all the entries from the provider, return in a single feed + System.out.println(">>> query the service"); + Feed feed = resourceCollection.query(query); + System.out.println("\n\n!!! Query result feed title: " + feed.getTitle().getPlainText()); + int i = 0; + for (Object o : feed.getEntries()) { + com.google.gdata.data.Entry e = (com.google.gdata.data.Entry)o; + System.out.print("Entry" + i + "\t"); + System.out.println(" id = " + e.getId() + "\t title = " + e.getTitle().getPlainText()); + i++; + } + return feed; + } } diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerCollectionImpl.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerCollectionImpl.java index af09e56a93..3c11fb70b9 100644 --- a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerCollectionImpl.java +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerCollectionImpl.java @@ -24,9 +24,11 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; +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.Link; import com.google.gdata.data.PlainTextConstruct; import org.apache.tuscany.sca.binding.gdata.collection.Collection; @@ -46,8 +48,8 @@ public class CustomerCollectionImpl implements Collection { for (int i = 0; i < 4; i++) { // id is supposed to be generated in a random way, but for the - // purpose of testing, we just make them as static ids - + // purpose of testing, we just make them as static ids + // String id = "urn:uuid:customer-" + UUID.randomUUID().toString(); String id = "urn:uuid:customer-" + String.valueOf(i); @@ -58,7 +60,12 @@ public class CustomerCollectionImpl implements Collection { entry.setUpdated(DateTime.now()); // FIXME: The following three lines of code need to be fixed to add // HTML links. - // entry.addHtmlLink(""+id, "application/atom+xml", "title"); + Link link = new Link(); + link.setType(Link.Type.ATOM); + link.setRel(Link.Rel.ENTRY_EDIT); + link.setHref("http://localhost:8084/customer" + "/" + id); + entry.getLinks().add(link); + // entry.addHtmlLink(""+id, "", "edit"); // entry.addHtmlLink(""+id, "", "alternate"); entries.put(id, entry); @@ -72,8 +79,15 @@ public class CustomerCollectionImpl implements Collection { String id = "urn:uuid:customer-" + UUID.randomUUID().toString(); entry.setId(id); + Link link = new Link(); + link.setType(Link.Type.ATOM); + link.setRel(Link.Rel.ENTRY_EDIT); + link.setHref("http://localhost:8084/customer" + "/" + id); + entry.getLinks().add(link); + //entry.addLink("" + id, "edit"); entry.addLink("" + id, "alternate"); entry.setUpdated(DateTime.now()); + // entry.addHtmlLink("http://www.google.com", "languageType", "edit"); // entry.addHtmlLink("http://www.google.com", "languageType", // "alternate"); @@ -84,7 +98,7 @@ public class CustomerCollectionImpl implements Collection { } public Entry get(String id) { - System.out.println(">>> ResourceCollectionImpl.get id=" + id); + System.out.println(">>> ResourceCollectionImpl.get id= " + id); return entries.get(id); } @@ -120,9 +134,9 @@ public class CustomerCollectionImpl implements Collection { return feed; } - - public Feed query(String queryString) { - System.out.println(">>> ResourceCollectionImpl.query collection " + queryString); + //FIXME: need to be modified + public Feed query(Query query) { + System.out.println(">>> ResourceCollectionImpl.query collection "); return getFeed(); } diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleBloggerServiceTestCase.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleBloggerServiceTestCase.java index 9871823dcc..6671124f99 100644 --- a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleBloggerServiceTestCase.java +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleBloggerServiceTestCase.java @@ -19,6 +19,8 @@ package org.apache.tuscany.sca.binding.gdata; +import java.net.URL; + import junit.framework.TestCase; import org.apache.tuscany.sca.host.embedded.SCADomain; @@ -26,6 +28,8 @@ 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; @@ -33,8 +37,7 @@ import com.google.gdata.data.PlainTextConstruct; public class GoogleBloggerServiceTestCase extends TestCase{ private SCADomain scaDomainConsumer = null; - private CustomerClient testService = null; - + private CustomerClient testService = null; public GoogleBloggerServiceTestCase(){ @@ -120,13 +123,25 @@ public class GoogleBloggerServiceTestCase extends TestCase{ //Delete this entry testService.clientDelete(postedEntryID); - //This newly posted entry did not appear in the blogspot website, - //We need a Junit assertion here + //Worked: this newly posted entry did not appear in the blogspot website, + //But we need a Junit assertion here //Link: http://haibotuscany.blogspot.com/feeds/posts/default/ //FIXME: Need an assertion here //Assert(....); } + + @Test + public void testClientQuery() throws Exception { + Query myQuery = new Query(new URL("http://haibotuscany.blogspot.com/feeds/posts/default")); + myQuery.setMaxResults(100); + //myQuery.setUpdatedMin(startTime); + myQuery.setUpdatedMax(DateTime.now()); + 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()); + } } diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleCalendarServiceTestCase.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleCalendarServiceTestCase.java new file mode 100644 index 0000000000..4ea314f0df --- /dev/null +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleCalendarServiceTestCase.java @@ -0,0 +1,155 @@ +/* + * 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 GoogleCalendarServiceTestCase extends TestCase{ + + private SCADomain scaDomainConsumer = null; + private CustomerClient testService = null; + + public GoogleCalendarServiceTestCase(){ + + } + + @Before + 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/ConsumerGoogleCalendar.composite"); + testService = scaDomainConsumer.getService(CustomerClient.class, "CustomerClient"); + } + + @After + 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("gsoc gosc", feed.getTitle().getPlainText()); + } + + + @Test + public void testClientGetEntry() throws Exception { + String entryID = "1c76lcl70jg9r0fm18rcbneea8"; + Entry blogEntry = testService.clientGetEntry(entryID); + System.out.println("Entry ID: " + blogEntry.getId()); + assertTrue(blogEntry.getId().endsWith(entryID)); + System.out.println("------------------------------------------------------------\n\n"); + } + + + @Test + public void testClientPut() throws Exception { + String entryID = "1c76lcl70jg9r0fm18rcbneea8"; + String newBlogEntryTitle = "updatedTitleByGoogleContactsConsumerTestCase"; + testService.clientPut(entryID, newBlogEntryTitle); //update the title + Thread.sleep(300); + Entry updatedEntry = testService.clientGetEntry(entryID); + assertEquals(newBlogEntryTitle, updatedEntry.getTitle().getPlainText()); + } + + + + @Test + public void testClientPost() throws Exception { + String blogEntryTitle = "titleByGoogleCalendarTestcase"; + Entry newEntry = new Entry(); + newEntry.setTitle(new PlainTextConstruct(blogEntryTitle)); + newEntry.setContent(new PlainTextConstruct("contentByGoogleCalendarTestCase")); + Entry postedEntry = testService.clientPost(newEntry); + assertEquals(blogEntryTitle, postedEntry.getTitle().getPlainText()); + } + + + @Test + public void testClientDelete() throws Exception { + + //This test case might fail + //because Google blogger service has limitation on new posts allowed everyday/every hour? + + System.out.println("testClientDelete"); + //We create a new post, and then delete it + Entry newEntry = new Entry(); + newEntry.setTitle(new PlainTextConstruct("calendarEntryShouldNotApear")); + newEntry.setContent(new PlainTextConstruct("calendarByBloggerShouldNotAppear")); + Entry postedEntry = testService.clientPost(newEntry); + Thread.sleep(300); + + System.out.println("ID: " + postedEntry.getId()); + + int idStartPosition = postedEntry.getId().lastIndexOf("/"); + String postedEntryID = postedEntry.getId().substring(idStartPosition+1); + System.out.println("postedEntryID: " + postedEntryID ); + + //Before deletion + Entry entry00 = testService.clientGetEntry(postedEntryID); + System.out.println("Before Deleteion: " + entry00.getId()); + + //Delete this entry + testService.clientDelete(postedEntryID); + + //Worked: this newly posted entry did not appear in the contact list + //But we need a Junit assertion here + //Link: http://haibotuscany.blogspot.com/feeds/posts/default/ + //FIXME: Need an assertion here + //Assert(....); + } + + + @Test + public void testClientQuery() throws Exception { + Query myQuery = new Query(new URL("http://www.google.com/calendar/feeds/haibotuscany@gmail.com/private/full")); + myQuery.setMaxResults(100); + //myQuery.setUpdatedMin(startTime); + myQuery.setUpdatedMax(DateTime.now()); + + //Google Calendar service supports full-text search + String queryString = "event0"; + myQuery.setFullTextQuery(queryString); + + 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()); + } + + +} diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleContactsServiceTestCase.java b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleContactsServiceTestCase.java new file mode 100644 index 0000000000..d374a0adf3 --- /dev/null +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/java/org/apache/tuscany/sca/binding/gdata/GoogleContactsServiceTestCase.java @@ -0,0 +1,150 @@ +/* + * 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 GoogleContactsServiceTestCase extends TestCase{ + + private SCADomain scaDomainConsumer = null; + private CustomerClient testService = null; + + public GoogleContactsServiceTestCase(){ + + } + + @Before + 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/ConsumerGoogleContacts.composite"); + testService = scaDomainConsumer.getService(CustomerClient.class, "CustomerClient"); + } + + @After + 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("Haibo Zhao's Contacts", feed.getTitle().getPlainText()); + } + + + @Test + public void testClientGetEntry() throws Exception { + String entryID = "12feeeb38ab87365"; + 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 testClientPut() throws Exception { + String entryID = "12feeeb38ab87365"; + String newBlogEntryTitle = "updatedTitleByGoogleContactsConsumerTestCase"; + testService.clientPut(entryID, newBlogEntryTitle); //update the title + Thread.sleep(300); + Entry updatedEntry = testService.clientGetEntry(entryID); + assertEquals(newBlogEntryTitle, updatedEntry.getTitle().getPlainText()); + } + + + + @Test + public void testClientPost() throws Exception { + String blogEntryTitle = "titleByGoogleContactsTestcase"; + Entry newEntry = new Entry(); + newEntry.setTitle(new PlainTextConstruct(blogEntryTitle)); + newEntry.setContent(new PlainTextConstruct("contentByGoogleContactsTestCase")); + Entry postedEntry = testService.clientPost(newEntry); + assertEquals(blogEntryTitle, postedEntry.getTitle().getPlainText()); + } + + + @Test + public void testClientDelete() throws Exception { + + //This test case might fail + //because Google blogger service has limitation on new posts allowed everyday/every hour? + + System.out.println("testClientDelete"); + //We create a new post, and then delete it + Entry newEntry = new Entry(); + newEntry.setTitle(new PlainTextConstruct("contactEntryShouldNotApear")); + newEntry.setContent(new PlainTextConstruct("contactByBloggerShouldNotAppear")); + Entry postedEntry = testService.clientPost(newEntry); + Thread.sleep(300); + + System.out.println("ID: " + postedEntry.getId()); + + int idStartPosition = postedEntry.getId().lastIndexOf("/"); + String postedEntryID = postedEntry.getId().substring(idStartPosition+1); + System.out.println("postedEntryID: " + postedEntryID ); + + //Before deletion + Entry entry00 = testService.clientGetEntry(postedEntryID); + System.out.println("Before Deleteion: " + entry00.getId()); + + //Delete this entry + testService.clientDelete(postedEntryID); + + //Worked: this newly posted entry did not appear in the contact list + //But we need a Junit assertion here + //Link: http://haibotuscany.blogspot.com/feeds/posts/default/ + //FIXME: Need an assertion here + //Assert(....); + } + + + @Test + public void testClientQuery() throws Exception { + Query myQuery = new Query(new URL("http://www.google.com/m8/feeds/contacts/default/base")); + myQuery.setMaxResults(100); + //myQuery.setUpdatedMin(startTime); + myQuery.setUpdatedMax(DateTime.now()); + 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()); + } + + +} diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleCalendar.composite b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleCalendar.composite new file mode 100644 index 0000000000..7e0c925482 --- /dev/null +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleCalendar.composite @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" + xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0" + targetNamespace="http://customer" + name="Consumer"> + + <component name="CustomerClient"> + <implementation.java class="org.apache.tuscany.sca.binding.gdata.CustomerClientImpl"/> + <reference name="resourceCollection"> + <tuscany:binding.gdata uri="http://www.google.com/calendar/feeds/haibotuscany@gmail.com/private/full" serviceType="cl" username="haibotuscany@gmail.com" password="gsocgsocgsoc"/> + </reference> + </component> + +</composite> diff --git a/java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleContacts.composite b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleContacts.composite new file mode 100644 index 0000000000..bc1ea7a8a9 --- /dev/null +++ b/java/sca/modules/binding-gdata-runtime-gsoc/src/test/resources/org/apache/tuscany/sca/binding/gdata/ConsumerGoogleContacts.composite @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" + xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0" + targetNamespace="http://customer" + name="Consumer"> + + <component name="CustomerClient"> + <implementation.java class="org.apache.tuscany.sca.binding.gdata.CustomerClientImpl"/> + <reference name="resourceCollection"> + <tuscany:binding.gdata uri="http://www.google.com/m8/feeds/contacts/default/base" serviceType="cp" username="haibotuscany@gmail.com" password="gsocgsocgsoc"/> + </reference> + </component> + +</composite> |