You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2007/01/12 11:14:03 UTC

svn commit: r495535 - in /incubator/tuscany/java/sca: kernel/core/src/main/java/org/apache/tuscany/core/binding/local/ kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/ kernel/core/src/main/java/org/apache/tuscany/core/builder/ kernel/core/s...

Author: jmarino
Date: Fri Jan 12 02:14:01 2007
New Revision: 495535

URL: http://svn.apache.org/viewvc?view=rev&rev=495535
Log:
remove need for system binding and use local binding instead as the latter supports wire optimization; move auto-assignment of local binding to services and references up to builder registry as part of system binding removal; remove AtomicComponent specialization in wire optimization with introduction of Component.isOptimizable()

Added:
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java   (with props)
Removed:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBinding.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBinding.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/loader/SystemBindingLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/model/SystemBindingDefinition.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingLoaderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBindingTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceComponentWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java
    incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java
    incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java Fri Jan 12 02:14:01 2007
@@ -24,10 +24,12 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.LoaderExtension;
 import org.apache.tuscany.spi.loader.LoaderException;
-import org.apache.tuscany.spi.loader.StAXElementLoader;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.model.ModelObject;
 import org.apache.tuscany.spi.wire.Wire;
 
@@ -36,16 +38,25 @@
  *
  * @version $Rev$ $Date$
  */
-public class LocalBindingLoader implements StAXElementLoader {
+public class LocalBindingLoader extends LoaderExtension<LocalBindingDefinition> {
+
+    /**
+     * Constructor specifies the registry to register with.
+     *
+     * @param registry the LoaderRegistry this loader should register with
+     */
+    public LocalBindingLoader(@Autowire LoaderRegistry registry) {
+        super(registry);
+    }
 
     public QName getXMLType() {
         return Wire.LOCAL_BINDING;
     }
 
-    public ModelObject load(CompositeComponent parent,
-                            ModelObject object,
-                            XMLStreamReader reader,
-                            DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
+    public LocalBindingDefinition load(CompositeComponent parent,
+                                       ModelObject object,
+                                       XMLStreamReader reader,
+                                       DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
         String uri = reader.getAttributeValue(null, "uri");
         if (uri != null) {
             try {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java Fri Jan 12 02:14:01 2007
@@ -37,6 +37,9 @@
 import org.apache.tuscany.spi.loader.PropertyObjectFactory;
 import org.apache.tuscany.spi.services.management.TuscanyManagementService;
 
+import org.apache.tuscany.core.binding.local.LocalBindingBuilder;
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
+import org.apache.tuscany.core.binding.local.LocalBindingLoader;
 import org.apache.tuscany.core.builder.BuilderRegistryImpl;
 import org.apache.tuscany.core.builder.ConnectorImpl;
 import org.apache.tuscany.core.component.WorkContextImpl;
@@ -50,6 +53,7 @@
 import org.apache.tuscany.core.implementation.composite.CompositeLoader;
 import org.apache.tuscany.core.implementation.processor.ConstructorProcessor;
 import org.apache.tuscany.core.implementation.processor.DestroyProcessor;
+import org.apache.tuscany.core.implementation.processor.EagerInitProcessor;
 import org.apache.tuscany.core.implementation.processor.HeuristicPojoProcessor;
 import org.apache.tuscany.core.implementation.processor.ImplementationProcessorServiceImpl;
 import org.apache.tuscany.core.implementation.processor.InitProcessor;
@@ -59,15 +63,11 @@
 import org.apache.tuscany.core.implementation.processor.ResourceProcessor;
 import org.apache.tuscany.core.implementation.processor.ScopeProcessor;
 import org.apache.tuscany.core.implementation.processor.ServiceProcessor;
-import org.apache.tuscany.core.implementation.processor.EagerInitProcessor;
-import org.apache.tuscany.core.implementation.system.builder.SystemBindingBuilder;
 import org.apache.tuscany.core.implementation.system.builder.SystemComponentBuilder;
 import org.apache.tuscany.core.implementation.system.builder.SystemCompositeBuilder;
-import org.apache.tuscany.core.implementation.system.loader.SystemBindingLoader;
 import org.apache.tuscany.core.implementation.system.loader.SystemComponentTypeLoader;
 import org.apache.tuscany.core.implementation.system.loader.SystemCompositeComponentTypeLoader;
 import org.apache.tuscany.core.implementation.system.loader.SystemImplementationLoader;
-import org.apache.tuscany.core.implementation.system.model.SystemBindingDefinition;
 import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
 import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
 import org.apache.tuscany.core.loader.ComponentLoader;
@@ -82,9 +82,9 @@
 import org.apache.tuscany.host.MonitorFactory;
 
 /**
- * A default implementation of a Bootstrapper. Please see the documentation on
- * the individual methods for how the primordial components are created.
- * 
+ * A default implementation of a Bootstrapper. Please see the documentation on the individual methods for how the
+ * primordial components are created.
+ *
  * @version $Rev$ $Date$
  */
 public class DefaultBootstrapper implements Bootstrapper {
@@ -94,11 +94,9 @@
 
     /**
      * Create a default bootstrapper.
-     * 
-     * @param monitorFactory the MonitorFactory to be used to create monitors
-     *            for the primordial components
-     * @param xmlFactory the XMLInputFactory to be used by the components to
-     *            load XML artifacts
+     *
+     * @param monitorFactory    the MonitorFactory to be used to create monitors for the primordial components
+     * @param xmlFactory        the XMLInputFactory to be used by the components to load XML artifacts
      * @param managementService management service used by the runtime.
      */
     public DefaultBootstrapper(MonitorFactory monitorFactory,
@@ -111,7 +109,7 @@
 
     /**
      * Returns the MonitorFactory being used by this bootstrapper.
-     * 
+     *
      * @return the MonitorFactory being used by this bootstrapper
      */
     public MonitorFactory getMonitorFactory() {
@@ -119,11 +117,9 @@
     }
 
     /**
-     * Create the RuntimeComponent that will form the root of the component
-     * tree. Returns an new instance of a {@link DefaultRuntime} with the system
-     * and application root components initialized with default composite
-     * components.
-     * 
+     * Create the RuntimeComponent that will form the root of the component tree. Returns an new instance of a {@link
+     * DefaultRuntime} with the system and application root components initialized with default composite components.
+     *
      * @return a newly created root for the component tree
      */
     public RuntimeComponent createRuntime() {
@@ -138,9 +134,8 @@
     }
 
     /**
-     * Create primordial deployer that can be used to load the system
-     * definition.
-     * 
+     * Create primordial deployer that can be used to load the system definition.
+     *
      * @return the primordial deployer
      */
     public Deployer createDeployer() {
@@ -155,10 +150,9 @@
     }
 
     /**
-     * Create a basic ScopeRegistry containing the ScopeContainers that are
-     * available to components in the system definition. The implementation
-     * returned only support COMPOSITE scope.
-     * 
+     * Create a basic ScopeRegistry containing the ScopeContainers that are available to components in the system
+     * definition. The implementation returned only support COMPOSITE scope.
+     *
      * @param workContext the WorkContext the scopes should use
      * @return a new ScopeRegistry
      */
@@ -169,32 +163,15 @@
     }
 
     /**
-     * Create a Loader that can be used to parse an XML file containing the SCDL
-     * for the system definition. The following Implementation types are
-     * supported:
-     * <ul>
-     * <li>SystemImplementation</li>
-     * <li>SystemCompositeImplementation</li>
-     * </ul>
-     * and the following SCDL elements are supported:
-     * <ul>
-     * <li>composite</li>
-     * <li>component</li>
-     * <li>componentType</li>
-     * <li>interface.java</li>
-     * <li>property</li>
-     * <li>reference</li>
-     * <li>service</li>
-     * <li>implementation.system</li>
-     * <li>binding.system</li>
-     * </ul>
-     * Note the Java component type and the WSDL interface type are not
-     * supported.
-     * 
-     * @param propertyFactory the StAXPropertyFactory to be used for parsing
-     *            Property values
-     * @param introspector the Introspector to be used to inspect component
-     *            implementations
+     * Create a Loader that can be used to parse an XML file containing the SCDL for the system definition. The
+     * following Implementation types are supported: <ul> <li>SystemImplementation</li>
+     * <li>SystemCompositeImplementation</li> </ul> and the following SCDL elements are supported: <ul>
+     * <li>composite</li> <li>component</li> <li>componentType</li> <li>interface.java</li> <li>property</li>
+     * <li>reference</li> <li>service</li> <li>implementation.system</li> </ul> Note the Java component type and the
+     * WSDL interface type are not supported.
+     *
+     * @param propertyFactory the StAXPropertyFactory to be used for parsing Property values
+     * @param introspector    the Introspector to be used to inspect component implementations
      * @return a new StAX XML loader
      */
     public LoaderRegistry createLoader(PropertyObjectFactory propertyFactory, Introspector introspector) {
@@ -204,33 +181,32 @@
         // register component type loaders
         loaderRegistry.registerLoader(SystemImplementation.class, new SystemComponentTypeLoader(introspector));
         loaderRegistry.registerLoader(SystemCompositeImplementation.class,
-                                      new SystemCompositeComponentTypeLoader(loaderRegistry));
+            new SystemCompositeComponentTypeLoader(loaderRegistry));
 
         // register element loaders
         registerLoader(loaderRegistry, new ComponentLoader(loaderRegistry, propertyFactory));
         registerLoader(loaderRegistry, new ComponentTypeElementLoader(loaderRegistry));
         registerLoader(loaderRegistry, new CompositeLoader(loaderRegistry, null));
         registerLoader(loaderRegistry, new IncludeLoader(loaderRegistry));
-        registerLoader(loaderRegistry,
-                       new InterfaceJavaLoader(loaderRegistry, new JavaInterfaceProcessorRegistryImpl()));
+        JavaInterfaceProcessorRegistryImpl processorRegistry = new JavaInterfaceProcessorRegistryImpl();
+        registerLoader(loaderRegistry, new InterfaceJavaLoader(loaderRegistry, processorRegistry));
         registerLoader(loaderRegistry, new PropertyLoader(loaderRegistry));
         registerLoader(loaderRegistry, new ReferenceLoader(loaderRegistry));
         registerLoader(loaderRegistry, new ServiceLoader(loaderRegistry));
         registerLoader(loaderRegistry, new SystemImplementationLoader(loaderRegistry));
-        registerLoader(loaderRegistry, new SystemBindingLoader(loaderRegistry));
+        registerLoader(loaderRegistry, new LocalBindingLoader(loaderRegistry));
         return loaderRegistry;
     }
 
     /**
-     * Create new Introspector for extracting a ComponentType definition from a
-     * Java class.
-     * 
+     * Create new Introspector for extracting a ComponentType definition from a Java class.
+     *
      * @return a new Introspector
      */
     public Introspector createIntrospector(JavaInterfaceProcessorRegistry registry) {
         ImplementationProcessorService service = new ImplementationProcessorServiceImpl(registry);
-        IntrospectionRegistryImpl introspectionRegistry =
-            new IntrospectionRegistryImpl(monitorFactory.getMonitor(IntrospectionRegistryImpl.Monitor.class));
+        IntrospectionRegistryImpl.Monitor monitor = monitorFactory.getMonitor(IntrospectionRegistryImpl.Monitor.class);
+        IntrospectionRegistryImpl introspectionRegistry = new IntrospectionRegistryImpl(monitor);
         introspectionRegistry.registerProcessor(new ConstructorProcessor(service));
         introspectionRegistry.registerProcessor(new DestroyProcessor());
         introspectionRegistry.registerProcessor(new InitProcessor());
@@ -246,9 +222,8 @@
     }
 
     /**
-     * Create a new Connector that can be used to wire primordial components
-     * together.
-     * 
+     * Create a new Connector that can be used to wire primordial components together.
+     *
      * @return a new Connector
      */
     public Connector createConnector() {
@@ -256,24 +231,21 @@
     }
 
     /**
-     * Helper method for registering a loader with the registry. The Loader is
-     * registered once for the QName returned by its
-     * {@link LoaderExtension#getXMLType()} method.
-     * 
+     * Helper method for registering a loader with the registry. The Loader is registered once for the QName returned by
+     * its {@link LoaderExtension#getXMLType()} method.
+     *
      * @param registry the LoaderRegistry to register with
-     * @param loader the Loader to register
+     * @param loader   the Loader to register
      */
     protected void registerLoader(LoaderRegistry registry, LoaderExtension<?> loader) {
         registry.registerLoader(loader.getXMLType(), loader);
     }
 
     /**
-     * Create a Builder that can be used to build the components in the system
-     * definition. The default implementation only supports implementations from
-     * the system programming model.
-     * 
-     * @param scopeRegistry the ScopeRegistry defining the component scopes that
-     *            will be supported
+     * Create a Builder that can be used to build the components in the system definition. The default implementation
+     * only supports implementations from the system programming model.
+     *
+     * @param scopeRegistry the ScopeRegistry defining the component scopes that will be supported
      * @return a new Builder
      */
     private Builder createBuilder(ScopeRegistry scopeRegistry) {
@@ -283,7 +255,7 @@
             new SystemCompositeBuilder(builderRegistry, createConnector(), managementService);
         builderRegistry.register(SystemCompositeImplementation.class, builder);
         builderRegistry.register(SystemImplementation.class, new SystemComponentBuilder());
-        builderRegistry.register(SystemBindingDefinition.class, new SystemBindingBuilder());
+        builderRegistry.register(LocalBindingDefinition.class, new LocalBindingBuilder());
         return builderRegistry;
     }
 

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Fri Jan 12 02:14:01 2007
@@ -52,6 +52,7 @@
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.wire.WireService;
 
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
 import org.apache.tuscany.core.implementation.composite.ReferenceImpl;
 import org.apache.tuscany.core.implementation.composite.ServiceImpl;
 
@@ -136,6 +137,14 @@
                          DeploymentContext deploymentContext) throws BuilderException {
         String name = boundServiceDefinition.getName();
         ServiceContract<?> serviceContract = boundServiceDefinition.getServiceContract();
+        if (boundServiceDefinition.getBindings().isEmpty()) {
+            // if no bindings are configured, default to the local binding.
+            // this should be changed to allow runtime selection
+            if (boundServiceDefinition.getBindings().isEmpty()) {
+                // TODO JFM implement capability for the runtime to choose a binding
+                boundServiceDefinition.addBinding(new LocalBindingDefinition());
+            }
+        }
         boolean system = parent.isSystem();
         URI targetUri = boundServiceDefinition.getTarget();
         Service service = new ServiceImpl(name, parent, serviceContract, targetUri, system);
@@ -166,9 +175,17 @@
     public Reference build(CompositeComponent parent,
                            BoundReferenceDefinition referenceDefinition,
                            DeploymentContext context) throws BuilderException {
-
         String name = referenceDefinition.getName();
         ServiceContract<?> contract = referenceDefinition.getServiceContract();
+        if (referenceDefinition.getBindings().isEmpty()) {
+            // if no bindings are configured, default to the local binding.
+            // this should be changed to allow runtime selection
+            if (referenceDefinition.getBindings().isEmpty()) {
+                // TODO JFM implement capability for the runtime to choose a binding
+                referenceDefinition.addBinding(new LocalBindingDefinition());
+            }
+        }
+
         Reference reference = new ReferenceImpl(name, parent, contract);
         for (BindingDefinition bindingDefinition : referenceDefinition.getBindings()) {
             Class<?> bindingClass = bindingDefinition.getClass();

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java Fri Jan 12 02:14:01 2007
@@ -32,6 +32,7 @@
 import org.apache.tuscany.spi.component.TargetInitializationException;
 import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.extension.AtomicComponentExtension;
+import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.wire.OutboundWire;
 
 import org.apache.tuscany.core.injection.ArrayMultiplicityObjectFactory;
@@ -116,6 +117,12 @@
                 throw new TargetDestructionException("Error destroying component instance", getName(), e);
             }
         }
+    }
+
+    public boolean isOptimizable() {
+        // stateless implementations that require a destroy callback cannot be optimized since the callback is
+        // performed by the JavaTargetInvoker
+        return !(getScope() == Scope.STATELESS && isDestroyable());
     }
 
     public Object getTargetInstance() throws TargetResolutionException {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java Fri Jan 12 02:14:01 2007
@@ -55,7 +55,6 @@
 import org.apache.tuscany.spi.loader.UnrecognizedElementException;
 import org.apache.tuscany.spi.model.BindingDefinition;
 import org.apache.tuscany.spi.model.BoundReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.ComponentType;
 import org.apache.tuscany.spi.model.CompositeComponentType;
@@ -157,28 +156,29 @@
                                 }
                             }
 
-                            for (ServiceDefinition serviceDefinition : type.getServices().values()) {
-                                if (serviceDefinition instanceof BoundServiceDefinition) {
-                                    BoundServiceDefinition bsd = (BoundServiceDefinition) serviceDefinition;
-                                    if (bsd.getBindings().isEmpty()) {
-                                        if (bsd.getBindings().isEmpty()) {
-                                            // TODO JFM implement capability for the runtime to choose a binding
-                                            bsd.addBinding(new LocalBindingDefinition());
-                                        }
-                                    }
-                                }
-                            }
-                            for (ReferenceDefinition referenceDefinition : type.getReferences().values()) {
-                                if (referenceDefinition instanceof BoundReferenceDefinition) {
-                                    BoundReferenceDefinition bsd = (BoundReferenceDefinition) referenceDefinition;
-                                    if (bsd.getBindings().isEmpty()) {
-                                        if (bsd.getBindings().isEmpty()) {
-                                            // TODO JFM implement capability for the runtime to choose a binding
-                                            bsd.addBinding(new LocalBindingDefinition());
-                                        }
-                                    }
-                                }
-                            }
+                            // xcv
+//                            for (ServiceDefinition serviceDefinition : type.getServices().values()) {
+//                                if (serviceDefinition instanceof BoundServiceDefinition) {
+//                                    BoundServiceDefinition bsd = (BoundServiceDefinition) serviceDefinition;
+//                                    if (bsd.getBindings().isEmpty()) {
+//                                        if (bsd.getBindings().isEmpty()) {
+//                                            // TODO JFM implement capability for the runtime to choose a binding
+//                                            bsd.addBinding(new LocalBindingDefinition());
+//                                        }
+//                                    }
+//                                }
+//                            }
+//                            for (ReferenceDefinition referenceDefinition : type.getReferences().values()) {
+//                                if (referenceDefinition instanceof BoundReferenceDefinition) {
+//                                    BoundReferenceDefinition bsd = (BoundReferenceDefinition) referenceDefinition;
+//                                    if (bsd.getBindings().isEmpty()) {
+//                                        if (bsd.getBindings().isEmpty()) {
+//                                            // TODO JFM implement capability for the runtime to choose a binding
+//                                            bsd.addBinding(new LocalBindingDefinition());
+//                                        }
+//                                    }
+//                                }
+//                            }
                             validate(componentDefinition);
                             return componentDefinition;
                         }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java Fri Jan 12 02:14:01 2007
@@ -22,11 +22,10 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.SCAObject;
 import static org.apache.tuscany.spi.idl.java.JavaIDLUtils.findMethod;
 import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.Interceptor;
@@ -127,14 +126,7 @@
      */
     public static boolean isOptimizable(InboundWire wire) {
         SCAObject container = wire.getContainer();
-        if (!(container instanceof AtomicComponent)) {
-            // optimize only Atomic targets
-            // JFM TODO make more generalizable
-            return false;
-        }
-        if (container.getScope() == Scope.STATELESS && ((AtomicComponent) container).isDestroyable()) {
-            //Optimizations on stateless targets are not performed if they receive destroy events since a destruction
-            // notification must be given through a proxy
+        if ((container instanceof Component) && !((Component) container).isOptimizable()) {
             return false;
         }
         for (InboundInvocationChain chain : wire.getInvocationChains().values()) {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl Fri Jan 12 02:14:01 2007
@@ -27,14 +27,6 @@
            name="org.apache.tuscany.core.SystemImplementation">
 
     <!-- System implementation type -->
-    <component name="system.bindingLoader">
-        <system:implementation.system class="org.apache.tuscany.core.implementation.system.loader.SystemBindingLoader"/>
-    </component>
-    
-    <component name="system.bindingBuilder">
-        <system:implementation.system class="org.apache.tuscany.core.implementation.system.builder.SystemBindingBuilder"/>
-    </component>
-
     <component name="system.componentTypeLoader">
         <system:implementation.system class="org.apache.tuscany.core.implementation.system.loader.SystemComponentTypeLoader"/>
     </component>

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java Fri Jan 12 02:14:01 2007
@@ -97,6 +97,7 @@
         // create the target
         AtomicComponent target = EasyMock.createMock(AtomicComponent.class);
         EasyMock.expect(target.getName()).andReturn(TARGET).anyTimes();
+        EasyMock.expect(target.isOptimizable()).andReturn(false).anyTimes();
         EasyMock.expect(target.getScope()).andReturn(Scope.COMPOSITE).atLeastOnce();
         EasyMock.expect(target.isSystem()).andReturn(false).atLeastOnce();
         target.getInboundWire(EasyMock.eq(TARGET_SERVICE));

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java?view=auto&rev=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java Fri Jan 12 02:14:01 2007
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.core.builder;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.spi.builder.BuilderRegistry;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
+import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.component.ServiceBinding;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.model.BindingDefinition;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
+import org.apache.tuscany.spi.model.BoundServiceDefinition;
+import org.apache.tuscany.spi.model.Multiplicity;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.binding.local.LocalBindingBuilder;
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
+import org.apache.tuscany.core.binding.local.LocalReferenceBinding;
+import org.apache.tuscany.core.binding.local.LocalServiceBinding;
+import org.apache.tuscany.core.deployer.RootDeploymentContext;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class BuilderRegistryNoBindingsTestCase extends TestCase {
+    private DeploymentContext deploymentContext;
+    private CompositeComponent parent;
+    private BuilderRegistry registry;
+
+    public void testNoServiceBindings() throws Exception {
+        ServiceBinding binding = EasyMock.createNiceMock(ServiceBinding.class);
+        EasyMock.replay(binding);
+        List<BindingDefinition> bindingDefs = new ArrayList<BindingDefinition>();
+        BoundServiceDefinition definition = new BoundServiceDefinition("foo", null, bindingDefs, false, new URI("foo"));
+        Service service = registry.build(parent, definition, deploymentContext);
+        assertEquals(1, service.getServiceBindings().size());
+        assertTrue(service.getServiceBindings().get(0) instanceof LocalServiceBinding);
+    }
+
+    public void testReferenceBindingBuilderDispatch() throws Exception {
+        ReferenceBinding binding = EasyMock.createNiceMock(ReferenceBinding.class);
+        EasyMock.replay(binding);
+        List<BindingDefinition> bindingDefs = new ArrayList<BindingDefinition>();
+        BoundReferenceDefinition definition =
+            new BoundReferenceDefinition("foo", null, bindingDefs, Multiplicity.ONE_ONE);
+        Reference reference = registry.build(parent, definition, deploymentContext);
+        assertEquals(1, reference.getReferenceBindings().size());
+        assertTrue(reference.getReferenceBindings().get(0) instanceof LocalReferenceBinding);
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        deploymentContext = new RootDeploymentContext(null, null, null, null);
+        parent = EasyMock.createNiceMock(CompositeComponent.class);
+        EasyMock.replay(parent);
+        registry = new BuilderRegistryImpl(null, null);
+        registry.register(LocalBindingDefinition.class, new LocalBindingBuilder());
+    }
+
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java Fri Jan 12 02:14:01 2007
@@ -104,17 +104,15 @@
         EasyMock.verify(outboundWire);
     }
 
-    public void testOutboundToInboundNoOptimizationStatelessWithNoDestructor() throws Exception {
+    public void testOutboundToInboundNoOptimizationAtomic() throws Exception {
         AtomicComponent container = EasyMock.createNiceMock(AtomicComponent.class);
         EasyMock.expect(container.isSystem()).andReturn(false);
         EasyMock.expect(container.getScope()).andReturn(Scope.STATELESS);
-        EasyMock.expect(container.isDestroyable()).andReturn(false);
+        EasyMock.expect(container.isOptimizable()).andReturn(false);
         EasyMock.replay(container);
         InboundWire inboundWire = new InboundWireImpl();
         inboundWire.setContainer(container);
         OutboundWire outboundWire = EasyMock.createMock(OutboundWire.class);
-        outboundWire.setTargetWire(EasyMock.eq(inboundWire));
-        outboundWire.setOptimizable(EasyMock.eq(true));
         EasyMock.expect(outboundWire.getServiceContract()).andReturn(contract);
         EasyMock.expect(outboundWire.getContainer()).andReturn(container).atLeastOnce();
         outboundWire.getInvocationChains();
@@ -135,6 +133,8 @@
         inboundWire.setContainer(container);
         OutboundWire outboundWire = EasyMock.createMock(OutboundWire.class);
         EasyMock.expect(outboundWire.getServiceContract()).andReturn(contract);
+        outboundWire.setTargetWire(EasyMock.eq(inboundWire));
+        outboundWire.setOptimizable(EasyMock.eq(true));
         outboundWire.getInvocationChains();
         EasyMock.expectLastCall().andReturn(Collections.emptyMap()).atLeastOnce();
         outboundWire.getTargetCallbackInvocationChains();

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java Fri Jan 12 02:14:01 2007
@@ -19,8 +19,8 @@
 package org.apache.tuscany.core.deployer;
 
 import java.net.URL;
-import java.util.Map;
 import java.util.Collection;
+import java.util.Map;
 import javax.xml.stream.XMLInputFactory;
 
 import org.apache.tuscany.spi.bootstrap.ComponentNames;
@@ -29,6 +29,7 @@
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.model.BindingDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.ComponentType;
@@ -39,12 +40,10 @@
 import org.apache.tuscany.spi.model.PropertyValue;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
-import org.apache.tuscany.spi.model.BindingDefinition;
 
 import junit.framework.TestCase;
 import org.apache.tuscany.core.bootstrap.Bootstrapper;
 import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
-import org.apache.tuscany.core.implementation.system.model.SystemBindingDefinition;
 import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
 import org.apache.tuscany.core.mock.component.BasicInterface;
 import org.apache.tuscany.core.monitor.NullMonitorFactory;
@@ -85,9 +84,7 @@
         assertEquals("service", serviceDefinition.getName());
         assertEquals(BasicInterface.class, serviceDefinition.getServiceContract().getInterfaceClass());
         Collection<BindingDefinition> bindings = serviceDefinition.getBindings();
-        for (BindingDefinition binding : bindings) {
-            assertTrue(binding instanceof SystemBindingDefinition);
-        }
+        assertTrue(bindings.isEmpty());
 
         // check parse of <component>
         Map<String, ComponentDefinition<? extends Implementation<?>>> components = composite.getDeclaredComponents();

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java Fri Jan 12 02:14:01 2007
@@ -22,6 +22,7 @@
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
@@ -64,6 +65,45 @@
         EasyMock.verify(invoker);
     }
 
+    public void testOptimizable() throws Exception {
+        PojoConfiguration config = new PojoConfiguration();
+        config.setInstanceFactory(factory);
+        TestAtomicComponent component = new TestAtomicComponent(config);
+        assertTrue(component.isOptimizable());
+    }
+
+    @SuppressWarnings({"unchecked"})
+    public void testDestroyableButOptimizable() throws Exception {
+        PojoConfiguration config = new PojoConfiguration();
+        config.setInstanceFactory(factory);
+        EventInvoker<Object> invoker = EasyMock.createMock(EventInvoker.class);
+        invoker.invokeEvent(EasyMock.notNull());
+        EasyMock.replay(invoker);
+        config.setDestroyInvoker(invoker);
+        TestAtomicComponent component = new TestAtomicComponent(config);
+        assertTrue(component.isOptimizable());
+    }
+
+    @SuppressWarnings({"unchecked"})
+    public void testStatelessOptimizable() throws Exception {
+        PojoConfiguration config = new PojoConfiguration();
+        config.setInstanceFactory(factory);
+        TestStatelessAtomicComponent component = new TestStatelessAtomicComponent(config);
+        assertTrue(component.isOptimizable());
+    }
+
+    @SuppressWarnings({"unchecked"})
+    public void testNotOptimizable() throws Exception {
+        PojoConfiguration config = new PojoConfiguration();
+        config.setInstanceFactory(factory);
+        EventInvoker<Object> invoker = EasyMock.createMock(EventInvoker.class);
+        invoker.invokeEvent(EasyMock.notNull());
+        EasyMock.replay(invoker);
+        config.setDestroyInvoker(invoker);
+        TestStatelessAtomicComponent component = new TestStatelessAtomicComponent(config);
+        assertFalse(component.isOptimizable());
+    }
+
     protected void setUp() throws Exception {
         super.setUp();
         factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor());
@@ -73,6 +113,30 @@
 
         public TestAtomicComponent(PojoConfiguration configuration) {
             super(configuration);
+        }
+
+        public Scope getScope() {
+            return Scope.COMPOSITE;
+        }
+
+        protected ObjectFactory<?> createWireFactory(Class<?> interfaze, OutboundWire wire) {
+            return null;
+        }
+
+        public TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire)
+            throws TargetInvokerCreationException {
+            return null;
+        }
+    }
+
+    private class TestStatelessAtomicComponent extends PojoAtomicComponent {
+
+        public TestStatelessAtomicComponent(PojoConfiguration configuration) {
+            super(configuration);
+        }
+
+        public Scope getScope() {
+            return Scope.STATELESS;
         }
 
         protected ObjectFactory<?> createWireFactory(Class<?> interfaze, OutboundWire wire) {

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java Fri Jan 12 02:14:01 2007
@@ -32,6 +32,7 @@
 import org.apache.tuscany.spi.implementation.java.JavaMappedReference;
 import org.apache.tuscany.spi.implementation.java.JavaMappedService;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.CompositeComponentType;
@@ -41,10 +42,11 @@
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.ServiceDefinition;
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.wire.WireService;
 
 import junit.framework.TestCase;
+import org.apache.tuscany.core.binding.local.LocalBindingBuilder;
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
 import org.apache.tuscany.core.builder.BuilderRegistryImpl;
 import org.apache.tuscany.core.component.scope.CompositeScopeContainer;
 import org.apache.tuscany.core.deployer.RootDeploymentContext;
@@ -77,6 +79,7 @@
         jBuilder.setWireService(wireService);
         builderRegistry.register(JavaImplementation.class, jBuilder);
         builderRegistry.register(CompositeImplementation.class, builder);
+        builderRegistry.register(LocalBindingDefinition.class, new LocalBindingBuilder());
         builder.setBuilderRegistry(builderRegistry);
         CompositeComponent component =
             (CompositeComponent) builder.build(parent, createTopComponentDef(), deploymentContext);
@@ -201,5 +204,5 @@
         container.start();
         deploymentContext = new RootDeploymentContext(null, null, container, null);
     }
-    
+
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java Fri Jan 12 02:14:01 2007
@@ -28,15 +28,14 @@
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.ModelObject;
 import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 
 import junit.framework.TestCase;
-import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
 import org.apache.tuscany.core.implementation.java.JavaImplementation;
 import org.easymock.EasyMock;
 
@@ -52,12 +51,12 @@
 
     public void testNoServiceBinding() throws Exception {
         loader.load(null, null, reader, null);
-        assert service.getBindings().get(0) instanceof LocalBindingDefinition;
+        assert service.getBindings().isEmpty();
     }
 
     public void testNoReferenceBinding() throws Exception {
         loader.load(null, null, reader, null);
-        assert reference.getBindings().get(0) instanceof LocalBindingDefinition;
+        assert reference.getBindings().isEmpty();
     }
 
     protected void setUp() throws Exception {

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java Fri Jan 12 02:14:01 2007
@@ -24,7 +24,6 @@
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.model.Operation;
 import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
-import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.Interceptor;
@@ -70,6 +69,7 @@
 
     public void testTargetWireInterceptorOptimization() throws Exception {
         AtomicComponent component = EasyMock.createNiceMock(AtomicComponent.class);
+        EasyMock.expect(component.isOptimizable()).andReturn(true);
         EasyMock.replay(component);
         InboundWire wire = new InboundWireImpl();
         wire.setContainer(component);
@@ -80,54 +80,16 @@
 
     }
 
-    public void testTargetWireOptimizationDestroyableButNotStateless() throws Exception {
-        AtomicComponent component = EasyMock.createNiceMock(AtomicComponent.class);
-        EasyMock.expect(component.isDestroyable()).andReturn(true);
-        EasyMock.expect(component.getScope()).andReturn(Scope.COMPOSITE);
-        EasyMock.replay(component);
-        InboundWire wire = new InboundWireImpl();
-        wire.setContainer(component);
-        InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
-        chain.addInterceptor(new OptimizableInterceptor());
-        wire.addInvocationChain(operation, chain);
-        assertTrue(WireUtils.isOptimizable(wire));
-    }
-
-    public void testTargetWireOptimizationDestroyableAndStateless() throws Exception {
-        AtomicComponent component = EasyMock.createNiceMock(AtomicComponent.class);
-        EasyMock.expect(component.isDestroyable()).andReturn(true);
-        EasyMock.expect(component.getScope()).andReturn(Scope.STATELESS);
-        EasyMock.replay(component);
-        InboundWire wire = new InboundWireImpl();
-        wire.setContainer(component);
-        InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
-        chain.addInterceptor(new OptimizableInterceptor());
-        wire.addInvocationChain(operation, chain);
-        assertFalse(WireUtils.isOptimizable(wire));
-    }
-
-    public void testTargetWireOptimizationStatelessNotDestroyable() throws Exception {
-        AtomicComponent component = EasyMock.createNiceMock(AtomicComponent.class);
-        EasyMock.expect(component.isDestroyable()).andReturn(false);
-        EasyMock.expect(component.getScope()).andReturn(Scope.STATELESS);
-        EasyMock.replay(component);
-        InboundWire wire = new InboundWireImpl();
-        wire.setContainer(component);
-        InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
-        chain.addInterceptor(new OptimizableInterceptor());
-        wire.addInvocationChain(operation, chain);
-        assertTrue(WireUtils.isOptimizable(wire));
-    }
-
     public void testTargetWireNoOptimizationNonAtomicContainer() throws Exception {
         Component component = EasyMock.createNiceMock(Component.class);
+        EasyMock.expect(component.isOptimizable()).andReturn(true);
         EasyMock.replay(component);
         InboundWire wire = new InboundWireImpl();
         wire.setContainer(component);
         InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
         chain.addInterceptor(new OptimizableInterceptor());
         wire.addInvocationChain(operation, chain);
-        assertFalse(WireUtils.isOptimizable(wire));
+        assertTrue(WireUtils.isOptimizable(wire));
     }
 
     public void testTargetWireNonInterceptorOptimization() throws Exception {

Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl Fri Jan 12 02:14:01 2007
@@ -27,7 +27,6 @@
 
     <service name="service2" >
         <interface.java interface="org.apache.tuscany.core.mock.component.BasicInterface"/>
-        <system:binding.system/>
         <reference>component2</reference>
     </service>
     

Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl Fri Jan 12 02:14:01 2007
@@ -22,7 +22,6 @@
            name="boot1">
     <service name="service" >
         <interface.java interface="org.apache.tuscany.core.mock.component.BasicInterface"/>
-        <system:binding.system/>
         <reference>component</reference>
     </service>
 

Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl Fri Jan 12 02:14:01 2007
@@ -28,7 +28,6 @@
     <!-- expose Deployer API as a service -->
     <service name="deployer" >
         <interface.java interface="org.apache.tuscany.spi.deployer.Deployer"/>
-        <system:binding.system/>
         <reference>deployerImpl</reference>
     </service>
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java Fri Jan 12 02:14:01 2007
@@ -43,6 +43,27 @@
     void setScopeContainer(ScopeContainer scopeContainer);
 
     /**
+     * Returns the default property values associated with the component.
+     *
+     * @return default property values associated with the component.
+     */
+    Map<String, PropertyValue<?>> getDefaultPropertyValues();
+
+    /**
+     * Sets the default property values associated with the component.
+     *
+     * @param defaultPropertyValues Default property values associated with the component.
+     */
+    void setDefaultPropertyValues(Map<String, PropertyValue<?>> defaultPropertyValues);
+
+    /**
+     * Returns true if invocation dispatching can be optimized, i.e. invocation chains are not required
+     *
+     * @return true if invocation dispatching can be optimized, i.e. invocation chains are not required
+     */
+    boolean isOptimizable();
+
+    /**
      * Returns the wire associated with the given service name or null if not found.
      *
      * @return the wire associated with the given service name or null if not found.
@@ -75,19 +96,5 @@
      */
     TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire)
         throws TargetInvokerCreationException;
-
-    /**
-     * Returns the default property values associated with the component.
-     *
-     * @return default property values associated with the component.
-     */
-    Map<String, PropertyValue<?>> getDefaultPropertyValues();
-
-    /**
-     * Sets the default property values associated with the component.
-     *
-     * @param defaultPropertyValues Default property values associated with the component.
-     */
-    void setDefaultPropertyValues(Map<String, PropertyValue<?>> defaultPropertyValues);
 
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java Fri Jan 12 02:14:01 2007
@@ -66,8 +66,7 @@
     Map<Object, Object> getExtensions();
 
     /**
-     * Called to signal that the composite should perform any required steps prior to registration with its parent such
-     * as wiring of its children
+     * Called to signal that the composite should perform any initizalization
      */
     void prepare() throws PrepareException;
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java Fri Jan 12 02:14:01 2007
@@ -59,4 +59,7 @@
         this.defaultPropertyValues = defaultPropertyValues;
     }
 
+    public boolean isOptimizable() {
+        return false;
+    }
 }

Modified: incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl (original)
+++ incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl Fri Jan 12 02:14:01 2007
@@ -27,7 +27,6 @@
 	<service name="TransactionManagerService">
         <interface.java interface = "javax.transaction.TransactionManager"/>
         <reference>TransactionManager</reference>
-	    <system:binding.system/> 
 	</service>
 	
     <dependency xmlns="http://tuscany.apache.org/xmlns/1.0-SNAPSHOT">



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