Author: lresende
Date: Tue May 5 23:07:02 2009
New Revision: 772003
URL: http://svn.apache.org/viewvc?rev=772003&view=rev
Log:
TUSCANY-2968 - Fixing data binding related issues to properly transform to/from
json format as needed
Modified:
tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java
tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java
tuscany/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java
Modified:
tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java?rev=772003&r1=772002&r2=772003&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java
Tue May 5 23:07:02 2009
@@ -60,13 +60,6 @@
}
public Message invoke(Message msg) {
-
- // Configure JSON Databding
-
setDataBinding(runtimeWire.getTarget().getInterfaceContract().getInterface());
-
- // Set default databinding to json
-
runtimeWire.getTarget().getInterfaceContract().getInterface().resetDataBinding(JSONDataBinding.NAME);
-
JSONObject jsonReq = (JSONObject) msg.getBody();
String method = null;
Object[] args = null;
@@ -131,27 +124,4 @@
return responseMessage;
}
-
-
- private void setDataBinding(Interface interfaze) {
- List<Operation> operations = interfaze.getOperations();
- for (Operation operation : operations) {
- operation.setDataBinding(JSONDataBinding.NAME);
- DataType<List<DataType>> inputType = operation.getInputType();
- if (inputType != null) {
- List<DataType> logical = inputType.getLogical();
- for (DataType inArg : logical) {
- if
(!SimpleJavaDataBinding.NAME.equals(inArg.getDataBinding())) {
- inArg.setDataBinding(JSONDataBinding.NAME);
- }
- }
- }
- DataType outputType = operation.getOutputType();
- if (outputType != null) {
- if
(!SimpleJavaDataBinding.NAME.equals(outputType.getDataBinding())) {
- outputType.setDataBinding(JSONDataBinding.NAME);
- }
- }
- }
- }
}
Modified:
tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java?rev=772003&r1=772002&r2=772003&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java
Tue May 5 23:07:02 2009
@@ -45,6 +45,7 @@
public class JSONRPCWireFormatServiceProvider implements WireFormatProvider {
private RuntimeComponent component;
private RuntimeComponentService service;
+ private InterfaceContract serviceContract;
private Binding binding;
public JSONRPCWireFormatServiceProvider(ExtensionPointRegistry
extensionPoints,
@@ -55,22 +56,17 @@
super();
this.component = component;
this.service = service;
+ this.serviceContract = service.getInterfaceContract();
this.binding = binding;
}
public InterfaceContract
configureWireFormatInterfaceContract(InterfaceContract interfaceContract) {
- InterfaceContract configuredContract = null;
- //clone the service contract to avoid databinding issues
- try {
- configuredContract = (InterfaceContract) interfaceContract.clone();
- } catch(CloneNotSupportedException e) {
- configuredContract = interfaceContract;
- }
+ this.serviceContract = interfaceContract;
- setDataBinding(configuredContract.getInterface());
+ setDataBinding(serviceContract.getInterface());
// Set default databinding to json
-
configuredContract.getInterface().resetDataBinding(JSONDataBinding.NAME);
+ serviceContract.getInterface().resetDataBinding(JSONDataBinding.NAME);
return interfaceContract;
}
Modified:
tuscany/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java?rev=772003&r1=772002&r2=772003&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java
Tue May 5 23:07:02 2009
@@ -58,12 +58,17 @@
private static final QName AUTEHTICATION_INTENT = new
QName("http://www.osoa.org/xmlns/sca/1.0","authentication");
private static final QName CONFIDENTIALITY_INTENT = new
QName("http://www.osoa.org/xmlns/sca/1.0","confidentiality");
+ private ExtensionPointRegistry extensionPoints;
+
private RuntimeComponent component;
private RuntimeComponentService service;
+ private InterfaceContract serviceContract;
private HTTPBinding binding;
private MessageFactory messageFactory;
- private ExtensionPointRegistry extensionPoints;
+ private OperationSelectorProvider osProvider;
+ private WireFormatProvider wfProvider;
+
private ServletHost servletHost;
private String servletMapping;
private HTTPBindingListenerServlet bindingListenerServlet;
@@ -76,10 +81,41 @@
ServletHost servletHost) {
this.component = component;
this.service = service;
+
this.binding = binding;
this.extensionPoints = extensionPoints;
this.messageFactory = messageFactory;
this.servletHost = servletHost;
+
+ // retrieve operation selector and wire format service providers
+
+ ProviderFactoryExtensionPoint providerFactories =
extensionPoints.getExtensionPoint(ProviderFactoryExtensionPoint.class);
+
+ // Configure the interceptors for operation selection
+ OperationSelectorProviderFactory osProviderFactory =
(OperationSelectorProviderFactory)
providerFactories.getProviderFactory(binding.getOperationSelector().getClass());
+ if (osProviderFactory != null) {
+ this.osProvider =
osProviderFactory.createServiceOperationSelectorProvider(component, service,
binding);
+ }
+
+ // Configure the interceptors for wire format
+ WireFormatProviderFactory wfProviderFactory =
(WireFormatProviderFactory)
providerFactories.getProviderFactory(binding.getRequestWireFormat().getClass());
+ if (wfProviderFactory != null) {
+ this.wfProvider =
wfProviderFactory.createServiceWireFormatProvider(component, service, binding);
+ }
+
+
+ //clone the service contract to avoid databinding issues
+ try {
+ this.serviceContract = (InterfaceContract)
service.getInterfaceContract().clone();
+
+ // configure data binding
+ if (this.wfProvider != null) {
+
wfProvider.configureWireFormatInterfaceContract(service.getInterfaceContract());
+ }
+ } catch(CloneNotSupportedException e) {
+ this.serviceContract = service.getInterfaceContract();
+ }
+
}
public void start() {
@@ -195,7 +231,7 @@
}
public InterfaceContract getBindingInterfaceContract() {
- return null;
+ return service.getInterfaceContract();
}
public boolean supportsOneWayInvocation() {
@@ -210,27 +246,10 @@
InvocationChain bindingChain = runtimeWire.getBindingInvocationChain();
- ProviderFactoryExtensionPoint providerFactories =
extensionPoints.getExtensionPoint(ProviderFactoryExtensionPoint.class);
-
- // Configure the interceptors for operation selection
- OperationSelectorProviderFactory osProviderFactory =
(OperationSelectorProviderFactory)
providerFactories.getProviderFactory(binding.getOperationSelector().getClass());
- OperationSelectorProvider osProvider = null;
- if (osProviderFactory != null) {
- osProvider =
osProviderFactory.createServiceOperationSelectorProvider(component, service,
binding);
- }
-
if(osProvider != null) {
bindingChain.addInterceptor(Phase.SERVICE_BINDING_OPERATION_SELECTOR,
osProvider.createInterceptor());
}
-
- // Configure the interceptors for wire format
- WireFormatProviderFactory wfProviderFactory =
(WireFormatProviderFactory)
providerFactories.getProviderFactory(binding.getRequestWireFormat().getClass());
- WireFormatProvider wfProvider = null;
- if (wfProviderFactory != null) {
- wfProvider =
wfProviderFactory.createServiceWireFormatProvider(component, service, binding);
- }
-
if (wfProvider != null) {
bindingChain.addInterceptor(Phase.SERVICE_BINDING_WIREFORMAT,
wfProvider.createInterceptor());
}