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/13 13:34:41 UTC

svn commit: r495883 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/bootstrap/ main/java/org/apache/tuscany/core/implementation/composite/ main/java/org/apache/tuscany/core/implementation/system/builder/ main/resourc...

Author: jmarino
Date: Sat Jan 13 04:34:40 2007
New Revision: 495883

URL: http://svn.apache.org/viewvc?view=rev&rev=495883
Log:
move common composite builder code to an abstract class

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/SystemCompositeBuilder.java   (contents, props changed)
      - copied, changed from r495848, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/SystemComponentBuilderTestCase.java   (contents, props changed)
      - copied, changed from r495848, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderTestCase.java
Removed:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderTestCase.java
Modified:
    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/implementation/composite/CompositeBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl

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=495883&r1=495882&r2=495883
==============================================================================
--- 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 Sat Jan 13 04:34:40 2007
@@ -64,7 +64,7 @@
 import org.apache.tuscany.core.implementation.processor.ScopeProcessor;
 import org.apache.tuscany.core.implementation.processor.ServiceProcessor;
 import org.apache.tuscany.core.implementation.system.builder.SystemComponentBuilder;
-import org.apache.tuscany.core.implementation.system.builder.SystemCompositeBuilder;
+import org.apache.tuscany.core.implementation.composite.SystemCompositeBuilder;
 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;

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java?view=auto&rev=495883
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java Sat Jan 13 04:34:40 2007
@@ -0,0 +1,71 @@
+package org.apache.tuscany.core.implementation.composite;
+
+import org.apache.tuscany.spi.builder.BuilderException;
+import org.apache.tuscany.spi.builder.BuilderInstantiationException;
+import org.apache.tuscany.spi.component.Component;
+import org.apache.tuscany.spi.component.ComponentRegistrationException;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
+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;
+import org.apache.tuscany.spi.model.Implementation;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceDefinition;
+
+/**
+ * Abstract builder for composites
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class AbstractCompositeBuilder<T extends Implementation<CompositeComponentType>>
+    extends ComponentBuilderExtension<T> {
+
+    public CompositeComponent build(CompositeComponent parent,
+                                    CompositeComponent component,
+                                    CompositeComponentType<?, ?, ?> componentType,
+                                    DeploymentContext deploymentContext) throws BuilderException {
+
+        for (ComponentDefinition<? extends Implementation<?>> definition : componentType.getComponents().values()) {
+            try {
+                Component child = builderRegistry.build(component, definition, deploymentContext);
+                component.register(child);
+            } catch (ComponentRegistrationException e) {
+                throw new BuilderInstantiationException("Error registering component", e);
+            }
+        }
+        for (ServiceDefinition definition : componentType.getServices().values()) {
+            try {
+                if (definition instanceof BoundServiceDefinition) {
+                    BoundServiceDefinition bsd = (BoundServiceDefinition) definition;
+                    Service service = builderRegistry.build(component, bsd, deploymentContext);
+                    component.register(service);
+                } else {
+                    throw new UnsupportedOperationException();
+                }
+            } catch (ComponentRegistrationException e) {
+                throw new BuilderInstantiationException("Error registering service", e);
+            }
+        }
+        for (ReferenceDefinition definition : componentType.getReferences().values()) {
+            try {
+                if (definition instanceof BoundReferenceDefinition) {
+                    BoundReferenceDefinition brd = (BoundReferenceDefinition) definition;
+                    Reference child = builderRegistry.build(component, brd, deploymentContext);
+                    component.register(child);
+                } else {
+                    throw new UnsupportedOperationException();
+                }
+            } catch (ComponentRegistrationException e) {
+                throw new BuilderInstantiationException("Error registering reference", e);
+            }
+        }
+        component.getExtensions().putAll(componentType.getExtensions());
+        return component;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java?view=diff&rev=495883&r1=495882&r2=495883
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java Sat Jan 13 04:34:40 2007
@@ -19,29 +19,19 @@
 package org.apache.tuscany.core.implementation.composite;
 
 import org.apache.tuscany.spi.builder.BuilderException;
-import org.apache.tuscany.spi.builder.BuilderInstantiationException;
 import org.apache.tuscany.spi.component.Component;
-import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Reference;
-import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
-import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
-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;
 import org.apache.tuscany.spi.model.CompositeImplementation;
-import org.apache.tuscany.spi.model.Implementation;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
-import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
  * Instantiates a composite component from an assembly definition
  *
  * @version $Rev$ $Date$
  */
-public class CompositeBuilder extends ComponentBuilderExtension<CompositeImplementation> {
+public class CompositeBuilder extends AbstractCompositeBuilder<CompositeImplementation> {
 
     public Component build(CompositeComponent parent,
                            ComponentDefinition<CompositeImplementation> componentDefinition,
@@ -51,42 +41,7 @@
         String name = componentDefinition.getName();
         CompositeComponentImpl component = new CompositeComponentImpl(name, parent, connector, null);
 
-        for (ComponentDefinition<? extends Implementation<?>> definition : componentType.getComponents().values()) {
-            try {
-                Component child = builderRegistry.build(component, definition, deploymentContext);
-                component.register(child);
-            } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering component", e);
-            }
-        }
-        for (ServiceDefinition definition : componentType.getServices().values()) {
-            try {
-                if (definition instanceof BoundServiceDefinition) {
-                    BoundServiceDefinition bsd = (BoundServiceDefinition) definition;
-                    Service service = builderRegistry.build(component, bsd, deploymentContext);
-                    component.register(service);
-                } else {
-                    throw new UnsupportedOperationException();
-                }
-            } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering service", e);
-            }
-        }
-        for (ReferenceDefinition definition : componentType.getReferences().values()) {
-            try {
-                if (definition instanceof BoundReferenceDefinition) {
-                    BoundReferenceDefinition brd = (BoundReferenceDefinition) definition;
-                    Reference child = builderRegistry.build(component, brd, deploymentContext);
-                    component.register(child);
-                } else {
-                    throw new UnsupportedOperationException();
-                }
-            } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering reference", e);
-            }
-        }
-        component.getExtensions().putAll(componentType.getExtensions());
-        return component;
+        return build(parent, component, componentType, deploymentContext);
     }
 
     protected Class<CompositeImplementation> getImplementationType() {

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/SystemCompositeBuilder.java (from r495848, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/SystemCompositeBuilder.java?view=diff&rev=495883&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java&r1=495848&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/SystemCompositeBuilder.java&r2=495883
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/SystemCompositeBuilder.java Sat Jan 13 04:34:40 2007
@@ -16,37 +16,25 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.implementation.system.builder;
-
-import java.util.ArrayList;
-import java.util.List;
+package org.apache.tuscany.core.implementation.composite;
 
 import org.apache.tuscany.spi.builder.BuilderException;
-import org.apache.tuscany.spi.builder.BuilderInstantiationException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.builder.Connector;
-import org.apache.tuscany.spi.component.Component;
-import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
-import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.CompositeComponentType;
-import org.apache.tuscany.spi.model.Implementation;
-import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.services.management.TuscanyManagementService;
 
-import org.apache.tuscany.core.implementation.composite.CompositeComponentImpl;
 import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
 
 /**
  * Produces system composite components by evaluating an assembly.
- * 
+ *
  * @version $Rev$ $Date$
  */
-public class SystemCompositeBuilder extends ComponentBuilderExtension<SystemCompositeImplementation> {
+public class SystemCompositeBuilder extends AbstractCompositeBuilder<SystemCompositeImplementation> {
     private TuscanyManagementService managementService;
 
     public SystemCompositeBuilder() {
@@ -60,62 +48,15 @@
         this.managementService = managementService;
     }
 
-    @SuppressWarnings("unchecked")
-    public Component build(CompositeComponent parent,
-                           ComponentDefinition<SystemCompositeImplementation> componentDefinition,
-                           DeploymentContext deploymentContext) throws BuilderException {
+    public CompositeComponent build(CompositeComponent parent,
+                                    ComponentDefinition<SystemCompositeImplementation> componentDefinition,
+                                    DeploymentContext deploymentContext) throws BuilderException {
         SystemCompositeImplementation impl = componentDefinition.getImplementation();
         CompositeComponentType<?, ?, ?> componentType = impl.getComponentType();
-        // create lists of all components and serviceBindings in this composite
-        List<ComponentDefinition<? extends Implementation<?>>> allComponents =
-            new ArrayList<ComponentDefinition<? extends Implementation<?>>>();
-        allComponents.addAll(componentType.getComponents().values());
-
-        List<BoundServiceDefinition> allBoundServices = new ArrayList<BoundServiceDefinition>();
-        for (ServiceDefinition serviceDefinition : componentType.getServices().values()) {
-            if (serviceDefinition instanceof BoundServiceDefinition) {
-                BoundServiceDefinition boundService = (BoundServiceDefinition)serviceDefinition;
-                allBoundServices.add(boundService);
-            }
-        }
-
-        // create the composite component
         String name = componentDefinition.getName();
         CompositeComponent component = new CompositeComponentImpl(name, parent, connector, true);
         component.setManagementService(managementService);
-        for (ComponentDefinition<? extends Implementation> childComponentDefinition : allComponents) {
-            Component child;
-            try {
-                child = builderRegistry.build(component, childComponentDefinition, deploymentContext);
-            } catch (BuilderException e) {
-                e.addContextName(component.getName());
-                e.addContextName(name);
-                e.addContextName(parent.getName());
-                throw e;
-            }
-            try {
-                component.register(child);
-            } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering component", e);
-            }
-        }
-
-        for (BoundServiceDefinition serviceDefinition : allBoundServices) {
-            SCAObject object;
-            try {
-                object = builderRegistry.build(component, serviceDefinition, deploymentContext);
-            } catch (BuilderException e) {
-                e.addContextName(serviceDefinition.getName());
-                e.addContextName(name);
-                e.addContextName(parent.getName());
-                throw e;
-            }
-            try {
-                component.register(object);
-            } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering service", e);
-            }
-        }
+        build(parent, component, componentType, deploymentContext);
         return component;
     }
 

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/SystemCompositeBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/SystemCompositeBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

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=495883&r1=495882&r2=495883
==============================================================================
--- 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 Sat Jan 13 04:34:40 2007
@@ -41,6 +41,6 @@
         <system:implementation.system class="org.apache.tuscany.core.implementation.system.builder.SystemComponentBuilder"/>
     </component>
     <component name="system.compositeBuilder">
-        <system:implementation.system class="org.apache.tuscany.core.implementation.system.builder.SystemCompositeBuilder"/>
+        <system:implementation.system class="org.apache.tuscany.core.implementation.composite.SystemCompositeBuilder"/>
     </component>
 </composite>

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/SystemComponentBuilderTestCase.java (from r495848, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/SystemComponentBuilderTestCase.java?view=diff&rev=495883&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderTestCase.java&r1=495848&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/SystemComponentBuilderTestCase.java&r2=495883
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/SystemComponentBuilderTestCase.java Sat Jan 13 04:34:40 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.implementation.system.builder;
+package org.apache.tuscany.core.implementation.composite;
 
 import java.lang.reflect.Method;
 
@@ -37,6 +37,7 @@
 import org.apache.tuscany.core.component.event.CompositeStop;
 import org.apache.tuscany.core.component.scope.CompositeScopeContainer;
 import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
+import org.apache.tuscany.core.implementation.system.builder.SystemComponentBuilder;
 import org.apache.tuscany.core.injection.SingletonObjectFactory;
 import org.easymock.EasyMock;
 

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

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



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