summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/provider/XMLWireFormatServiceProvider.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/provider/XMLWireFormatServiceProvider.java34
1 files changed, 27 insertions, 7 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/provider/XMLWireFormatServiceProvider.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/provider/XMLWireFormatServiceProvider.java
index 508b029b00..9e532d2df2 100644
--- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/provider/XMLWireFormatServiceProvider.java
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/wireformat/xml/provider/XMLWireFormatServiceProvider.java
@@ -24,6 +24,7 @@ import java.util.List;
import javax.xml.stream.XMLStreamReader;
import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.binding.rest.provider.RESTServiceBindingProvider;
import org.apache.tuscany.sca.binding.rest.wireformat.xml.XMLWireFormat;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.databinding.javabeans.SimpleJavaDataBinding;
@@ -32,6 +33,7 @@ import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.Interface;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
import org.apache.tuscany.sca.invocation.Interceptor;
import org.apache.tuscany.sca.invocation.Phase;
import org.apache.tuscany.sca.provider.WireFormatProvider;
@@ -51,26 +53,44 @@ public class XMLWireFormatServiceProvider implements WireFormatProvider {
private InterfaceContract serviceContract;
private Binding binding;
+ private boolean jaxrs;
+
public XMLWireFormatServiceProvider(ExtensionPointRegistry extensionPoints, RuntimeEndpoint endpoint) {
this.extensionPoints = extensionPoints;
this.endpoint = endpoint;
this.binding = endpoint.getBinding();
+ this.jaxrs = isJAXRSResource();
+ }
+
+ private boolean isJAXRSResource() {
+ Interface interfaze = endpoint.getComponentServiceInterfaceContract().getInterface();
+ if (interfaze instanceof JavaInterface) {
+ if (RESTServiceBindingProvider.isJAXRSResource(((JavaInterface)interfaze).getJavaClass())) {
+ return true;
+ }
+ }
+ return false;
}
public InterfaceContract configureWireFormatInterfaceContract(InterfaceContract interfaceContract) {
serviceContract = interfaceContract;
-
- //make XML databinding default
- serviceContract.getInterface().resetDataBinding(DATABABINDING);
-
- //set XML databinding
- setDataBinding(serviceContract.getInterface());
+ if (!jaxrs) {
+
+ //make XML databinding default
+ serviceContract.getInterface().resetDataBinding(DATABABINDING);
+
+ //set XML databinding
+ setDataBinding(serviceContract.getInterface());
+ }
return serviceContract;
}
public Interceptor createInterceptor() {
- if(binding.getRequestWireFormat() != null && binding.getRequestWireFormat() instanceof XMLWireFormat) {
+ if (jaxrs) {
+ return null;
+ }
+ if (binding.getRequestWireFormat() != null && binding.getRequestWireFormat() instanceof XMLWireFormat) {
return new XMLWireFormatInterceptor(extensionPoints, endpoint);
}
return null;