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 2006/09/14 02:54:51 UTC

svn commit: r443176 - in /incubator/tuscany/java/sca: containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/ kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ kernel/core/src/main/java/org/apache/t...

Author: rfeng
Date: Wed Sep 13 17:54:50 2006
New Revision: 443176

URL: http://svn.apache.org/viewvc?view=rev&rev=443176
Log:
Fix the CompositeComponentType and related builders to support recursive "include"

Modified:
    incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.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/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.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/resources/org/apache/tuscany/core/deployer/boot1-include.scdl
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java

Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.java?view=diff&rev=443176&r1=443175&r2=443176
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.java Wed Sep 13 17:54:50 2006
@@ -121,11 +121,11 @@
                                 throw e;
                             }
                         }
-                        implementation.getComponentType().getServices().put(service.getName(), service);
+                        type.getDeclaredServices().put(service.getName(), service);
                     } else if (REFERENCE_ELEMENT.equals(qname)) {
                         BoundReferenceDefinition reference =
                             (BoundReferenceDefinition) registry.load(parent, reader, deploymentContext);
-                        implementation.getComponentType().getReferences().put(reference.getName(), reference);
+                        type.getDeclaredReferences().put(reference.getName(), reference);
                     }
                     break;
                 case END_ELEMENT:

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=443176&r1=443175&r2=443176
==============================================================================
--- 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 Wed Sep 13 17:54:50 2006
@@ -82,6 +82,7 @@
             }
         }
 
+        /*
         // add in components and services from included composites
         for (Include include : componentType.getIncludes().values()) {
             CompositeComponentType<?, ?, ?> included = include.getIncluded();
@@ -95,6 +96,7 @@
             }
             // TODO how to include references
         }
+        */
 
         String name = componentDefinition.getName();
         CompositeComponentImpl component = new CompositeComponentImpl(name, parent, null, connector, null);

Modified: 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/system/builder/SystemCompositeBuilder.java?view=diff&rev=443176&r1=443175&r2=443176
==============================================================================
--- 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/system/builder/SystemCompositeBuilder.java Wed Sep 13 17:54:50 2006
@@ -80,6 +80,7 @@
             }
         }
 
+        /*
         // add in components and services from included composites
         for (Include include : componentType.getIncludes().values()) {
             CompositeComponentType<?, ?, ?> included = include.getIncluded();
@@ -92,6 +93,7 @@
                 }
             }
         }
+        */
 
         // create the composite component
         String name = componentDefinition.getName();

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=443176&r1=443175&r2=443176
==============================================================================
--- 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 Wed Sep 13 17:54:50 2006
@@ -73,8 +73,10 @@
         assertEquals("boot1", composite.getName());
 
         // check parse of <service>
-        Map<String, ServiceDefinition> services = composite.getServices();
-        assertEquals(1, services.size());
+        Map<String, ServiceDefinition> services = composite.getDeclaredServices();
+        assertEquals(1, services.size()); // included doesn't count
+        services = composite.getServices();
+        assertEquals(2, services.size()); // included counts
         BoundServiceDefinition serviceDefinition = (BoundServiceDefinition) services.get("service");
         assertNotNull(serviceDefinition);
         assertEquals("service", serviceDefinition.getName());
@@ -82,8 +84,10 @@
         assertTrue(serviceDefinition.getBinding() instanceof SystemBinding);
 
         // check parse of <component>
-        Map<String, ComponentDefinition<? extends Implementation<?>>> components = composite.getComponents();
-        assertEquals(1, components.size());
+        Map<String, ComponentDefinition<? extends Implementation<?>>> components = composite.getDeclaredComponents();
+        assertEquals(1, components.size()); // included doesn't count
+        components = composite.getComponents();
+        assertEquals(2, components.size()); // included counts        
         ComponentDefinition<? extends Implementation<?>> component = components.get("component");
         assertNotNull(component);
         PropertyValue<?> propVal = component.getPropertyValues().get("publicProperty");

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=443176&r1=443175&r2=443176
==============================================================================
--- 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 Wed Sep 13 17:54:50 2006
@@ -25,4 +25,10 @@
         <system:implementation.system class="org.apache.tuscany.core.mock.component.BasicInterfaceImpl"/>
     </component>
 
+    <service name="service2" >
+        <interface.java interface="org.apache.tuscany.core.mock.component.BasicInterface"/>
+        <system:binding.system/>
+        <reference>component2</reference>
+    </service>
+    
 </composite>

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java?view=diff&rev=443176&r1=443175&r2=443176
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java Wed Sep 13 17:54:50 2006
@@ -18,6 +18,7 @@
  */
 package org.apache.tuscany.spi.model;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -43,10 +44,94 @@
         this.name = name;
     }
 
+    @Override
+    @SuppressWarnings("unchecked")
+    /**
+     * Get all properties including the ones are from included composites
+     * @return 
+     */
+    public Map<String, P> getProperties() {
+        Map<String, P> view = new HashMap<String, P>(super.getProperties());
+        for (Include i : includes.values()) {
+            view.putAll(i.getIncluded().getProperties());
+        }
+        return Collections.unmodifiableMap(view);
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    /**
+     * Get all references including the ones are from included composites
+     * @return 
+     */
+    public Map<String, R> getReferences() {
+        Map<String, R> view = new HashMap<String, R>(super.getReferences());
+        for (Include i : includes.values()) {
+            view.putAll(i.getIncluded().getReferences());
+        }
+        return Collections.unmodifiableMap(view);
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    /**
+     * Get all services including the ones are from included composites
+     * @return 
+     */
+    public Map<String, S> getServices() {
+        Map<String, S> view = new HashMap<String, S>(super.getServices());
+        for (Include i : includes.values()) {
+            view.putAll(i.getIncluded().getServices());
+        }
+        return Collections.unmodifiableMap(view);
+    }
+
+    /**
+     * Get all components including the ones are from included composites
+     * @return 
+     */
+    @SuppressWarnings("unchecked")
     public Map<String, ComponentDefinition<? extends Implementation<?>>> getComponents() {
-        return components;
+        Map<String, ComponentDefinition<? extends Implementation<?>>> view =
+                new HashMap<String, ComponentDefinition<? extends Implementation<?>>>(components);
+        for (Include i : includes.values()) {
+            view.putAll(i.getIncluded().getComponents());
+        }
+        return Collections.unmodifiableMap(view);
     }
 
+    /**
+     * Get declared properties in this composite type, included doesn't count
+     * @return
+     */
+    public Map<String, P> getDeclaredProperties() {
+        return super.getProperties();
+    }
+
+    /**
+     * Get declared references in this composite type, included doesn't count
+     * @return
+     */
+    public Map<String, R> getDeclaredReferences() {
+        return super.getReferences();
+    }
+
+    /**
+     * Get declared services in this composite type, included doesn't count
+     * @return
+     */
+    public Map<String, S> getDeclaredServices() {
+        return super.getServices();
+    }
+
+    /**
+     * Get declared components in this composite type, included doesn't count
+     * @return
+     */
+    public Map<String, ComponentDefinition<? extends Implementation<?>>> getDeclaredComponents() {
+        return components;
+    }
+    
     public void add(ComponentDefinition<? extends Implementation<?>> componentDefinition) {
         components.put(componentDefinition.getName(), componentDefinition);
     }



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