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


Reply via email to