You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2008/08/09 17:56:53 UTC
svn commit: r684281 - in /tuscany/java/sca/modules/binding-gdata-runtime/src:
main/java/org/apache/tuscany/sca/binding/gdata/collection/
main/java/org/apache/tuscany/sca/binding/gdata/provider/
test/java/org/apache/tuscany/sca/binding/gdata/ test/resou...
Author: lresende
Date: Sat Aug 9 08:56:52 2008
New Revision: 684281
URL: http://svn.apache.org/viewvc?rev=684281&view=rev
Log:
TUSCANY-2494 - Applying douglas's patch
Removed:
tuscany/java/sca/modules/binding-gdata-runtime/src/test/java/org/apache/tuscany/sca/binding/gdata/Consumer.java
tuscany/java/sca/modules/binding-gdata-runtime/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClient.java
tuscany/java/sca/modules/binding-gdata-runtime/src/test/java/org/apache/tuscany/sca/binding/gdata/CustomerClientImpl.java
Modified:
tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/Collection.java
tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/MediaCollection.java
tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingInvoker.java
tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingProviderFactory.java
tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataReferenceBindingProvider.java
tuscany/java/sca/modules/binding-gdata-runtime/src/test/resources/org/apache/tuscany/sca/binding/gdata/Consumer.composite
Modified: tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/Collection.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/Collection.java?rev=684281&r1=684280&r2=684281&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/Collection.java (original)
+++ tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/Collection.java Sat Aug 9 08:56:52 2008
@@ -19,7 +19,7 @@
package org.apache.tuscany.sca.binding.gdata.collection;
import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.Feed;
+import com.google.gdata.data.BaseFeed;
import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
import org.osoa.sca.annotations.Remotable;
@@ -37,7 +37,7 @@
*
* @return the Atom feed
*/
- Feed getFeed();
+ BaseFeed<? extends BaseFeed, ? extends BaseEntry> getFeed();
/**
* Get an Atom feed for a collection of resources resulting
@@ -46,7 +46,7 @@
* @param queryString a query string
* @return the Atom feed
*/
- Feed query(String queryString);
+ BaseFeed<? extends BaseFeed, ? extends BaseEntry> query(String queryString);
/**
* Creates a new entry.
@@ -79,5 +79,4 @@
* @param id
*/
void delete(String id) throws NotFoundException;
-
}
Modified: tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/MediaCollection.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/MediaCollection.java?rev=684281&r1=684280&r2=684281&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/MediaCollection.java (original)
+++ tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/collection/MediaCollection.java Sat Aug 9 08:56:52 2008
@@ -18,11 +18,11 @@
*/
package org.apache.tuscany.sca.binding.gdata.collection;
+import com.google.gdata.data.BaseEntry;
import java.io.InputStream;
import org.osoa.sca.annotations.Remotable;
-import com.google.gdata.data.Entry;
import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
/**
@@ -41,7 +41,7 @@
* @param contentType
* @param media
*/
- Entry postMedia(String title, String slug, String contentType, InputStream media);
+ BaseEntry postMedia(String title, String slug, String contentType, InputStream media);
/**
* Update a media entry.
Modified: tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingInvoker.java?rev=684281&r1=684280&r2=684281&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingInvoker.java (original)
+++ tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingInvoker.java Sat Aug 9 08:56:52 2008
@@ -18,7 +18,8 @@
*/
package org.apache.tuscany.sca.binding.gdata.provider;
-import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
@@ -27,11 +28,24 @@
import com.google.gdata.client.GoogleService;
import com.google.gdata.client.Query;
import com.google.gdata.data.BaseEntry;
+import com.google.gdata.data.BaseFeed;
import com.google.gdata.data.Entry;
+import com.google.gdata.data.ExtensionProfile;
import com.google.gdata.data.Feed;
+import com.google.gdata.data.ParseSource;
+import com.google.gdata.util.AuthenticationException;
import java.net.URL;
-import com.google.gdata.util.ServiceException;
import com.google.gdata.util.ResourceNotFoundException;
+import com.google.gdata.util.common.xml.XmlWriter;
+import java.io.StringWriter;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.DeleteMethod;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.PutMethod;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.apache.tuscany.sca.binding.gdata.GDataBinding;
+import org.apache.tuscany.sca.data.collection.NotFoundException;
import org.apache.tuscany.sca.invocation.DataExchangeSemantics;
/**
@@ -42,13 +56,30 @@
class GDataBindingInvoker implements Invoker, DataExchangeSemantics {
Operation operation;
- String uri;
+ GDataBinding binding;
+ HttpClient httpClient;
+ String authorizationHeader;
GoogleService service;
- GDataBindingInvoker(Operation operation, String uri, GoogleService service) {
+ GDataBindingInvoker(Operation operation, GDataBinding binding, HttpClient httpClient, String authorizationHeader) {
this.operation = operation;
- this.uri = uri;
- this.service = service;
+ this.binding = binding;
+ this.httpClient = httpClient;
+ this.authorizationHeader = authorizationHeader;
+
+ //Create the GoogleService
+ if (!binding.getServiceType().equals("sca")) {
+ this.service = new GoogleService(binding.getServiceType(), "");
+
+ try {
+ service.setUserCredentials(binding.getUsername(), binding.getPassword());
+ } catch (AuthenticationException ex) {
+ //FIXME - promote the exception
+ Logger.getLogger(GDataReferenceBindingProvider.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ this.service.setConnectTimeout(60000);
+ }
}
public Message invoke(Message msg) {
@@ -63,27 +94,60 @@
*/
public static class GetInvoker extends GDataBindingInvoker {
- public GetInvoker(Operation operation, String uri, GoogleService service) {
- super(operation, uri, service);
+ public GetInvoker(Operation operation, GDataBinding binding, HttpClient httpClient, String authorizationHeader) {
+ super(operation, binding, httpClient, authorizationHeader);
}
@Override
public Message invoke(Message msg) {
- try {
- String id = (String) ((Object[]) msg.getBody())[0];
+ BaseEntry entry;
+ GetMethod getMethod = null;
+ boolean parsing = false;
- BaseEntry searchedEntry = service.getEntry(new URL(id), Entry.class);
+ String id = (String) ((Object[]) msg.getBody())[0];
- msg.setBody(searchedEntry);
-
- } catch (IOException ex) {
- msg.setFaultBody(new ServiceRuntimeException(ex));
- } catch (ServiceException ex) {
+ try {
+ // serviceType == "sca" - Send an HTTP GET
+ if (service == null) {
+ getMethod = new GetMethod(binding.getURI() + "/" + id);
+ getMethod.setRequestHeader("Authorization", authorizationHeader);
+
+ httpClient.executeMethod(getMethod);
+ int status = getMethod.getStatusCode();
+
+ // Read the Atom feed
+ if (status == 200) {
+
+ parsing = true;
+
+ ParseSource parser = new ParseSource(getMethod.getResponseBodyAsStream());
+ entry = BaseEntry.readEntry(parser);
+
+ msg.setBody(entry);
+
+ } else if (status == 404) {
+ msg.setFaultBody(new NotFoundException());
+ } else {
+ msg.setFaultBody(new ServiceRuntimeException("HTTP status code: " + status));
+ }
+
+ } // serviceType != "sca" - Use GoogleService
+ else {
+ entry = service.getEntry(new URL(id), Entry.class);
+ msg.setBody(entry);
+ }
+ } catch (ResourceNotFoundException ex) {
+ msg.setFaultBody(new ResourceNotFoundException("Invalid Resource at " + binding.getURI()));
+ } catch (Exception ex) {
msg.setFaultBody(new ServiceRuntimeException(ex));
} finally {
+ if (service == null && !parsing) {
+ getMethod.releaseConnection();
+ }
return msg;
}
+
}
}
@@ -92,27 +156,70 @@
*/
public static class PostInvoker extends GDataBindingInvoker {
- public PostInvoker(Operation operation, String uri, GoogleService service) {
- super(operation, uri, service);
+ public PostInvoker(Operation operation, GDataBinding binding, HttpClient httpClient, String authorizationHeader) {
+ super(operation, binding, httpClient, authorizationHeader);
}
@Override
public Message invoke(Message msg) {
- try {
-
- BaseEntry entry = (BaseEntry) ((Object[]) msg.getBody())[0];
- BaseEntry returnedEntry = service.insert(new URL(uri), entry);
+ BaseEntry entry = (BaseEntry) ((Object[]) msg.getBody())[0];
+ BaseEntry returnedEntry;
- msg.setBody(returnedEntry);
+ PostMethod postMethod = null;
+ boolean parsing = false;
- } catch (IOException ex) {
- msg.setFaultBody(new ServiceRuntimeException(ex));
- } catch (ServiceException ex) {
+ try {
+ // serviceType == "sca" - Send an HTTP POST
+ if (service == null) {
+ postMethod = new PostMethod(binding.getURI());
+ postMethod.setRequestHeader("Authorization", authorizationHeader);
+
+ // Write the Atom entry
+ StringWriter strWriter = new StringWriter();
+ XmlWriter writer = new XmlWriter(strWriter);
+ entry.generateAtom(writer, new ExtensionProfile());
+ writer.flush();
+ writer.close();
+
+ postMethod.setRequestHeader("Content-type", "application/atom+xml; charset=utf-8");
+ postMethod.setRequestEntity(new StringRequestEntity(strWriter.toString()));
+
+ httpClient.executeMethod(postMethod);
+ int status = postMethod.getStatusCode();
+
+ // Read the Atom feed
+ if (status == 200 || status == 201) {
+
+ parsing = true;
+
+ ParseSource parser = new ParseSource(postMethod.getResponseBodyAsStream());
+ returnedEntry = BaseEntry.readEntry(parser);
+
+ msg.setBody(returnedEntry);
+
+ } else if (status == 404) {
+ msg.setFaultBody(new NotFoundException());
+ } else {
+ msg.setFaultBody(new ServiceRuntimeException("HTTP status code: " + status));
+ }
+
+ } // serviceType != "sca" - Use GoogleService
+ else {
+ returnedEntry = service.insert(new URL(binding.getURI()), entry);
+ msg.setBody(returnedEntry);
+ }
+ } catch (ResourceNotFoundException ex) {
+ msg.setFaultBody(new ResourceNotFoundException("Invalid Resource at " + binding.getURI()));
+ } catch (Exception ex) {
msg.setFaultBody(new ServiceRuntimeException(ex));
} finally {
+ if (service == null && !parsing) {
+ postMethod.releaseConnection();
+ }
return msg;
}
+
}
}
@@ -121,27 +228,68 @@
*/
public static class PutInvoker extends GDataBindingInvoker {
- public PutInvoker(Operation operation, String uri, GoogleService service) {
- super(operation, uri, service);
+ public PutInvoker(Operation operation, GDataBinding binding, HttpClient httpClient, String authorizationHeader) {
+ super(operation, binding, httpClient, authorizationHeader);
}
@Override
public Message invoke(Message msg) {
- try {
- Object[] args = (Object[]) msg.getBody();
- String id = (String) args[0];
- BaseEntry entry = (BaseEntry) args[1];
+ BaseEntry updatedEntry;
+ String id = (String) ((Object[]) msg.getBody())[0];
+ BaseEntry entry = (BaseEntry) ((Object[]) msg.getBody())[1];
- BaseEntry updatedEntry = service.update(new URL(id), entry);
+ PutMethod putMethod = null;
+ boolean parsing = false;
- msg.setBody(updatedEntry);
-
- } catch (IOException ex) {
- msg.setFaultBody(new ServiceRuntimeException(ex));
- } catch (ServiceException ex) {
+ try {
+ // serviceType == "sca" - Send an HTTP PUT
+ if (service == null) {
+ putMethod = new PutMethod(binding.getURI() + "/" + id);
+ putMethod.setRequestHeader("Authorization", authorizationHeader);
+
+ // Write the Atom entry
+ StringWriter strWriter = new StringWriter();
+ XmlWriter writer = new XmlWriter(strWriter);
+ entry.generateAtom(writer, new ExtensionProfile());
+ writer.flush();
+ writer.close();
+
+ putMethod.setRequestHeader("Content-type", "application/atom+xml; charset=utf-8");
+ putMethod.setRequestEntity(new StringRequestEntity(strWriter.toString()));
+
+ httpClient.executeMethod(putMethod);
+ int status = putMethod.getStatusCode();
+
+ // Read the Atom feed
+ if (status == 200 || status == 201) {
+
+ parsing = true;
+
+ ParseSource parser = new ParseSource(putMethod.getResponseBodyAsStream());
+ updatedEntry = BaseEntry.readEntry(parser);
+
+ msg.setBody(updatedEntry);
+
+ } else if (status == 404) {
+ msg.setFaultBody(new NotFoundException());
+ } else {
+ msg.setFaultBody(new ServiceRuntimeException("HTTP status code: " + status));
+ }
+
+ } // serviceType != "sca" - Use GoogleService
+ else {
+ updatedEntry = service.update(new URL(id), entry);
+ msg.setBody(updatedEntry);
+ }
+ } catch (ResourceNotFoundException ex) {
+ msg.setFaultBody(new ResourceNotFoundException("Invalid Resource at " + binding.getURI()));
+ } catch (Exception ex) {
msg.setFaultBody(new ServiceRuntimeException(ex));
} finally {
+ if (service == null && !parsing) {
+ putMethod.releaseConnection();
+ }
return msg;
}
}
@@ -152,23 +300,52 @@
*/
public static class DeleteInvoker extends GDataBindingInvoker {
- public DeleteInvoker(Operation operation, String uri, GoogleService service) {
- super(operation, uri, service);
+ public DeleteInvoker(Operation operation, GDataBinding binding, HttpClient httpClient, String authorizationHeader) {
+ super(operation, binding, httpClient, authorizationHeader);
}
@Override
public Message invoke(Message msg) {
- try {
- String id = (String) ((Object[]) msg.getBody())[0];
- service.delete(new URL(id));
- } catch (IOException ex) {
- msg.setFaultBody(new ServiceRuntimeException(ex));
- } catch (ServiceException ex) {
+ DeleteMethod deleteMethod = null;
+
+ String id = (String) ((Object[]) msg.getBody())[0];
+
+ try {
+ // serviceType == "sca" - Send an HTTP DELETE
+ if (service == null) {
+ deleteMethod = new DeleteMethod(binding.getURI() + "/" + id);
+ deleteMethod.setRequestHeader("Authorization", authorizationHeader);
+
+ httpClient.executeMethod(deleteMethod);
+ int status = deleteMethod.getStatusCode();
+
+ // Read the Atom feed
+ if (status == 200) {
+ msg.setBody(null);
+
+ } else if (status == 404) {
+ msg.setFaultBody(new NotFoundException());
+ } else {
+ msg.setFaultBody(new ServiceRuntimeException("HTTP status code: " + status));
+ }
+
+ } // serviceType != "sca" - Use GoogleService
+ else {
+ service.delete(new URL(id));
+ msg.setBody(null);
+ }
+ } catch (ResourceNotFoundException ex) {
+ msg.setFaultBody(new ResourceNotFoundException("Invalid Resource at " + binding.getURI()));
+ } catch (Exception ex) {
msg.setFaultBody(new ServiceRuntimeException(ex));
} finally {
+ if (service == null) {
+ deleteMethod.releaseConnection();
+ }
return msg;
}
+
}
}
@@ -177,26 +354,55 @@
*/
public static class GetAllInvoker extends GDataBindingInvoker {
- public GetAllInvoker(Operation operation, String uri, GoogleService service) {
- super(operation, uri, service);
+ public GetAllInvoker(Operation operation, GDataBinding binding, HttpClient httpClient, String authorizationHeader) {
+ super(operation, binding, httpClient, authorizationHeader);
}
@Override
public Message invoke(Message msg) {
- try {
-
- Feed feed = service.getFeed(new URL(uri), Feed.class);
-
- msg.setBody(feed);
+ BaseFeed feed;
+ GetMethod getMethod = null;
+ boolean parsing = false;
+ try {
+ // serviceType == "sca" - Send an HTTP GET
+ if (service == null) {
+ getMethod = new GetMethod(binding.getURI());
+ getMethod.setRequestHeader("Authorization", authorizationHeader);
+
+ httpClient.executeMethod(getMethod);
+ int status = getMethod.getStatusCode();
+
+ // Read the Atom feed
+ if (status == 200) {
+
+ parsing = true;
+
+ ParseSource parser = new ParseSource(getMethod.getResponseBodyAsStream());
+ feed = BaseFeed.readFeed(parser);
+
+ msg.setBody(feed);
+
+ } else if (status == 404) {
+ msg.setFaultBody(new NotFoundException());
+ } else {
+ msg.setFaultBody(new ServiceRuntimeException("HTTP status code: " + status));
+ }
+
+ } // serviceType != "sca" - Use GoogleService
+ else {
+ feed = service.getFeed(new URL(binding.getURI()), Feed.class);
+ msg.setBody(feed);
+ }
} catch (ResourceNotFoundException ex) {
- msg.setFaultBody(new ResourceNotFoundException("Invalid Resource at " + uri));
- } catch (ServiceException ex) {
- msg.setFaultBody(new ServiceRuntimeException(ex));
+ msg.setFaultBody(new ResourceNotFoundException("Invalid Resource at " + binding.getURI()));
} catch (Exception ex) {
msg.setFaultBody(new ServiceRuntimeException(ex));
} finally {
+ if (service == null && !parsing) {
+ getMethod.releaseConnection();
+ }
return msg;
}
}
@@ -207,26 +413,60 @@
*/
public static class QueryInvoker extends GDataBindingInvoker {
- public QueryInvoker(Operation operation, String uri, GoogleService service) {
- super(operation, uri, service);
+ public QueryInvoker(Operation operation, GDataBinding binding, HttpClient httpClient, String authorizationHeader) {
+ super(operation, binding, httpClient, authorizationHeader);
}
@Override
public Message invoke(Message msg) {
- try {
+
+ BaseFeed feed;
+ GetMethod getMethod = null;
+ boolean parsing = false;
- String strQuery = (String) ((Object[]) msg.getBody())[0];
+ String queryString = (String) ((Object[]) msg.getBody())[0];
- Query query = new Query(new URL(uri));
- query.setFullTextQuery(strQuery);
- Feed feed = service.query(query, Feed.class);
- msg.setBody(feed);
-
- } catch (IOException ex) {
- msg.setFaultBody(new ServiceRuntimeException(ex));
- } catch (ServiceException ex) {
+ try {
+ // serviceType == "sca" - Send an HTTP GET
+ if (service == null) {
+ getMethod = new GetMethod(binding.getURI());
+ getMethod.setRequestHeader("Authorization", authorizationHeader);
+ getMethod.setQueryString(queryString);
+
+ httpClient.executeMethod(getMethod);
+ int status = getMethod.getStatusCode();
+
+ // Read the Atom feed
+ if (status == 200) {
+
+ parsing = true;
+
+ ParseSource parser = new ParseSource(getMethod.getResponseBodyAsStream());
+ feed = BaseFeed.readFeed(parser);
+
+ msg.setBody(feed);
+
+ } else if (status == 404) {
+ msg.setFaultBody(new NotFoundException());
+ } else {
+ msg.setFaultBody(new ServiceRuntimeException("HTTP status code: " + status));
+ }
+
+ } // serviceType != "sca" - Use GoogleService
+ else {
+ Query query = new Query(new URL(binding.getURI()));
+ query.setFullTextQuery(queryString);
+ feed = service.query(query, Feed.class);
+ msg.setBody(feed);
+ }
+ } catch (ResourceNotFoundException ex) {
+ msg.setFaultBody(new ResourceNotFoundException("Invalid Resource at " + binding.getURI()));
+ } catch (Exception ex) {
msg.setFaultBody(new ServiceRuntimeException(ex));
} finally {
+ if (service == null && !parsing) {
+ getMethod.releaseConnection();
+ }
return msg;
}
}
@@ -237,8 +477,8 @@
*/
public static class PostMediaInvoker extends GDataBindingInvoker {
- public PostMediaInvoker(Operation operation, String uri, GoogleService service) {
- super(operation, uri, service);
+ public PostMediaInvoker(Operation operation, GDataBinding binding, HttpClient httpClient, String authorizationHeader) {
+ super(operation, binding, httpClient, authorizationHeader);
}
@Override
@@ -253,8 +493,8 @@
*/
public static class PutMediaInvoker extends GDataBindingInvoker {
- public PutMediaInvoker(Operation operation, String uri, GoogleService service) {
- super(operation, uri, service);
+ public PutMediaInvoker(Operation operation, GDataBinding binding, HttpClient httpClient, String authorizationHeader) {
+ super(operation, binding, httpClient, authorizationHeader);
}
@Override
Modified: tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingProviderFactory.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingProviderFactory.java?rev=684281&r1=684280&r2=684281&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingProviderFactory.java (original)
+++ tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataBindingProviderFactory.java Sat Aug 9 08:56:52 2008
@@ -65,10 +65,7 @@
public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component,
RuntimeComponentService service,
GDataBinding binding) {
- //return new AtomServiceBindingProvider(component, service, binding, servletHost, messageFactory, mediator);
-
- //FIXME - To implement AtomServiceBindingProvider
- return null;
+ return new GDataServiceBindingProvider(component, service, binding, servletHost, messageFactory, mediator);
}
public Class<GDataBinding> getModelType() {
Modified: tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataReferenceBindingProvider.java?rev=684281&r1=684280&r2=684281&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataReferenceBindingProvider.java (original)
+++ tuscany/java/sca/modules/binding-gdata-runtime/src/main/java/org/apache/tuscany/sca/binding/gdata/provider/GDataReferenceBindingProvider.java Sat Aug 9 08:56:52 2008
@@ -18,8 +18,6 @@
*/
package org.apache.tuscany.sca.binding.gdata.provider;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import org.apache.tuscany.sca.binding.gdata.GDataBinding;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
@@ -28,9 +26,14 @@
import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-
-import com.google.gdata.client.GoogleService;
-import com.google.gdata.util.AuthenticationException;
+import org.apache.commons.httpclient.HttpClient;
+import java.net.URI;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
/**
* Implementation of the Atom binding provider.
@@ -41,7 +44,8 @@
private RuntimeComponentReference reference;
private GDataBinding binding;
- private GoogleService service;
+ private HttpClient httpClient;
+ private String authorizationHeader;
/**
* Constructs a new AtomReferenceBindingProvider
@@ -56,41 +60,42 @@
this.reference = reference;
this.binding = binding;
- //FIXME - Handling only calendar
- this.service = new GoogleService("cl", "");
-
- try {
- //FIXME - Get credentials automatically
- service.setUserCredentials("gsocstudent2008@gmail.com", "gsoc2008");
- } catch (AuthenticationException ex) {
- Logger.getLogger(GDataReferenceBindingProvider.class.getName()).log(Level.SEVERE, null, ex);
- }
+ // Prepare authorization header
+ //String authorization = "admin" + ":" + "admin";
+ String authorization = "gsocstudent2008" + ":" + "gsoc2008";
+ authorizationHeader = "Basic " + new String(Base64.encodeBase64(authorization.getBytes()));
- this.service.setConnectTimeout(60000);
+ // Create an HTTP client
+ HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
+ connectionManager.getParams().setDefaultMaxConnectionsPerHost(10);
+ connectionManager.getParams().setConnectionTimeout(60000);
+ httpClient = new HttpClient(connectionManager);
}
+
+
public Invoker createInvoker(Operation operation) {
String operationName = operation.getName();
if (operationName.equals("get")) {
- return new GDataBindingInvoker.GetInvoker(operation, binding.getURI(), service);
+ return new GDataBindingInvoker.GetInvoker(operation, binding, httpClient, authorizationHeader);
} else if (operationName.equals("post")) {
- return new GDataBindingInvoker.PostInvoker(operation, binding.getURI(), service);
+ return new GDataBindingInvoker.PostInvoker(operation, binding, httpClient, authorizationHeader);
} else if (operationName.equals("put")) {
- return new GDataBindingInvoker.PutInvoker(operation, binding.getURI(), service);
+ return new GDataBindingInvoker.PutInvoker(operation, binding, httpClient, authorizationHeader);
} else if (operationName.equals("delete")) {
- return new GDataBindingInvoker.DeleteInvoker(operation, binding.getURI(), service);
+ return new GDataBindingInvoker.DeleteInvoker(operation, binding, httpClient, authorizationHeader);
} else if (operationName.equals("getFeed") || operationName.equals("getAll")) {
- return new GDataBindingInvoker.GetAllInvoker(operation, binding.getURI(), service);
+ return new GDataBindingInvoker.GetAllInvoker(operation, binding, httpClient, authorizationHeader);
} else if (operationName.equals("postMedia")) {
- return new GDataBindingInvoker.PostMediaInvoker(operation, binding.getURI(), service);
+ return new GDataBindingInvoker.PostMediaInvoker(operation, binding, httpClient, authorizationHeader);
} else if (operationName.equals("putMedia")) {
- return new GDataBindingInvoker.PutMediaInvoker(operation, binding.getURI(), service);
+ return new GDataBindingInvoker.PutMediaInvoker(operation, binding, httpClient, authorizationHeader);
} else if (operationName.equals("query")) {
- return new GDataBindingInvoker.QueryInvoker(operation, binding.getURI(), service);
+ return new GDataBindingInvoker.QueryInvoker(operation, binding, httpClient, authorizationHeader);
}
- return new GDataBindingInvoker(operation, binding.getURI(), service);
+ return new GDataBindingInvoker(operation, binding, httpClient, authorizationHeader);
}
public InterfaceContract getBindingInterfaceContract() {
@@ -98,6 +103,17 @@
}
public void start() {
+ // Configure the HTTP client credentials
+ //Credentials credentials = new UsernamePasswordCredentials("admin", "admin");
+ Credentials credentials = new UsernamePasswordCredentials("gsocstudent2008", "gsoc2008");
+ httpClient.getParams().setAuthenticationPreemptive(true);
+ URI uri = URI.create(binding.getURI());
+ httpClient.getState().setCredentials(new AuthScope(uri.getHost(), uri.getPort()), credentials);
+
+ // Find the get operation on the reference interface
+ if (true) {
+ return;
+ }
}
public void stop() {
Modified: tuscany/java/sca/modules/binding-gdata-runtime/src/test/resources/org/apache/tuscany/sca/binding/gdata/Consumer.composite
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-gdata-runtime/src/test/resources/org/apache/tuscany/sca/binding/gdata/Consumer.composite?rev=684281&r1=684280&r2=684281&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-gdata-runtime/src/test/resources/org/apache/tuscany/sca/binding/gdata/Consumer.composite (original)
+++ tuscany/java/sca/modules/binding-gdata-runtime/src/test/resources/org/apache/tuscany/sca/binding/gdata/Consumer.composite Sat Aug 9 08:56:52 2008
@@ -23,9 +23,9 @@
name="Consumer">
<component name="CustomerClient">
- <implementation.java class="org.apache.tuscany.sca.binding.gdata.CustomerClientImpl"/>
+ <implementation.java class="org.apache.tuscany.sca.binding.gdata.consumerprovider.CustomerClientImpl"/>
<reference name="resourceCollection">
- <tuscany:binding.gdata uri="http://www.google.com/calendar/feeds/gsocstudent2008@gmail.com/private/full"/>
+ <tuscany:binding.gdata uri="http://localhost:8086/customer" username="gsocstudent2008" password="gsoc2008" serviceType="sca"/>
</reference>
</component>