You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/05/10 11:02:32 UTC

svn commit: r536785 - in /incubator/tuscany/java/sca: modules/core-spi/src/main/java/org/apache/tuscany/provider/ modules/core/src/main/java/org/apache/tuscany/core/runtime/ modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ mod...

Author: rfeng
Date: Thu May 10 02:02:29 2007
New Revision: 536785

URL: http://svn.apache.org/viewvc?view=rev&rev=536785
Log:
Pass InterfaceContractMapper to RuntimeComponentReferenceImpl and RuntimeComponentServiceImpl
Fix a few issues in interface mapping

Modified:
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeAssemblyFactory.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentReferenceImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentServiceImpl.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntime.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java
    incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/DataType.java
    incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java
    incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/module/CRUDModuleActivator.java

Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java Thu May 10 02:02:29 2007
@@ -28,7 +28,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public interface ScopedImplementationProvider<M> extends ImplementationProvider {
+public interface ScopedImplementationProvider extends ImplementationProvider {
     /**
      * Get the scope for the component implementation
      * 

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java Thu May 10 02:02:29 2007
@@ -366,7 +366,7 @@
                 }
                 addBindingInterceptor(component, reference, binding, chain, operation, false);
                 if (target != null) {
-                    addImplementationInterceptor(target, service, chain, operation, false);
+                    addImplementationInterceptor(target, service, chain, targetOperation, false);
                 }
                 wire.getInvocationChains().add(chain);
             }
@@ -383,7 +383,7 @@
                         chain.addInterceptor(new NonBlockingInterceptor(workScheduler, workContext));
                     }
                     addBindingInterceptor(component, reference, binding, chain, operation, true);
-                    addImplementationInterceptor(component, null, chain, operation, true);
+                    addImplementationInterceptor(component, null, chain, targetOperation, true);
                     wire.getCallbackInvocationChains().add(chain);
                 }
             }
@@ -452,7 +452,7 @@
                 chain.addInterceptor(new NonBlockingInterceptor(workScheduler, workContext));
             }
 
-            addImplementationInterceptor(component, service, chain, operation, false);
+            addImplementationInterceptor(component, service, chain, targetOperation, false);
             wire.getInvocationChains().add(chain);
         }
         // if (sourceContract.getCallbackInterface() != null) {

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeAssemblyFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeAssemblyFactory.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeAssemblyFactory.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeAssemblyFactory.java Thu May 10 02:02:29 2007
@@ -24,20 +24,23 @@
 import org.apache.tuscany.assembly.ComponentService;
 import org.apache.tuscany.assembly.DefaultAssemblyFactory;
 import org.apache.tuscany.assembly.SCABinding;
+import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.invocation.ProxyFactory;
 
 /**
  * @version $Rev$ $Date$
  */
 public class RuntimeAssemblyFactory extends DefaultAssemblyFactory {
-    private ProxyFactory proxyFactory;
+    private final ProxyFactory proxyFactory;
+    private final InterfaceContractMapper interfaceContractMapper;
     
     /**
      * @param proxyFactory
      */
-    public RuntimeAssemblyFactory(ProxyFactory proxyFactory) {
+    public RuntimeAssemblyFactory(InterfaceContractMapper interfaceContractMapper, ProxyFactory proxyFactory) {
         super();
         this.proxyFactory = proxyFactory;
+        this.interfaceContractMapper = interfaceContractMapper;
     }
 
     @Override
@@ -47,7 +50,7 @@
 
     @Override
     public ComponentReference createComponentReference() {
-        return new RuntimeComponentReferenceImpl();
+        return new RuntimeComponentReferenceImpl(interfaceContractMapper);
     }
 
     @Override
@@ -57,7 +60,7 @@
 
     @Override
     public ComponentService createComponentService() {
-        return new RuntimeComponentServiceImpl();
+        return new RuntimeComponentServiceImpl(interfaceContractMapper);
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentReferenceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentReferenceImpl.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentReferenceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentReferenceImpl.java Thu May 10 02:02:29 2007
@@ -28,6 +28,7 @@
 import org.apache.tuscany.assembly.impl.ComponentReferenceImpl;
 import org.apache.tuscany.core.RuntimeComponentReference;
 import org.apache.tuscany.core.RuntimeWire;
+import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.interfacedef.Operation;
 import org.apache.tuscany.invocation.InvocationChain;
 import org.apache.tuscany.invocation.Invoker;
@@ -36,6 +37,12 @@
 public class RuntimeComponentReferenceImpl extends ComponentReferenceImpl implements RuntimeComponentReference {
     private List<RuntimeWire> wires = new ArrayList<RuntimeWire>();
     private Map<Binding, ReferenceBindingProvider> bindingProviders = new HashMap<Binding, ReferenceBindingProvider>();
+    private InterfaceContractMapper mapper;
+
+    public RuntimeComponentReferenceImpl(InterfaceContractMapper mapper) {
+        super();
+        this.mapper = mapper;
+    }
 
     public void addRuntimeWire(RuntimeWire wire) {
         wires.add(wire);
@@ -69,7 +76,7 @@
         }
         for (InvocationChain chain : wire.getInvocationChains()) {
             Operation op = chain.getSourceOperation();
-            if (op == operation) {
+            if (mapper.isCompatible(operation, op, op.getInterface().isRemotable())) {
                 return chain.getHeadInvoker();
             }
         }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentServiceImpl.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeComponentServiceImpl.java Thu May 10 02:02:29 2007
@@ -28,12 +28,20 @@
 import org.apache.tuscany.assembly.impl.ComponentServiceImpl;
 import org.apache.tuscany.core.RuntimeComponentService;
 import org.apache.tuscany.core.RuntimeWire;
+import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.interfacedef.Operation;
 import org.apache.tuscany.invocation.InvocationChain;
 import org.apache.tuscany.invocation.Invoker;
 import org.apache.tuscany.provider.ServiceBindingProvider;
 
 public class RuntimeComponentServiceImpl extends ComponentServiceImpl implements RuntimeComponentService {
+    private InterfaceContractMapper mapper;
+
+    public RuntimeComponentServiceImpl(InterfaceContractMapper mapper) {
+        super();
+        this.mapper = mapper;
+    }
+
     private List<RuntimeWire> wires = new ArrayList<RuntimeWire>();
     private List<RuntimeWire> callbackWires = new ArrayList<RuntimeWire>();
     private Map<Binding, ServiceBindingProvider> bindingProviders = new HashMap<Binding, ServiceBindingProvider>();
@@ -78,9 +86,7 @@
         }
         for (InvocationChain chain : wire.getInvocationChains()) {
             Operation op = chain.getTargetOperation();
-            // TODO: Operation.equals doesn seem to work with Operations with diff databindings
-            //       so just check the name for now 
-            if (op.getName().equals(operation.getName())) {
+            if (mapper.isCompatible(operation, op, op.getInterface().isRemotable())) {
                 return chain.getHeadInvoker();
             }
         }
@@ -92,7 +98,7 @@
             if (wire.getTarget().getBinding() == binding) {
                 for (InvocationChain chain : wire.getCallbackInvocationChains()) {
                     Operation op = chain.getSourceOperation();
-                    if (op == operation) {
+                    if (mapper.isCompatible(operation, op, op.getInterface().isRemotable())) {
                         return chain.getHeadInvoker();
                     }
                 }

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntime.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntime.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntime.java Thu May 10 02:02:29 2007
@@ -77,7 +77,7 @@
         ProxyFactory proxyFactory = ReallySmallRuntimeBuilder.createProxyFactory(registry, workContext, mapper);
 
         // Create model factories
-        assemblyFactory = new RuntimeAssemblyFactory(proxyFactory);
+        assemblyFactory = new RuntimeAssemblyFactory(mapper, proxyFactory);
         PolicyFactory policyFactory = new DefaultPolicyFactory();
 
         // Create a contribution service

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java Thu May 10 02:02:29 2007
@@ -109,6 +109,7 @@
 
         // FIXME remove this
         registry.addExtensionPoint(ProxyFactory.class, proxyFactory);
+        registry.addExtensionPoint(InterfaceContractMapper.class, mapper);
 
         return proxyFactory;
     }

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java Thu May 10 02:02:29 2007
@@ -26,6 +26,7 @@
 import org.apache.tuscany.core.ExtensionPointRegistry;
 import org.apache.tuscany.core.ModuleActivator;
 import org.apache.tuscany.core.runtime.RuntimeAssemblyFactory;
+import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.interfacedef.java.DefaultJavaInterfaceFactory;
 import org.apache.tuscany.interfacedef.java.JavaInterfaceFactory;
 import org.apache.tuscany.interfacedef.java.introspect.ExtensibleJavaInterfaceIntrospector;
@@ -58,8 +59,9 @@
     public void start(ExtensionPointRegistry registry) {
 
         ProxyFactory proxyFactory = registry.getExtensionPoint(ProxyFactory.class);
+        InterfaceContractMapper mapper = registry.getExtensionPoint(InterfaceContractMapper.class);
         // Create the CRUD implementation factory
-        AssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(proxyFactory);
+        AssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(mapper, proxyFactory);
         JavaInterfaceFactory javaFactory = new DefaultJavaInterfaceFactory();
         JavaInterfaceIntrospectorExtensionPoint visitors = registry.getExtensionPoint(JavaInterfaceIntrospectorExtensionPoint.class);
         JavaInterfaceIntrospector introspector = new ExtensibleJavaInterfaceIntrospector(javaFactory, visitors);

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java Thu May 10 02:02:29 2007
@@ -45,7 +45,7 @@
 /**
  * @version $Rev$ $Date$
  */
-public class JavaImplementationProvider implements ScopedImplementationProvider<JavaImplementation> {
+public class JavaImplementationProvider implements ScopedImplementationProvider {
     private JavaImplementation implementation;
     private JavaComponentInfo atomicComponent;
 

Modified: incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/DataType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/DataType.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/DataType.java (original)
+++ incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/DataType.java Thu May 10 02:02:29 2007
@@ -54,10 +54,10 @@
      * Returns the logical identifier used by the assembly. The type of this
      * value identifies the logical type system in use. Known values are:
      * <ul>
-     * <li>a java.lang.reflect.Type identifies a Java type by name and
+     * <li>a Class identifies a Java type by name and
      * ClassLoader; this includes Java Classes as they are specializations of
      * Type</li>
-     * <li>a javax.xml.namespace.QName identifies an XML type by local name and
+     * <li>a XMLType identifies an XML type by local name and
      * namespace</li>
      * </ul>
      * 

Modified: incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java (original)
+++ incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/DefaultInterfaceContractMapper.java Thu May 10 02:02:29 2007
@@ -41,7 +41,9 @@
             // For local case
             return target.getPhysical() == source.getPhysical();
         } else {
-            return target.getLogical().equals(source.getLogical());
+            // FIXME: How to test if two remotable data type is compatible?
+            // return target.getLogical().equals(source.getLogical());
+            return true;
         }
 
     }
@@ -69,7 +71,13 @@
         }
 
         List<DataType> sourceInputType = source.getInputType().getLogical();
+        if (source.isWrapperStyle()) {
+            sourceInputType = source.getWrapper().getUnwrappedInputType().getLogical();
+        }
         List<DataType> targetInputType = target.getInputType().getLogical();
+        if (target.isWrapperStyle()) {
+            targetInputType = target.getWrapper().getUnwrappedInputType().getLogical();
+        }
 
         if (sourceInputType.size() != targetInputType.size()) {
             return false;
@@ -86,8 +94,9 @@
         for (DataType targetFaultType : target.getFaultTypes()) {
             // Source fault types must be the same or superset of target fault
             // types
-            boolean found = false;
+            boolean found = true;
             for (DataType sourceFaultType : source.getFaultTypes()) {
+                found = false;
                 if (isCompatible(targetFaultType, sourceFaultType, remotable)) {
                     // Target fault type can be covered by the source fault type
                     found = true;

Modified: incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/module/CRUDModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/module/CRUDModuleActivator.java?view=diff&rev=536785&r1=536784&r2=536785
==============================================================================
--- incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/module/CRUDModuleActivator.java (original)
+++ incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/module/CRUDModuleActivator.java Thu May 10 02:02:29 2007
@@ -26,6 +26,7 @@
 import org.apache.tuscany.core.ExtensionPointRegistry;
 import org.apache.tuscany.core.ModuleActivator;
 import org.apache.tuscany.core.runtime.RuntimeAssemblyFactory;
+import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.interfacedef.java.DefaultJavaInterfaceFactory;
 import org.apache.tuscany.interfacedef.java.JavaInterfaceFactory;
 import org.apache.tuscany.interfacedef.java.introspect.ExtensibleJavaInterfaceIntrospector;
@@ -58,8 +59,10 @@
     public void start(ExtensionPointRegistry registry) {
 
         ProxyFactory proxyFactory = registry.getExtensionPoint(ProxyFactory.class);
+        InterfaceContractMapper mapper = registry.getExtensionPoint(InterfaceContractMapper.class);
         // Create the CRUD implementation factory
-        AssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(proxyFactory);
+        AssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(mapper, proxyFactory);
+
         JavaInterfaceFactory javaFactory = new DefaultJavaInterfaceFactory();
         JavaInterfaceIntrospectorExtensionPoint visitors = registry.getExtensionPoint(JavaInterfaceIntrospectorExtensionPoint.class);
         JavaInterfaceIntrospector introspector = new ExtensibleJavaInterfaceIntrospector(javaFactory, visitors);



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org