Author: scottkurz
Date: Thu Jul 28 03:21:39 2011
New Revision: 1151710

URL: http://svn.apache.org/viewvc?rev=1151710&view=rev
Log:
TUSCANY-3894.  Refactor WSDL InterfaceContract generation so it's only done if 
the BindingSCATransformer calls for it.

Modified:
    
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/DefaultLocalSCAReferenceBindingProvider.java
    
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/XMLWFLocalSCAReferenceBindingProvider.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/DefaultLocalSCAReferenceBindingProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/DefaultLocalSCAReferenceBindingProvider.java?rev=1151710&r1=1151709&r2=1151710&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/DefaultLocalSCAReferenceBindingProvider.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/DefaultLocalSCAReferenceBindingProvider.java
 Thu Jul 28 03:21:39 2011
@@ -50,8 +50,9 @@ public class DefaultLocalSCAReferenceBin
     protected InterfaceContractMapper interfaceContractMapper;
     protected ExtensionPointRegistry extensionPoints;
     protected Mediator mediator;
-    protected InterfaceContract wsdlBindingInterfaceContract;
-
+    protected InterfaceContract componentTypeRefInterfaceContract;
+    protected InterfaceContract wsdlBindingInterfaceContract;      // Computed 
lazily
+    
     public DefaultLocalSCAReferenceBindingProvider(ExtensionPointRegistry 
extensionPoints, RuntimeEndpointReference endpointReference, SCABindingMapper 
mapper) {
         this.extensionPoints = extensionPoints;
         UtilityExtensionPoint utilities = 
extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
@@ -65,8 +66,12 @@ public class DefaultLocalSCAReferenceBin
         return DOMDataBinding.NAME;
     }
 
-    private InterfaceContract getWSDLInterfaceContract(InterfaceContract 
interfaceContract) {
-        InterfaceContract wsdlInterfaceContract = 
(WSDLInterfaceContract)endpointReference.getGeneratedWSDLContract(interfaceContract);
+    protected InterfaceContract getWSDLBindingInterfaceContract() {
+        if (this.wsdlBindingInterfaceContract != null) {
+            return this.wsdlBindingInterfaceContract;
+        }
+        
+        InterfaceContract wsdlInterfaceContract = 
(WSDLInterfaceContract)endpointReference.getGeneratedWSDLContract(componentTypeRefInterfaceContract);
 
         // Validation may be unnecessary.  This check may already be 
guaranteed at this point, not sure.
         Endpoint target = endpointReference.getTargetEndpoint();
@@ -93,19 +98,16 @@ public class DefaultLocalSCAReferenceBin
         if (wsdlInterfaceContract.getCallbackInterface() != null) {
             
wsdlInterfaceContract.getCallbackInterface().resetDataBinding(dataBinding);
         }
+        this.wsdlBindingInterfaceContract = wsdlInterfaceContract;
+        
         return wsdlInterfaceContract;
-
     }
 
     @Override
     public InterfaceContract getBindingInterfaceContract() {
-        InterfaceContract componentTypeRefIC = 
endpointReference.getComponentTypeReferenceInterfaceContract();
-        if (componentTypeRefIC.getInterface().isRemotable()) {
-            this.wsdlBindingInterfaceContract = 
getWSDLInterfaceContract(componentTypeRefIC);
-        }
-
         // Since we want to disable DataTransformationInterceptor and handle 
copy in the binding
-        return componentTypeRefIC;
+        this.componentTypeRefInterfaceContract = 
endpointReference.getComponentTypeReferenceInterfaceContract();
+        return componentTypeRefInterfaceContract;
     }
 
     

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/XMLWFLocalSCAReferenceBindingProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/XMLWFLocalSCAReferenceBindingProvider.java?rev=1151710&r1=1151709&r2=1151710&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/XMLWFLocalSCAReferenceBindingProvider.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-sca-runtime/src/main/java/org/apache/tuscany/sca/binding/local/XMLWFLocalSCAReferenceBindingProvider.java
 Thu Jul 28 03:21:39 2011
@@ -23,6 +23,7 @@ import org.apache.tuscany.sca.binding.sc
 import 
org.apache.tuscany.sca.binding.sca.transform.DefaultBindingSCATransformer;
 import org.apache.tuscany.sca.binding.sca.transform.XMLWFBindingSCATransformer;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.InvocationChain;
 import org.apache.tuscany.sca.provider.SCABindingMapper;
@@ -36,8 +37,12 @@ public class XMLWFLocalSCAReferenceBindi
         super(extensionPoints, endpointReference, mapper);
     }
     
-    protected BindingSCATransformer getBindingTransformer(Operation operation, 
InvocationChain chain) {
-        Operation wsdlBindingOperation = 
interfaceContractMapper.map(wsdlBindingInterfaceContract.getInterface(), 
operation);                        
+    protected BindingSCATransformer getBindingTransformer(Operation operation, 
InvocationChain chain) { 
+        InterfaceContract bindingInterfaceContract = 
getWSDLBindingInterfaceContract();   
+        if (!bindingInterfaceContract.getInterface().isRemotable()) {
+            throw new IllegalStateException("This method should only have been 
called for a remotable interface.");
+        }
+        Operation wsdlBindingOperation = 
interfaceContractMapper.map(bindingInterfaceContract.getInterface(), 
operation);                        
         return new XMLWFBindingSCATransformer(mediator, operation, 
wsdlBindingOperation, chain);                
     }
 }


Reply via email to