You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2010/05/19 02:53:54 UTC

svn commit: r945980 [2/3] - in /tuscany/sca-java-2.x/trunk: distribution/all/ distribution/all/src/main/components/ distribution/all/src/main/release/bin/ features/web20/ itest/callback-basic-ws/src/main/resources/ itest/scdl/src/test/java/org/apache/t...

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java Wed May 19 00:53:52 2010
@@ -40,11 +40,11 @@ import com.meterware.httpunit.WebRespons
 public class CatalogServiceTestCase {
     private static final String SERVICE_URL = "http://localhost:8085/Catalog";
 
-    private static final String GET_RESPONSE = "[{\"price\":\"$1.55\",\"name\":\"Pear\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$2.99\",\"name\":\"Apple\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$3.55\",\"name\":\"Orange\",\"javaClass\":\"services.store.Item\"}]";
+    private static final String GET_RESPONSE = "{\"items\":[{\"price\":\"$1.55\",\"name\":\"Pear\"},{\"price\":\"$2.99\",\"name\":\"Apple\"},{\"price\":\"$3.55\",\"name\":\"Orange\"}]}";
     private static final String NEW_ITEM = "{\"price\":\"$4.35\",\"name\":\"Grape\"}\"";
-    private static final String GET_NEW_RESPONSE = "[{\"price\":\"$1.55\",\"name\":\"Pear\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$2.99\",\"name\":\"Apple\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$3.55\",\"name\":\"Orange\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$4.35\",\"name\":\"Grape\",\"javaClass\":\"services.store.Item\"}]";
+    private static final String GET_NEW_RESPONSE = "{\"items\":[{\"price\":\"$1.55\",\"name\":\"Pear\"},{\"price\":\"$2.99\",\"name\":\"Apple\"},{\"price\":\"$3.55\",\"name\":\"Orange\"},{\"price\":\"$4.35\",\"name\":\"Grape\"}]}";
     private static final String UPDATED_ITEM = "{\"price\":\"$1.35\",\"name\":\"Grape\"}\"";
-    private static final String GET_UPDATED_RESPONSE = "[{\"price\":\"$1.55\",\"name\":\"Pear\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$2.99\",\"name\":\"Apple\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$3.55\",\"name\":\"Orange\",\"javaClass\":\"services.store.Item\"},{\"price\":\"$1.35\",\"name\":\"Grape\",\"javaClass\":\"services.store.Item\"}]";    
+    private static final String GET_UPDATED_RESPONSE = "{\"items\":[{\"price\":\"$1.55\",\"name\":\"Pear\"},{\"price\":\"$2.99\",\"name\":\"Apple\"},{\"price\":\"$3.55\",\"name\":\"Orange\"},{\"price\":\"$1.35\",\"name\":\"Grape\"}]}";    
     
     private static Node node;
 
@@ -76,6 +76,7 @@ public class CatalogServiceTestCase {
     public void testGetInvocation() throws Exception {        
         WebConversation wc = new WebConversation();
         WebRequest request = new GetMethodWebRequest(SERVICE_URL);
+        request.setHeaderField("Content-Type", "application/json");
         WebResponse response = wc.getResource(request);
 
         Assert.assertEquals(200, response.getResponseCode());
@@ -88,12 +89,14 @@ public class CatalogServiceTestCase {
         //Add new item to catalog
         WebConversation wc = new WebConversation();
         WebRequest request   = new PostMethodWebRequest(SERVICE_URL, new ByteArrayInputStream(NEW_ITEM.getBytes("UTF-8")),"application/json");
+        request.setHeaderField("Content-Type", "application/json");
         WebResponse response = wc.getResource(request);
 
-        Assert.assertEquals(200, response.getResponseCode());
+        Assert.assertEquals(204, response.getResponseCode());
         
         //read new results and expect to get new item back in the response
         request = new GetMethodWebRequest(SERVICE_URL);
+        request.setHeaderField("Content-Type", "application/json");
         response = wc.getResource(request);
         
         //for debug purposes
@@ -109,12 +112,14 @@ public class CatalogServiceTestCase {
         //Add new item to catalog
         WebConversation wc = new WebConversation();
         WebRequest request   = new PostMethodWebRequest(SERVICE_URL, new ByteArrayInputStream(UPDATED_ITEM.getBytes("UTF-8")),"application/json");
+        request.setHeaderField("Content-Type", "application/json");
         WebResponse response = wc.getResource(request);
 
-        Assert.assertEquals(200, response.getResponseCode());
+        Assert.assertEquals(204, response.getResponseCode());
         
         //read new results and expect to get new item back in the response
         request = new GetMethodWebRequest(SERVICE_URL);
+        request.setHeaderField("Content-Type", "application/json");
         response = wc.getResource(request);
         
         //for debug purposes

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/CustomerServiceTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/CustomerServiceTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/CustomerServiceTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/CustomerServiceTestCase.java Wed May 19 00:53:52 2010
@@ -29,6 +29,7 @@ import org.apache.tuscany.sca.node.NodeF
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import com.meterware.httpunit.GetMethodWebRequest;
@@ -40,9 +41,9 @@ import com.meterware.httpunit.WebRespons
 public class CustomerServiceTestCase {
     private static final String SERVICE_URL = "http://localhost:8085/Customer";
 
-    private static final String GET_RESPONSE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Customer xmlns:ns2=\"http://customer.services/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"customer\"><email>john@domain.com</email><id>John</id><name>John</name></Customer>";
+    private static final String GET_RESPONSE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Customer xmlns:ns2=\"http://tuscany.apache.org/xmlns/sca/databinding/jaxb/1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"customer\"><email>john@domain.com</email><id>John</id><name>John</name></Customer>";
     private static final String UPDATED_ITEM = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Customer xmlns:ns2=\"http://customer.services/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"customer\"><email>john@updated-domain.com</email><id>John</id><name>John</name></Customer>";
-    private static final String GET_UPDATED_RESPONSE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Customer xmlns:ns2=\"http://customer.services/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"customer\"><email>john@updated-domain.com</email><id>John</id><name>John</name></Customer>";    
+    private static final String GET_UPDATED_RESPONSE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Customer xmlns:ns2=\"http://tuscany.apache.org/xmlns/sca/databinding/jaxb/1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"customer\"><email>john@updated-domain.com</email><id>John</id><name>John</name></Customer>";    
     
     private static Node node;
 
@@ -71,9 +72,11 @@ public class CustomerServiceTestCase {
     }
     
     @Test
+    @Ignore
     public void testGetInvocation() throws Exception {        
         WebConversation wc = new WebConversation();
         WebRequest request = new GetMethodWebRequest(SERVICE_URL);
+        request.setHeaderField("Content-Type", "application/xml");
         WebResponse response = wc.getResource(request);
 
         //for debug purposes
@@ -99,12 +102,14 @@ public class CustomerServiceTestCase {
         //Add new item to catalog
         WebConversation wc = new WebConversation();
         WebRequest request   = new PostMethodWebRequest(SERVICE_URL, new ByteArrayInputStream(UPDATED_ITEM.getBytes("UTF-8")),"application/json");
+        request.setHeaderField("Content-Type", "application/xml");
         WebResponse response = wc.getResource(request);
 
-        Assert.assertEquals(200, response.getResponseCode());
+        Assert.assertEquals(204, response.getResponseCode());
         
         //read new results and expect to get new item back in the response
         request = new GetMethodWebRequest(SERVICE_URL);
+        request.setHeaderField("Content-Type", "application/xml");
         response = wc.getResource(request);
         
         //for debug purposes

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Catalog.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Catalog.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Catalog.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Catalog.java Wed May 19 00:53:52 2010
@@ -33,7 +33,7 @@ import org.oasisopen.sca.annotation.Remo
 public interface Catalog {
     
     @GET
-    Item[] getItem();
+    Items getItem();
     
     @GET
     @Path("{id}")

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java Wed May 19 00:53:52 2010
@@ -19,6 +19,7 @@
 
 package services.store;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -46,10 +47,10 @@ public class FruitsCatalogImpl implement
         catalog.put("Pear", new Item("Pear", currencySymbol + currencyConverter.getConversion("USD", currencyCode, 1.55)));
     }
 
-    public Item[] getItem() {
-        Item[] catalogArray = new Item[catalog.size()];
-        catalog.values().toArray(catalogArray);
-        return catalogArray;
+    public Items getItem() {
+        Items items = new Items();
+        items.setItems(new ArrayList<Item>(catalog.values()));
+        return items;
     }
     
     public Item getItemById(String itemId) {

Copied: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Items.java (from r945979, tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java)
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Items.java?p2=tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Items.java&p1=tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java&r1=945979&r2=945980&rev=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Items.java Wed May 19 00:53:52 2010
@@ -17,34 +17,21 @@
  * under the License.    
  */
 
-package org.apache.tuscany.sca.interfacedef.java.jaxrs;
+package services.store;
 
-import javax.ws.rs.Path;
+import java.util.List;
 
+/**
+ * 
+ */
+public class Items {
+    private List<Item> items;
 
-@Path("myURI")
-public class ResourceWrapper implements Resource {
-    public static Resource delegate;
-
-    public ResourceWrapper() {
-        super();
-    }
-
-
-    public String get() {
-        return delegate.get();
-    }
-
-    public void create(String value) {
-        delegate.create(value);
-    }
-
-    public void delete() {
-        delegate.delete();
+    public List<Item> getItems() {
+        return items;
     }
 
-    public void update(String value) {
-        delegate.update(value);
+    public void setItems(List<Item> items) {
+        this.items = items;
     }
-
 }

Modified: tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointReferenceBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointReferenceBuilderImpl.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointReferenceBuilderImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointReferenceBuilderImpl.java Wed May 19 00:53:52 2010
@@ -315,11 +315,11 @@ public class EndpointReferenceBuilderImp
                             endpointRef.setStatus(EndpointReference.Status.RESOLVED_BINDING);
                         }
                         
-                        if (reference.getCallbackService() != null) {
-                            Endpoint callbackEndpoint =
-                                createEndpoint(component, reference.getCallbackService(), false);
-                            endpointRef.setCallbackEndpoint(callbackEndpoint);
-                        }
+//                        if (reference.getCallbackService() != null) {
+//                            Endpoint callbackEndpoint =
+//                                createEndpoint(component, reference.getCallbackService(), false);
+//                            endpointRef.setCallbackEndpoint(callbackEndpoint);
+//                        }
                         
                         reference.getEndpointReferences().add(endpointRef);
                         continue;
@@ -352,11 +352,11 @@ public class EndpointReferenceBuilderImp
                     }
                     
                     endpointRef.setTargetEndpoint(endpoint);   
-                    if (reference.getCallbackService() != null) {
-                        Endpoint callbackEndpoint =
-                            createEndpoint(component, reference.getCallbackService(), false);
-                        endpointRef.setCallbackEndpoint(callbackEndpoint);
-                    }
+//                    if (reference.getCallbackService() != null) {
+//                        Endpoint callbackEndpoint =
+//                            createEndpoint(component, reference.getCallbackService(), false);
+//                        endpointRef.setCallbackEndpoint(callbackEndpoint);
+//                    }
                     reference.getEndpointReferences().add(endpointRef);
                 }
             }

Modified: tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSONHelper.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSONHelper.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSONHelper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSONHelper.java Wed May 19 00:53:52 2010
@@ -19,11 +19,14 @@
 
 package org.apache.tuscany.sca.databinding.json;
 
+import java.util.Collection;
+
 import org.apache.tuscany.sca.databinding.json.jackson.JacksonHelper;
 import org.codehaus.jackson.JsonNode;
 import org.codehaus.jackson.JsonParser;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
+import org.json.JSONArray;
 
 /**
  * @version $Rev$ $Date$
@@ -79,19 +82,22 @@ public class JSONHelper {
         return json;
     }
 
-    public static <T> T toJSON(String json, Class<T> type) {
+    public static Object toJSON(String json, Class<?> type) {
         if (type == JSONObject.class) {
             try {
-                return type.cast(new JSONObject(json));
+                return new JSONObject(json);
             } catch (JSONException e) {
                 throw new IllegalArgumentException(e);
             }
         } else {
             if (type == null) {
-                type = (Class<T>)org.json.JSONObject.class;
+                type = org.json.JSONObject.class;
             }
             try {
-                return type.cast(new org.json.JSONObject(json));
+                if (type == JSONArray.class || type.isArray() || Collection.class.isAssignableFrom(type)) {
+                    return new JSONArray(json);
+                }
+                return new org.json.JSONObject(json);
             } catch (org.json.JSONException e) {
                 throw new IllegalArgumentException(e);
             }

Copied: tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/InputStream2JSON.java (from r945979, tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java)
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/InputStream2JSON.java?p2=tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/InputStream2JSON.java&p1=tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java&r1=945979&r2=945980&rev=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/test/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/ResourceWrapper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/InputStream2JSON.java Wed May 19 00:53:52 2010
@@ -17,34 +17,33 @@
  * under the License.    
  */
 
-package org.apache.tuscany.sca.interfacedef.java.jaxrs;
+package org.apache.tuscany.sca.databinding.json.jackson;
 
-import javax.ws.rs.Path;
+import java.io.InputStream;
 
+import org.apache.tuscany.sca.databinding.PullTransformer;
+import org.apache.tuscany.sca.databinding.TransformationContext;
+import org.apache.tuscany.sca.databinding.json.JSONDataBinding;
 
-@Path("myURI")
-public class ResourceWrapper implements Resource {
-    public static Resource delegate;
-
-    public ResourceWrapper() {
-        super();
-    }
-
+/**
+ * 
+ */
+public class InputStream2JSON implements PullTransformer<InputStream, Object> {
 
-    public String get() {
-        return delegate.get();
+    public String getSourceDataBinding() {
+        return "application/json" + "#" + InputStream.class.getName();
     }
 
-    public void create(String value) {
-        delegate.create(value);
+    public String getTargetDataBinding() {
+        return JSONDataBinding.NAME;
     }
 
-    public void delete() {
-        delegate.delete();
+    public int getWeight() {
+        return 10;
     }
 
-    public void update(String value) {
-        delegate.update(value);
+    public Object transform(InputStream source, TransformationContext context) {
+        return JacksonHelper.createJsonParser(source);
     }
 
 }

Modified: tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2Object.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2Object.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2Object.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2Object.java Wed May 19 00:53:52 2010
@@ -54,8 +54,9 @@ public class JSON2Object implements Pull
                 return mapper.treeToValue((JsonNode)source, context.getTargetDataType().getPhysical());
             } else if (source instanceof JsonParser) {
                 return mapper.readValue((JsonParser)source, javaType);
+            } else {
+                return mapper.readValue(source.toString(), javaType);
             }
-            return null;
         } catch (Exception e) {
             throw new TransformationException(e);
         }

Copied: tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2OutputStream.java (from r945979, tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2Object.java)
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2OutputStream.java?p2=tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2OutputStream.java&p1=tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2Object.java&r1=945979&r2=945980&rev=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2Object.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JSON2OutputStream.java Wed May 19 00:53:52 2010
@@ -19,57 +19,47 @@
 
 package org.apache.tuscany.sca.databinding.json.jackson;
 
-import org.apache.tuscany.sca.databinding.PullTransformer;
+import java.io.OutputStream;
+
+import org.apache.tuscany.sca.databinding.PushTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.TransformationException;
-import org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding;
 import org.apache.tuscany.sca.databinding.json.JSONDataBinding;
 import org.codehaus.jackson.JsonNode;
 import org.codehaus.jackson.JsonParser;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.type.TypeFactory;
-import org.codehaus.jackson.type.JavaType;
 
 /**
- * @version $Rev$ $Date$
+ * 
  */
-public class JSON2Object implements PullTransformer<Object, Object> {
-    private ObjectMapper mapper;
+public class JSON2OutputStream implements PushTransformer<Object, OutputStream> {
+
+    public String getSourceDataBinding() {
+        return JSONDataBinding.NAME;
+    }
 
-    public JSON2Object() {
-        super();
-        mapper = JacksonHelper.createObjectMapper();
+    public String getTargetDataBinding() {
+        return "application/json" + "#" + OutputStream.class.getName();
     }
 
-    public Object transform(Object source, TransformationContext context) {
+    public void transform(Object source, OutputStream sink, TransformationContext context) {
         if (source == null) {
-            return null;
+            return;
         }
-
-        try {
-            JavaType javaType = TypeFactory.type(context.getTargetDataType().getGenericType());
-            if (source instanceof String) {
-                return mapper.readValue((String)source, javaType);
-            } else if (source instanceof JsonNode) {
-                return mapper.treeToValue((JsonNode)source, context.getTargetDataType().getPhysical());
-            } else if (source instanceof JsonParser) {
-                return mapper.readValue((JsonParser)source, javaType);
+        if (source instanceof JsonNode) {
+            JacksonHelper.write((JsonNode)source, sink);
+        } else if (source instanceof JsonParser) {
+            JacksonHelper.write((JsonParser)source, sink);
+        } else {
+            try {
+                sink.write(source.toString().getBytes("UTF-8"));
+            } catch (Exception e) {
+                throw new TransformationException(e);
             }
-            return null;
-        } catch (Exception e) {
-            throw new TransformationException(e);
         }
     }
 
-    public String getSourceDataBinding() {
-        return JSONDataBinding.NAME;
-    }
-
-    public String getTargetDataBinding() {
-        return JavaBeansDataBinding.NAME;
-    }
-
     public int getWeight() {
-        return 5000;
+        return 50;
     }
+
 }

Modified: tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JacksonHelper.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JacksonHelper.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JacksonHelper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/jackson/JacksonHelper.java Wed May 19 00:53:52 2010
@@ -20,13 +20,18 @@
 package org.apache.tuscany.sca.databinding.json.jackson;
 
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
 import java.io.StringWriter;
 
+import org.codehaus.jackson.JsonEncoding;
 import org.codehaus.jackson.JsonFactory;
 import org.codehaus.jackson.JsonGenerator;
 import org.codehaus.jackson.JsonNode;
 import org.codehaus.jackson.JsonParser;
 import org.codehaus.jackson.map.AnnotationIntrospector;
+import org.codehaus.jackson.map.DeserializationConfig;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
 import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
@@ -41,6 +46,8 @@ public class JacksonHelper {
         AnnotationIntrospector secondary = new JacksonAnnotationIntrospector();
         AnnotationIntrospector pair = new AnnotationIntrospector.Pair(primary, secondary);
         mapper.getDeserializationConfig().setAnnotationIntrospector(pair);
+        // [rfeng] To avoid complaints about javaClass
+        mapper.getDeserializationConfig().set(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
         mapper.getSerializationConfig().setAnnotationIntrospector(pair);
         return mapper;
     }
@@ -79,4 +86,43 @@ public class JacksonHelper {
         }
     }
 
+    public static JsonParser createJsonParser(InputStream content) {
+        JsonFactory jsonFactory = new JsonFactory();
+        try {
+            return jsonFactory.createJsonParser(content);
+        } catch (IOException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+    
+    public static JsonParser createJsonParser(Reader content) {
+        JsonFactory jsonFactory = new JsonFactory();
+        try {
+            return jsonFactory.createJsonParser(content);
+        } catch (IOException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }  
+
+    public static void write(JsonNode node, OutputStream out) {
+        try {
+            JsonFactory jsonFactory = new JsonFactory();
+            JsonGenerator generator = jsonFactory.createJsonGenerator(out, JsonEncoding.UTF8);
+            generator.writeTree(node);
+        } catch (IOException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
+    public static void write(JsonParser parser, OutputStream out) {
+        try {
+            JsonFactory jsonFactory = new JsonFactory();
+            JsonGenerator generator = jsonFactory.createJsonGenerator(out, JsonEncoding.UTF8);
+            JsonNode node = parser.readValueAs(JsonNode.class);
+            generator.writeTree(node);
+        } catch (IOException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+    
 }

Modified: tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer Wed May 19 00:53:52 2010
@@ -18,15 +18,17 @@
 # Implementation classes for the transformers
 org.apache.tuscany.sca.databinding.json.JSON2XMLStreamReader;source=JSON,target=javax.xml.stream.XMLStreamReader,weight=5000
 org.apache.tuscany.sca.databinding.json.XMLStreamReader2JSON;source=javax.xml.stream.XMLStreamReader,target=JSON,weight=5000,public=false
-org.apache.tuscany.sca.databinding.json.JavaBean2JSON;source=java:complexType,target=JSON,weight=80000,public=false
-org.apache.tuscany.sca.databinding.json.JavaBean2JSON;source=java:simpleType,target=JSON,weight=80000,public=false
+org.apache.tuscany.sca.databinding.json.jackson.Object2JSON;source=java:complexType,target=JSON,weight=90000,public=true
+org.apache.tuscany.sca.databinding.json.jackson.Object2JSON;source=java:simpleType,target=JSON,weight=90000,public=false
 org.apache.tuscany.sca.databinding.json.axiom.JSON2OMElement;source=JSON,target=org.apache.axiom.om.OMElement,weight=500
-org.apache.tuscany.sca.databinding.json.JavaBean2JSON;source=java:array,target=JSON,weight=80000,public=false
-org.apache.tuscany.sca.databinding.json.JavaBean2JSON;source=commonj.sdo.DataObject,target=JSON,weight=80000,public=false
-org.apache.tuscany.sca.databinding.json.JavaBean2JSON;source=javax.xml.bind.JAXBElement,target=JSON,weight=80000,public=false
-org.apache.tuscany.sca.databinding.json.JSON2JavaBean;source=JSON,target=java:complexType,weight=80000,public=false
-org.apache.tuscany.sca.databinding.json.JSON2JavaBean;source=JSON,target=java:simpleType,weight=80000,public=false
-org.apache.tuscany.sca.databinding.json.JSON2JavaBean;source=JSON,target=commonj.sdo.DataObject,weight=80000,public=false
-org.apache.tuscany.sca.databinding.json.JSON2JavaBean;source=JSON,target=javax.xml.bind.JAXBElement,weight=80000,public=false
-org.apache.tuscany.sca.databinding.json.JSON2JavaBean;source=JSON,target=java:array,weight=80000,public=false
+org.apache.tuscany.sca.databinding.json.jackson.Object2JSON;source=java:array,target=JSON,weight=90000,public=false
+org.apache.tuscany.sca.databinding.json.jackson.Object2JSON;source=commonj.sdo.DataObject,target=JSON,weight=90000,public=false
+org.apache.tuscany.sca.databinding.json.jackson.Object2JSON;source=javax.xml.bind.JAXBElement,target=JSON,weight=90000,public=false
+org.apache.tuscany.sca.databinding.json.jackson.JSON2Object;source=JSON,target=java:complexType,weight=90000,public=false
+org.apache.tuscany.sca.databinding.json.jackson.JSON2Object;source=JSON,target=java:simpleType,weight=90000,public=false
+org.apache.tuscany.sca.databinding.json.jackson.JSON2Object;source=JSON,target=commonj.sdo.DataObject,weight=90000,public=false
+org.apache.tuscany.sca.databinding.json.jackson.JSON2Object;source=JSON,target=javax.xml.bind.JAXBElement,weight=90000,public=false
+org.apache.tuscany.sca.databinding.json.jackson.JSON2Object;source=JSON,target=java:array,weight=90000,public=false
+
+org.apache.tuscany.sca.databinding.json.jackson.InputStream2JSON;source=application/json#java.io.InputStream;target=JSON,weight=50,public=true
 

Added: tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PushTransformer
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PushTransformer?rev=945980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PushTransformer (added)
+++ tuscany/sca-java-2.x/trunk/modules/databinding-json/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PushTransformer Wed May 19 00:53:52 2010
@@ -0,0 +1,34 @@
+# 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.
+org.apache.tuscany.sca.databinding.json.jackson.JSON2OutputStream;source=JSON;target=application/json#java.io.OutputStream,weight=50,public=true
+# 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.
+org.apache.tuscany.sca.databinding.json.jackson.JSON2OutputStream;source=JSON;target=application/json#java.io.OutputStream,weight=50,public=true
\ No newline at end of file

Modified: tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/DataObject2XMLStreamReaderTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/DataObject2XMLStreamReaderTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/DataObject2XMLStreamReaderTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/DataObject2XMLStreamReaderTestCase.java Wed May 19 00:53:52 2010
@@ -68,7 +68,7 @@ public class DataObject2XMLStreamReaderT
         XMLStreamReader2Node t2 = new XMLStreamReader2Node(new DefaultExtensionPointRegistry());
         org.w3c.dom.Node node = t2.transform(reader, context);
         assertNotNull(node);
-        Node2String t3 = new Node2String();
+        Node2String t3 = new Node2String(new DefaultExtensionPointRegistry());
         String xml = t3.transform(node, context);
         assertTrue(xml.contains("xmlns:xsi"));
     }

Added: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBindingContext.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBindingContext.java?rev=945980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBindingContext.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBindingContext.java Wed May 19 00:53:52 2010
@@ -0,0 +1,95 @@
+/*
+ * 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.databinding;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+
+import org.apache.tuscany.sca.interfacedef.Operation;
+
+/**
+ * The context for databinding processing
+ */
+public class DataBindingContext {
+
+    private String contentType;
+    private Class<?> type;
+    private Type genericType;
+    private Annotation[] annotations;
+    private Operation operation;
+
+    public DataBindingContext(Class<?> type,
+                              Type genericType,
+                              Annotation[] annotations,
+                              Operation operation,
+                              String contentType) {
+        super();
+        this.type = type;
+        this.genericType = genericType;
+        this.annotations = annotations;
+        this.operation = operation;
+        this.contentType = contentType;
+    }
+
+    public DataBindingContext(Class<?> type, Type genericType, Annotation[] annotations) {
+        super();
+        this.type = type;
+        this.genericType = genericType;
+        this.annotations = annotations;
+    }
+
+    public DataBindingContext(Class<?> type) {
+        super();
+        this.type = type;
+        this.genericType = type;
+    }
+    
+    public Class<?> getType() {
+        return type;
+    }
+
+    public Type getGenericType() {
+        return genericType;
+    }
+
+    public Annotation[] getAnnotations() {
+        return annotations;
+    }
+
+    public Operation getOperation() {
+        return operation;
+    }
+
+    public <A extends Annotation> A getAnnotation(Class<A> type) {
+        if (annotations == null) {
+            return null;
+        }
+        for (Annotation a : annotations) {
+            if (a.annotationType() == type) {
+                return type.cast(a);
+            }
+        }
+        return null;
+    }
+
+    public String getContentType() {
+        return contentType;
+    }
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBindingContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DataBindingContext.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/InputSource2Node.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/InputSource2Node.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/InputSource2Node.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/InputSource2Node.java Wed May 19 00:53:52 2010
@@ -22,6 +22,7 @@ import javax.xml.transform.Source;
 import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.stream.StreamSource;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.BaseTransformer;
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
@@ -36,8 +37,14 @@ import org.xml.sax.InputSource;
  */
 public class InputSource2Node extends BaseTransformer<InputSource, Node> implements
     PullTransformer<InputSource, Node> {
-    private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
-
+    
+    private final Source2ResultTransformer TRANSFORMER;
+    
+    public InputSource2Node(ExtensionPointRegistry registry) {
+        super();
+        this.TRANSFORMER = new Source2ResultTransformer(registry);
+    }
+    
     public Node transform(InputSource source, TransformationContext context) {
         try {
             Source streamSource = new StreamSource(source.getCharacterStream());

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/InputStream2Node.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/InputStream2Node.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/InputStream2Node.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/InputStream2Node.java Wed May 19 00:53:52 2010
@@ -24,6 +24,7 @@ import javax.xml.transform.Source;
 import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.sax.SAXSource;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.BaseTransformer;
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
@@ -38,8 +39,14 @@ import org.xml.sax.InputSource;
  */
 public class InputStream2Node extends BaseTransformer<InputStream, Node> implements
     PullTransformer<InputStream, Node> {
-    private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
+    private final Source2ResultTransformer TRANSFORMER;
+    
+    public InputStream2Node(ExtensionPointRegistry registry) {
+        super();
+        this.TRANSFORMER = new Source2ResultTransformer(registry);
+    }
 
+    
     public Node transform(InputStream source, TransformationContext context) {
         try {
             Source streamSource = new SAXSource(new InputSource(source));

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2OutputStream.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2OutputStream.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2OutputStream.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2OutputStream.java Wed May 19 00:53:52 2010
@@ -25,6 +25,7 @@ import javax.xml.transform.Source;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.BaseTransformer;
 import org.apache.tuscany.sca.databinding.PushTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
@@ -38,8 +39,14 @@ import org.w3c.dom.Node;
  */
 public class Node2OutputStream extends BaseTransformer<Node, OutputStream> implements
     PushTransformer<Node, OutputStream> {
-    private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
 
+    private final Source2ResultTransformer TRANSFORMER;
+    
+    public Node2OutputStream(ExtensionPointRegistry registry) {
+        super();
+        this.TRANSFORMER = new Source2ResultTransformer(registry);
+    }
+    
     public void transform(Node source, OutputStream writer, TransformationContext context) {
         try {
             Source domSource = new DOMSource(source);

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2String.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2String.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2String.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2String.java Wed May 19 00:53:52 2010
@@ -20,6 +20,7 @@ package org.apache.tuscany.sca.databindi
 
 import java.io.StringWriter;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.BaseTransformer;
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
@@ -32,8 +33,13 @@ import org.w3c.dom.Node;
  * @version $Rev$ $Date$
  */
 public class Node2String extends BaseTransformer<Node, String> implements PullTransformer<Node, String> {
-    private static final Node2Writer TRANSFORMER = new Node2Writer();
-
+    private final Node2Writer TRANSFORMER;
+    
+    public Node2String(ExtensionPointRegistry registry) {
+        super();
+        this.TRANSFORMER = new Node2Writer(registry);
+    }
+    
     public String transform(Node source, TransformationContext context) {
         try {
             StringWriter writer = new StringWriter();

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2Writer.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2Writer.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2Writer.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Node2Writer.java Wed May 19 00:53:52 2010
@@ -25,6 +25,7 @@ import javax.xml.transform.Source;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.BaseTransformer;
 import org.apache.tuscany.sca.databinding.PushTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
@@ -37,8 +38,14 @@ import org.w3c.dom.Node;
  * @version $Rev$ $Date$
  */
 public class Node2Writer extends BaseTransformer<Node, Writer> implements PushTransformer<Node, Writer> {
-    private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
 
+    private final Source2ResultTransformer TRANSFORMER;
+    
+    public Node2Writer(ExtensionPointRegistry registry) {
+        super();
+        this.TRANSFORMER = new Source2ResultTransformer(registry);
+    }
+    
     public void transform(Node source, Writer writer, TransformationContext context) {
         try {
             Source domSource = new DOMSource(source);

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Reader2Node.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Reader2Node.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Reader2Node.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Reader2Node.java Wed May 19 00:53:52 2010
@@ -24,6 +24,7 @@ import javax.xml.transform.Source;
 import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.stream.StreamSource;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.BaseTransformer;
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
@@ -36,8 +37,13 @@ import org.w3c.dom.Node;
  * @version $Rev$ $Date$
  */
 public class Reader2Node extends BaseTransformer<Reader, Node> implements PullTransformer<Reader, Node> {
-    private static final Source2ResultTransformer TRANSFORMER = new Source2ResultTransformer();
-
+    private final Source2ResultTransformer TRANSFORMER;
+    
+    public Reader2Node(ExtensionPointRegistry registry) {
+        super();
+        this.TRANSFORMER = new Source2ResultTransformer(registry);
+    }
+    
     public Node transform(Reader source, TransformationContext context) {
         try {
             Source streamSource = new StreamSource(source);

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2ResultTransformer.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2ResultTransformer.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2ResultTransformer.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2ResultTransformer.java Wed May 19 00:53:52 2010
@@ -22,6 +22,8 @@ import javax.xml.transform.Result;
 import javax.xml.transform.Source;
 import javax.xml.transform.TransformerFactory;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.databinding.BaseTransformer;
 import org.apache.tuscany.sca.databinding.PushTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
@@ -34,11 +36,17 @@ import org.apache.tuscany.sca.databindin
  */
 public class Source2ResultTransformer extends BaseTransformer<Source, Result> implements
     PushTransformer<Source, Result> {
-    private static final TransformerFactory FACTORY = TransformerFactory.newInstance();
+    private final TransformerFactory factory;
 
+    public Source2ResultTransformer(ExtensionPointRegistry registry) {
+        super();
+        FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        factory = factories.getFactory(TransformerFactory.class);
+    }
+    
     public void transform(Source source, Result result, TransformationContext context) {
         try {
-            javax.xml.transform.Transformer transformer = FACTORY.newTransformer();
+            javax.xml.transform.Transformer transformer = factory.newTransformer();
             transformer.transform(source, result);
         } catch (Exception e) {
             throw new TransformationException(e);

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2StringTransformer.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2StringTransformer.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2StringTransformer.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2StringTransformer.java Wed May 19 00:53:52 2010
@@ -24,6 +24,8 @@ import javax.xml.transform.Source;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.stream.StreamResult;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.databinding.BaseTransformer;
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
@@ -36,11 +38,17 @@ import org.apache.tuscany.sca.databindin
  */
 public class Source2StringTransformer extends BaseTransformer<Source, String> implements
     PullTransformer<Source, String> {
-    private static final TransformerFactory FACTORY = TransformerFactory.newInstance();
+    private final TransformerFactory factory;
 
+    public Source2StringTransformer(ExtensionPointRegistry registry) {
+        super();
+        FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        factory = factories.getFactory(TransformerFactory.class);
+    }
+    
     public String transform(Source source, TransformationContext context) {
         try {
-            javax.xml.transform.Transformer transformer = FACTORY.newTransformer();
+            javax.xml.transform.Transformer transformer = factory.newTransformer();
             StringWriter sw = new StringWriter();
             StreamResult result = new StreamResult(sw);
             transformer.transform(source, result);

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/MediatorImplTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/MediatorImplTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/MediatorImplTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/MediatorImplTestCase.java Wed May 19 00:53:52 2010
@@ -87,8 +87,8 @@ public class MediatorImplTestCase {
 
         registry.addTransformer(new String2SAX(), true);
         registry.addTransformer(new SAX2DOMPipe(extensionPointRegistry), true);
-        registry.addTransformer(new Node2String(), true);
-        registry.addTransformer(new Node2Writer(), true);
+        registry.addTransformer(new Node2String(extensionPointRegistry), true);
+        registry.addTransformer(new Node2Writer(extensionPointRegistry), true);
 
         mediator = new MediatorImpl(dataBindingRegistry, registry);
     }

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DataPipeTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DataPipeTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DataPipeTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DataPipeTestCase.java Wed May 19 00:53:52 2010
@@ -27,6 +27,7 @@ import java.io.Writer;
 
 import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
 import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.DataPipe;
 import org.apache.tuscany.sca.databinding.DataPipeTransformer;
 import org.apache.tuscany.sca.databinding.impl.PipedTransformer;
@@ -76,11 +77,12 @@ public class DataPipeTestCase {
 
     @Test
     public final void testPiped() throws Exception {
-        Node2Writer node2Writer = new Node2Writer();
+        ExtensionPointRegistry registry = new DefaultExtensionPointRegistry();
+        Node2Writer node2Writer = new Node2Writer(registry);
         Writer2ReaderDataPipe pipe = new Writer2ReaderDataPipe();
         PipedTransformer<Node, Writer, Reader> transformer =
             new PipedTransformer<Node, Writer, Reader>(node2Writer, pipe);
-        Document document = DOMHelper.getInstance(new DefaultExtensionPointRegistry()).newDocument();
+        Document document = DOMHelper.getInstance(registry).newDocument();
         Element element = document.createElementNS("http://ns1", "root");
         document.appendChild(element);
         Reader reader = transformer.transform(document, null);

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/Node2StringTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/Node2StringTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/Node2StringTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/Node2StringTestCase.java Wed May 19 00:53:52 2010
@@ -20,6 +20,7 @@ package org.apache.tuscany.sca.databindi
 
 import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
 import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.junit.Test;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -32,10 +33,11 @@ public class Node2StringTestCase {
     
     @Test
     public void testTransformation() throws Exception {
-        Document document = DOMHelper.getInstance(new DefaultExtensionPointRegistry()).newDocument();
+        ExtensionPointRegistry registry = new DefaultExtensionPointRegistry();
+        Document document = DOMHelper.getInstance(registry).newDocument();
         Element element = document.createElementNS("http://ns1", "test");
         document.appendChild(element);
 
-        new Node2String().transform(document, null);
+        new Node2String(registry).transform(document, null);
     }
 }

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/PushTransformationTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/PushTransformationTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/PushTransformationTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/PushTransformationTestCase.java Wed May 19 00:53:52 2010
@@ -73,7 +73,7 @@ public class PushTransformationTestCase 
             new PipedTransformer<XMLStreamReader, ContentHandler, Node>(t2, new SAX2DOMPipe(registry));
         Node node = t3.transform(reader, null);
         Assert.assertNotNull(node);
-        Node2String t4 = new Node2String();
+        Node2String t4 = new Node2String(registry);
         String xml = t4.transform(node, null);
         Assert.assertTrue(xml != null && xml.indexOf("<shipDate>1999-12-05</shipDate>") != -1);
     }

Modified: tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/TraxTransformerTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/TraxTransformerTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/TraxTransformerTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/TraxTransformerTestCase.java Wed May 19 00:53:52 2010
@@ -28,6 +28,8 @@ import java.io.StringWriter;
 import java.io.Writer;
 import java.net.URL;
 
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.junit.Before;
 import org.junit.Test;
 import org.w3c.dom.Node;
@@ -50,22 +52,23 @@ public class TraxTransformerTestCase {
 
     @Test
     public void testTransformDOM() throws IOException {
+        ExtensionPointRegistry registry = new DefaultExtensionPointRegistry();
         InputStream is = url.openStream();
-        InputStream2Node t1 = new InputStream2Node();
+        InputStream2Node t1 = new InputStream2Node(registry);
         Node node = t1.transform(is, null);
         is.close();
         Writer writer = new StringWriter();
-        Node2Writer t2 = new Node2Writer();
+        Node2Writer t2 = new Node2Writer(registry);
         t2.transform(node, writer, null);
         String str = writer.toString();
         StringReader reader = new StringReader(str);
-        Reader2Node t3 = new Reader2Node();
+        Reader2Node t3 = new Reader2Node(registry);
         node = t3.transform(reader, null);
         ByteArrayOutputStream os = new ByteArrayOutputStream();
-        Node2OutputStream t4 = new Node2OutputStream();
+        Node2OutputStream t4 = new Node2OutputStream(registry);
         t4.transform(node, os, null);
         InputSource inputSource = new InputSource(new ByteArrayInputStream(os.toByteArray()));
-        InputSource2Node t5 = new InputSource2Node();
+        InputSource2Node t5 = new InputSource2Node(registry);
         node = t5.transform(inputSource, null);
     }
 

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/META-INF/MANIFEST.MF?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/META-INF/MANIFEST.MF Wed May 19 00:53:52 2010
@@ -9,12 +9,12 @@ Bundle-Description: Apache Tuscany SCA I
 Bundle-SymbolicName: org.apache.tuscany.sca.implementation.jaxrs.provider
 Bundle-DocURL: http://www.apache.org/
 Import-Package: javax.servlet,
+ javax.servlet.http,
  javax.ws.rs,
  javax.ws.rs.core,
- org.apache.wink.server.internal.servlet,
- org.apache.wink.server.utils,
  org.apache.tuscany.sca.assembly;version="2.0.0",
  org.apache.tuscany.sca.core;version="2.0.0",
+ org.apache.tuscany.sca.core.invocation;version="2.0.0",
  org.apache.tuscany.sca.host.http;version="2.0.0",
  org.apache.tuscany.sca.implementation.jaxrs;version="2.0.0",
  org.apache.tuscany.sca.interfacedef;version="2.0.0",
@@ -22,6 +22,10 @@ Import-Package: javax.servlet,
  org.apache.tuscany.sca.policy;version="2.0.0",
  org.apache.tuscany.sca.provider;version="2.0.0",
  org.apache.tuscany.sca.runtime;version="2.0.0",
- org.oasisopen.sca.annotation;version="2.0.0",
- org.oasisopen.sca;version="2.0.0"
+ org.apache.wink.server.internal,
+ org.apache.wink.server.internal.handlers,
+ org.apache.wink.server.internal.servlet,
+ org.apache.wink.server.utils,
+ org.oasisopen.sca;version="2.0.0",
+ org.oasisopen.sca.annotation;version="2.0.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/pom.xml?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/pom.xml Wed May 19 00:53:52 2010
@@ -41,10 +41,18 @@
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-implementation-java-runtime</artifactId>
             <version>2.0-SNAPSHOT</version>
+            <scope>test</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-binding-rest-runtime</artifactId>
+            <version>2.0-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-host-http</artifactId>
             <version>2.0-SNAPSHOT</version>
         </dependency>
@@ -79,18 +87,18 @@
         <dependency>
             <groupId>org.apache.wink</groupId>
             <artifactId>wink-server</artifactId>
-            <version>1.0-incubating</version>
+            <version>1.1-incubating</version>
         </dependency>        
         <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>jsr311-api</artifactId>
-            <version>1.0</version>
+            <version>1.1</version>
         </dependency>
         
         <dependency>
             <groupId>org.apache.wink</groupId>
             <artifactId>wink-client</artifactId>
-            <version>1.0-incubating</version>
+            <version>1.1-incubating</version>
             <scope>test</scope>
         </dependency>
         

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/provider/JAXRSImplementationProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/provider/JAXRSImplementationProvider.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/provider/JAXRSImplementationProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/provider/JAXRSImplementationProvider.java Wed May 19 00:53:52 2010
@@ -19,18 +19,12 @@
 
 package org.apache.tuscany.sca.implementation.jaxrs.provider;
 
-import javax.servlet.Servlet;
-import javax.ws.rs.core.Application;
-
 import org.apache.tuscany.sca.host.http.ServletHost;
 import org.apache.tuscany.sca.implementation.jaxrs.JAXRSImplementation;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.provider.ImplementationProvider;
 import org.apache.tuscany.sca.runtime.RuntimeComponentService;
-import org.apache.wink.server.internal.servlet.RestServlet;
-import org.apache.wink.server.utils.RegistrationUtils;
-import org.oasisopen.sca.ServiceRuntimeException;
 
 /**
  * 
@@ -57,6 +51,7 @@ public class JAXRSImplementationProvider
     }
 
     public void start() {
+        /*
         RestServlet restServlet = new RestServlet();
         host.addServletMapping("/*", restServlet);
         Application application;
@@ -66,13 +61,16 @@ public class JAXRSImplementationProvider
             throw new ServiceRuntimeException(e);
         }
         RegistrationUtils.registerApplication(application, restServlet.getServletContext());
+        */
     }
 
     public void stop() {
+        /*
         Servlet servlet = host.removeServletMapping("/*");
         if (servlet != null) {
             servlet.destroy();
         }
+        */
     }
 
 }

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs-runtime/src/test/java/helloworld/jaxrs/test/HelloWorldTestCase.java Wed May 19 00:53:52 2010
@@ -30,13 +30,11 @@ import org.apache.wink.client.ClientResp
 import org.apache.wink.client.RestClient;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
  * 
  */
-@Ignore
 public class HelloWorldTestCase {
     private static Node node;
 
@@ -55,6 +53,8 @@ public class HelloWorldTestCase {
     public void testDummy() {
         RestClient client = new RestClient();
         ClientResponse response = client.resource("http://localhost:8080/world").get();
+        String out = response.getEntity(String.class);
+        System.out.println(out);
         Assert.assertEquals(200, response.getStatusCode());
     }
 

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/META-INF/MANIFEST.MF?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/META-INF/MANIFEST.MF Wed May 19 00:53:52 2010
@@ -8,7 +8,9 @@ Bundle-Version: 2.0.0
 Bundle-ManifestVersion: 2
 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
 Bundle-Description: Apache Tuscany SCA Implementation JAXRS Model
-Import-Package: javax.xml.stream;resolution:=optional,
+Import-Package: javax.ws.rs;version="1.0.0",
+ javax.ws.rs.core;version="1.0.0",
+ javax.xml.stream;resolution:=optional,
  org.apache.tuscany.sca.assembly;version="2.0.0",
  org.apache.tuscany.sca.assembly.builder;version="2.0.0",
  org.apache.tuscany.sca.assembly.impl;version="2.0.0",
@@ -18,6 +20,8 @@ Import-Package: javax.xml.stream;resolut
  org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
  org.apache.tuscany.sca.core;version="2.0.0",
  org.apache.tuscany.sca.implementation.jaxrs;version="2.0.0",
+ org.apache.tuscany.sca.interfacedef;version="2.0.0",
+ org.apache.tuscany.sca.interfacedef.java;version="2.0.0",
  org.apache.tuscany.sca.monitor;version="2.0.0",
  org.apache.tuscany.sca.policy;version="2.0.0",
  org.apache.tuscany.sca.runtime;version="2.0.0",

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/pom.xml?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/pom.xml Wed May 19 00:53:52 2010
@@ -57,14 +57,26 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-interface-java</artifactId>
+            <version>2.0-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-monitor</artifactId>
             <version>2.0-SNAPSHOT</version>
         </dependency>
         
         <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-binding-rest</artifactId>
+            <version>2.0-SNAPSHOT</version>
+        </dependency>
+                
+        <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>jsr311-api</artifactId>
-            <version>1.0</version>
+            <version>1.1</version>
         </dependency>
 
         <dependency>

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/impl/JAXRSImplementationImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/impl/JAXRSImplementationImpl.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/impl/JAXRSImplementationImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/impl/JAXRSImplementationImpl.java Wed May 19 00:53:52 2010
@@ -18,10 +18,6 @@
  */
 package org.apache.tuscany.sca.implementation.jaxrs.impl;
 
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.impl.ImplementationImpl;
 import org.apache.tuscany.sca.implementation.jaxrs.JAXRSImplementation;
 
@@ -40,11 +36,6 @@ public class JAXRSImplementationImpl ext
         super(TYPE);
     }
 
-    public List<Service> getServices() {
-        // The Web implementation does not offer services
-        return Collections.emptyList();
-    }
-
     public String getApplication() {
         return application;
     }

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/xml/JAXRSImplementationProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/xml/JAXRSImplementationProcessor.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/xml/JAXRSImplementationProcessor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-jaxrs/src/main/java/org/apache/tuscany/sca/implementation/jaxrs/xml/JAXRSImplementationProcessor.java Wed May 19 00:53:52 2010
@@ -20,11 +20,17 @@ package org.apache.tuscany.sca.implement
 
 import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
 
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Application;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.binding.rest.RESTBinding;
+import org.apache.tuscany.sca.binding.rest.RESTBindingFactory;
 import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
 import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
@@ -37,6 +43,11 @@ import org.apache.tuscany.sca.core.Exten
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.implementation.jaxrs.JAXRSImplementation;
 import org.apache.tuscany.sca.implementation.jaxrs.JAXRSImplementationFactory;
+import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.oasisopen.sca.ServiceRuntimeException;
 
 /**
  * Implements a StAX artifact processor for Web implementations.
@@ -45,11 +56,17 @@ public class JAXRSImplementationProcesso
     StAXArtifactProcessor<JAXRSImplementation> {
     private static final QName IMPLEMENTATION_JAXRS = JAXRSImplementation.TYPE;
 
+    private AssemblyFactory assemblyFactory;
     private JAXRSImplementationFactory implementationFactory;
+    private RESTBindingFactory restBindingFactory;
+    private JavaInterfaceFactory javaInterfaceFactory;
 
     public JAXRSImplementationProcessor(ExtensionPointRegistry extensionPoints) {
         FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+        this.assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
         this.implementationFactory = modelFactories.getFactory(JAXRSImplementationFactory.class);
+        this.restBindingFactory = modelFactories.getFactory(RESTBindingFactory.class);
+        this.javaInterfaceFactory = modelFactories.getFactory(JavaInterfaceFactory.class);
     }
 
     public QName getArtifactType() {
@@ -91,6 +108,44 @@ public class JAXRSImplementationProcesso
         classReference = resolver.resolveModel(ClassReference.class, classReference, context);
         implementation.setApplicationClass(classReference.getJavaClass());
         implementation.setUnresolved(false);
+        
+        Application application;
+        try {
+            application = (Application) implementation.getApplicationClass().newInstance();
+        } catch (Exception e) {
+            throw new ContributionResolveException(e);
+        } 
+        
+        for(Class<?> rootResourceClass: application.getClasses()) {
+            addService(implementation, rootResourceClass);
+        }
+        for(Object rootResource: application.getSingletons()) {
+            addService(implementation, rootResource.getClass());
+        }
+        
+    }
+
+    private void addService(JAXRSImplementation implementation, Class<?> rootResourceClass) {
+        Service service = assemblyFactory.createService();
+        JavaInterfaceContract contract = javaInterfaceFactory.createJavaInterfaceContract();
+        JavaInterface javaInterface;
+        try {
+            javaInterface = javaInterfaceFactory.createJavaInterface(rootResourceClass);
+        } catch (InvalidInterfaceException e) {
+            throw new ServiceRuntimeException(e);
+        }
+        contract.setInterface(javaInterface);
+        service.setInterfaceContract(contract);
+        RESTBinding binding = restBindingFactory.createRESTBinding();
+        // FIXME: The @ApplicationPath is available for JAX-RS 1.1
+        // binding.setURI("/");
+        Path path = rootResourceClass.getAnnotation(Path.class);
+        if (path != null) {
+            binding.setURI(path.value());
+        }
+        service.getBindings().add(binding);
+        service.setName(rootResourceClass.getSimpleName());
+        implementation.getServices().add(service);
     }
 
     public void write(JAXRSImplementation implementation, XMLStreamWriter writer, ProcessorContext context)

Modified: tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/META-INF/MANIFEST.MF?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/META-INF/MANIFEST.MF Wed May 19 00:53:52 2010
@@ -10,7 +10,7 @@ Bundle-Description: Apache Tuscany Java 
 Bundle-SymbolicName: org.apache.tuscany.sca.interface.java.jaxrs
 Bundle-DocURL: http://www.apache.org/
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
-Import-Package: javax.ws.rs;version="1.0.0",
+Import-Package: javax.ws.rs,
  org.apache.tuscany.sca.interfacedef,
  org.apache.tuscany.sca.interfacedef.java,
  org.apache.tuscany.sca.interfacedef.java.impl,

Modified: tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/pom.xml?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/pom.xml Wed May 19 00:53:52 2010
@@ -32,7 +32,7 @@
         <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>jsr311-api</artifactId>
-            <version>1.0</version>
+            <version>1.1</version>
         </dependency>
             
         <dependency>

Modified: tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/JAXRSJavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/JAXRSJavaInterfaceProcessor.java?rev=945980&r1=945979&r2=945980&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/JAXRSJavaInterfaceProcessor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/interface-java-jaxrs/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxrs/JAXRSJavaInterfaceProcessor.java Wed May 19 00:53:52 2010
@@ -21,10 +21,15 @@ package org.apache.tuscany.sca.interface
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
+import javax.ws.rs.HEAD;
+import javax.ws.rs.HttpMethod;
+import javax.ws.rs.OPTIONS;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
 
@@ -35,68 +40,69 @@ import org.apache.tuscany.sca.interfaced
 import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceVisitor;
 
 public class JAXRSJavaInterfaceProcessor implements JavaInterfaceVisitor {
+    private static Map<String, Class<?>> mapping = new HashMap<String, Class<?>>();
+    static {
+        mapping.put(HttpMethod.GET, GET.class);
+        mapping.put(HttpMethod.POST, POST.class);
+        mapping.put(HttpMethod.PUT, PUT.class);
+        mapping.put(HttpMethod.DELETE, DELETE.class);
+        mapping.put(HttpMethod.HEAD, HEAD.class);
+        mapping.put(HttpMethod.OPTIONS, OPTIONS.class);
+    }
+
+    private boolean introspectHTTPMethod(JavaOperation operation) {
+        Method method = operation.getJavaMethod();
+
+        String methodName = null;
+        HttpMethod httpMethod = method.getAnnotation(HttpMethod.class);
+        if (httpMethod != null) {
+            methodName = httpMethod.value();
+        }
+        if (method.isAnnotationPresent(GET.class)) {
+            methodName = HttpMethod.GET;
+        } else if (method.isAnnotationPresent(POST.class)) {
+            methodName = HttpMethod.POST;
+        } else if (method.isAnnotationPresent(PUT.class)) {
+            methodName = HttpMethod.PUT;
+        } else if (method.isAnnotationPresent(DELETE.class)) {
+            methodName = HttpMethod.DELETE;
+        } else if (method.isAnnotationPresent(HEAD.class)) {
+            methodName = HttpMethod.HEAD;
+        } else if (method.isAnnotationPresent(OPTIONS.class)) {
+            methodName = HttpMethod.OPTIONS;
+        }
+
+        boolean jaxrs = false;
+        Class<?> type = mapping.get(methodName);
+        if (type != null) {
+            jaxrs = true;
+            operation.getAttributes().put(type, Boolean.TRUE);
+            Map<Object, Object> attrs = operation.getInterface().getAttributes();
+            List<Operation> operations = (List<Operation>)attrs.get(type);
+            if (operations == null) {
+                operations = new ArrayList<Operation>();
+                attrs.put(type, operations);
+                operations.add(operation);
+            } else {
+                operations.add(operation);
+            }
+        }
+
+        return jaxrs;
+
+    }
 
     public void visitInterface(JavaInterface contract) throws InvalidInterfaceException {
-        
-        final Class<?> clazz = contract.getJavaClass();
 
-        List<Operation> getOperations = new ArrayList<Operation>();
-        List<Operation> putOperations = new ArrayList<Operation>();
-        List<Operation> postOperations = new ArrayList<Operation>();
-        List<Operation> deleteOperations = new ArrayList<Operation>();
-        
         boolean hasJAXRSAnnotarions = false;
-        
+
         for (Operation op : contract.getOperations()) {
             final JavaOperation operation = (JavaOperation)op;
-            final Method method = operation.getJavaMethod();
-         
-            GET get = method.getAnnotation(GET.class);
-            if(get != null) {
-                hasJAXRSAnnotarions = true;
-                operation.getAttributes().put(GET.class, true);
-                getOperations.add(operation);
-            }
-
-            PUT put = method.getAnnotation(PUT.class);
-            if(put != null) {
+            if (introspectHTTPMethod(operation)) {
                 hasJAXRSAnnotarions = true;
-                operation.getAttributes().put(PUT.class, true);
-                putOperations.add(operation);
             }
-            
-            POST post = method.getAnnotation(POST.class);
-            if(post != null) {
-                hasJAXRSAnnotarions = true;
-                operation.getAttributes().put(POST.class, true);
-                postOperations.add(operation);
-            }
-
-            DELETE delete = method.getAnnotation(DELETE.class);
-            if(delete != null) {
-                hasJAXRSAnnotarions = true;
-                operation.getAttributes().put(DELETE.class, true);
-                deleteOperations.add(operation);
-            }
-        }
-        
-        if(! getOperations.isEmpty()) {
-            contract.getAttributes().put(GET.class, getOperations);
         }
 
-        if(! putOperations.isEmpty()) {
-            contract.getAttributes().put(PUT.class, putOperations);
-        }
-
-        if(! postOperations.isEmpty()) {
-            contract.getAttributes().put(POST.class, postOperations);
-        }
-
-        if(! deleteOperations.isEmpty()) {
-            contract.getAttributes().put(DELETE.class, deleteOperations);
-        }
-        
-        
         // Always set JAX-RS annotated interfaces as remotables
         if (hasJAXRSAnnotarions) {
             contract.setRemotable(true);