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);