From 9d3cbbfe0b8a62ed9e61bf32e72f6da27c73bba8 Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 30 Sep 2011 22:07:31 +0000 Subject: Enhance Tuscany JAX-RS reader/writer to better handle JAXB git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1177856 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/binding/rest/provider/DataBindingJAXRSProvider.java | 2 +- .../tuscany/sca/binding/rest/provider/DataBindingJAXRSReader.java | 2 ++ .../tuscany/sca/binding/rest/provider/DataBindingJAXRSWriter.java | 2 ++ .../apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java | 4 ++-- .../sca/binding/rest/wireformat/json/CatalogServiceTestCase.java | 1 + .../binding-rest-runtime/src/test/java/services/store/Catalog.java | 5 ++++- .../src/test/java/services/store/FruitsCatalogImpl.java | 4 ++-- 7 files changed, 14 insertions(+), 6 deletions(-) (limited to 'sca-java-2.x/trunk/modules/binding-rest-runtime') diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSProvider.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSProvider.java index 1ccdb868d7..1dfdf17345 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSProvider.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSProvider.java @@ -84,7 +84,7 @@ public abstract class DataBindingJAXRSProvider { } protected DataType createDataType(Class type, Type genericType) { - DataType dataType = new DataTypeImpl(null, type, type, genericType); + DataType dataType = new DataTypeImpl(null, type, genericType, genericType); dataBindingExtensionPoint.introspectType(dataType, null); return dataType; } diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSReader.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSReader.java index d38881eb28..d2304b79f4 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSReader.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSReader.java @@ -25,6 +25,7 @@ import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.Collections; +import javax.ws.rs.Consumes; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; @@ -39,6 +40,7 @@ import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl; * The generic JAX-RS message body reader based on Tuscany's databindingframework */ @Provider +@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_XML, MediaType.WILDCARD}) public class DataBindingJAXRSReader extends DataBindingJAXRSProvider implements MessageBodyReader { public DataBindingJAXRSReader(ExtensionPointRegistry registry) { diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSWriter.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSWriter.java index be2a9555d7..ab4173939e 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSWriter.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSWriter.java @@ -25,6 +25,7 @@ import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.Collections; +import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; @@ -39,6 +40,7 @@ import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl; * The generic JAX-RS message body writer based on Tuscany's databindingframework */ @Provider +@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_XML, MediaType.WILDCARD}) public class DataBindingJAXRSWriter extends DataBindingJAXRSProvider implements MessageBodyWriter { public DataBindingJAXRSWriter(ExtensionPointRegistry registry) { diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java index aefa666bfe..266d038b3b 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/TuscanyRESTServlet.java @@ -158,8 +158,8 @@ public class TuscanyRESTServlet extends RestServlet { }); ProvidersRegistry providers = config.getProvidersRegistry(); - providers.addProvider(new DataBindingJAXRSReader(registry), 0.001, true); - providers.addProvider(new DataBindingJAXRSWriter(registry), 0.001, true); + providers.addProvider(new DataBindingJAXRSReader(registry), 0.2, true); + providers.addProvider(new DataBindingJAXRSWriter(registry), 0.2, true); config.getResponseUserHandlers().add(new TuscanyResponseHandler()); diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java index 2aa59af508..b3cf3f1975 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java @@ -56,6 +56,7 @@ public class CatalogServiceTestCase { String contribution = ContributionLocationHelper.getContributionLocation(CatalogServiceTestCase.class); node = NodeFactory.newInstance().createNode("store.composite", new Contribution("catalog", contribution)); node.start(); + System.out.println(); } catch (Exception e) { e.printStackTrace(); } diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Catalog.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Catalog.java index 7e579c6aba..5fb29782f2 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Catalog.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/Catalog.java @@ -19,8 +19,11 @@ package services.store; +import java.util.Date; + import javax.ws.rs.DELETE; import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; @@ -37,7 +40,7 @@ public interface Catalog { @GET @Path("{id}") - Item getItemById(@PathParam("id") String itemId); + Item getItemById(@PathParam("id") String itemId, @HeaderParam("If-Modified-Since") Date date); @POST void addItem(Item item); diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java index afe3d3863e..447e983aa7 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/store/FruitsCatalogImpl.java @@ -20,8 +20,8 @@ package services.store; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.oasisopen.sca.annotation.Init; @@ -54,7 +54,7 @@ public class FruitsCatalogImpl implements Catalog { return items; } - public Item getItemById(String itemId) { + public Item getItemById(String itemId, Date date) { return catalog.get(itemId); } -- cgit v1.2.3