summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2010-04-30 17:15:53 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2010-04-30 17:15:53 +0000
commitda0aff02c15c1e29b844717f4e8911e0d1e80f5b (patch)
tree00f543f3ed8fd7ca523426f96b72f9e6079dba65 /sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java
parent80ca73f521b9c70ebe9bfdd6b43fde09ff6b799e (diff)
Enhanced support for JAX-RS annotations allowing @Path({id}) to be mapped to an operation expecting a id paramenter. This gives basic support for get and delete operations on a given resource
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@939744 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java')
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java36
1 files changed, 16 insertions, 20 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java
index a037e6e45c..514cb4cc96 100644
--- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java
@@ -98,7 +98,6 @@ public class RESTServiceBindingProvider implements EndpointProvider {
}
-
//clone the service contract to avoid databinding issues
try {
this.serviceContract = (InterfaceContract) service.getInterfaceContract().clone();
@@ -119,45 +118,42 @@ public class RESTServiceBindingProvider implements EndpointProvider {
Invoker bindingInvoker = endpoint.getBindingInvocationChain().getHeadInvoker();
bindingListenerServlet = new RESTBindingListenerServlet(binding, bindingInvoker, messageFactory );
for (InvocationChain invocationChain : endpoint.getInvocationChains()) {
+
Operation operation = invocationChain.getTargetOperation();
+ Invoker serviceInvoker = invocationChain.getHeadInvoker();
String operationName = operation.getName();
- if (operationName.equals("get")) {
- Invoker getInvoker = invocationChain.getHeadInvoker();
- bindingListenerServlet.setGetInvoker(getInvoker);
+
+ if (binding.getOperationSelector() != null || binding.getRequestWireFormat() != null) {
+ bindingListenerServlet.setInvoker(serviceInvoker);
+ servlet = bindingListenerServlet;
+ } else if (operationName.equals("get")) {
+ bindingListenerServlet.setGetInvoker(serviceInvoker);
servlet = bindingListenerServlet;
} else if (operationName.equals("conditionalGet")) {
- Invoker conditionalGetInvoker = invocationChain.getHeadInvoker();
- bindingListenerServlet.setConditionalGetInvoker(conditionalGetInvoker);
+ bindingListenerServlet.setConditionalGetInvoker(serviceInvoker);
servlet = bindingListenerServlet;
} else if (operationName.equals("delete")) {
- Invoker deleteInvoker = invocationChain.getHeadInvoker();
- bindingListenerServlet.setDeleteInvoker(deleteInvoker);
+ bindingListenerServlet.setDeleteInvoker(serviceInvoker);
servlet = bindingListenerServlet;
} else if (operationName.equals("conditionalDelete")) {
- Invoker conditionalDeleteInvoker = invocationChain.getHeadInvoker();
- bindingListenerServlet.setConditionalDeleteInvoker(conditionalDeleteInvoker);
+ bindingListenerServlet.setConditionalDeleteInvoker(serviceInvoker);
servlet = bindingListenerServlet;
} else if (operationName.equals("put")) {
- Invoker putInvoker = invocationChain.getHeadInvoker();
- bindingListenerServlet.setPutInvoker(putInvoker);
+ bindingListenerServlet.setPutInvoker(serviceInvoker);
servlet = bindingListenerServlet;
} else if (operationName.equals("conditionalPut")) {
- Invoker conditionalPutInvoker = invocationChain.getHeadInvoker();
- bindingListenerServlet.setConditionalPutInvoker(conditionalPutInvoker);
+ bindingListenerServlet.setConditionalPutInvoker(serviceInvoker);
servlet = bindingListenerServlet;
} else if (operationName.equals("post")) {
- Invoker postInvoker = invocationChain.getHeadInvoker();
- bindingListenerServlet.setPostInvoker(postInvoker);
+ bindingListenerServlet.setPostInvoker(serviceInvoker);
servlet = bindingListenerServlet;
} else if (operationName.equals("conditionalPost")) {
- Invoker conditionalPostInvoker = invocationChain.getHeadInvoker();
- bindingListenerServlet.setConditionalPostInvoker(conditionalPostInvoker);
+ bindingListenerServlet.setConditionalPostInvoker(serviceInvoker);
servlet = bindingListenerServlet;
} else if (operationName.equals("service")) {
- Invoker serviceInvoker = invocationChain.getHeadInvoker();
servlet = new RESTServiceListenerServlet(binding, serviceInvoker, messageFactory);
break;
- }
+ }
}
if (servlet == null) {
throw new IllegalStateException("No get or service method found on the service");