You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2007/04/19 20:00:07 UTC

svn commit: r530503 - in /incubator/tuscany/java/sca/modules/core/src: main/java/org/apache/tuscany/core/builder/ main/java/org/apache/tuscany/core/component/ main/java/org/apache/tuscany/core/deployer/ main/java/org/apache/tuscany/core/implementation/...

Author: svkrish
Date: Thu Apr 19 11:00:06 2007
New Revision: 530503

URL: http://svn.apache.org/viewvc?view=rev&rev=530503
Log:
Changes resulting from fixing https://issues.apache.org/jira/browse/TUSCANY-1215

Modified:
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/CompositeComponentImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
    incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=530503&r1=530502&r2=530503
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Thu Apr 19 11:00:06 2007
@@ -20,6 +20,7 @@
 
 import java.net.URI;
 import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.Map;
 
 import org.apache.tuscany.assembly.Binding;
@@ -111,13 +112,19 @@
             throw new NoRegisteredBuilderException("No builder registered for implementation", name);
         }
         Component component = componentBuilder.build(componentDef, context);
-        componentManager.add(component, componentDef);
         assert component != null;
-        Map<String, Property> properties = new HashMap<String, Property>();
-        for (Property p : componentDef.getProperties()) {
-            properties.put(p.getName(), p);
+        
+        //if there are builders that have not handled properties, then ensure
+        //it is copied into the component atleast at this point
+        if (componentDef.getProperties().size() != component.getProperties().size()) {
+            Map<String, Property> compProperties = new Hashtable<String, Property>();
+            for (Property aProperty : componentDef.getProperties()) {
+                compProperties.put(aProperty.getName(), aProperty);
+            }
+            component.setProperties(compProperties);
         }
-        component.setDefaultPropertyValues(properties);
+        
+        componentManager.add(component, componentDef);
 
         // FIXME: How to deal scopes?
         // Scope scope = componentDef.getImplementation().getScope();

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/CompositeComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/CompositeComponentImpl.java?view=diff&rev=530503&r1=530502&r2=530503
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/CompositeComponentImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/CompositeComponentImpl.java Thu Apr 19 11:00:06 2007
@@ -69,7 +69,7 @@
     }
     
     public void configureProperty(String propertyName) {
-        throw new UnsupportedOperationException();
+        //throw new UnsupportedOperationException();
         
     }
 

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java?view=diff&rev=530503&r1=530502&r2=530503
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java Thu Apr 19 11:00:06 2007
@@ -18,6 +18,7 @@
  */
 package org.apache.tuscany.core.deployer;
 
+import java.io.IOException;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -26,6 +27,7 @@
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLInputFactory;
 
+import org.apache.tuscany.assembly.AssemblyFactory;
 import org.apache.tuscany.assembly.ComponentProperty;
 import org.apache.tuscany.assembly.ComponentReference;
 import org.apache.tuscany.assembly.ComponentService;
@@ -33,8 +35,11 @@
 import org.apache.tuscany.assembly.CompositeReference;
 import org.apache.tuscany.assembly.CompositeService;
 import org.apache.tuscany.assembly.Multiplicity;
+import org.apache.tuscany.assembly.Property;
 import org.apache.tuscany.assembly.SCABinding;
 import org.apache.tuscany.assembly.impl.DefaultAssemblyFactory;
+import org.apache.tuscany.assembly.util.InvalidValueException;
+import org.apache.tuscany.assembly.util.PropertyUtil;
 import org.apache.tuscany.core.builder.ComponentNotFoundException;
 import org.apache.tuscany.core.builder.IncompatibleInterfacesException;
 import org.apache.tuscany.core.builder.WireCreationException;
@@ -50,6 +55,7 @@
 import org.apache.tuscany.interfacedef.impl.DefaultInterfaceContractMapper;
 import org.apache.tuscany.spi.Scope;
 import org.apache.tuscany.spi.builder.Builder;
+import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderInstantiationException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
@@ -118,6 +124,24 @@
     public void setScopeRegistry(ScopeRegistry scopeRegistry) {
         this.scopeRegistry = scopeRegistry;
     }
+    
+    private org.apache.tuscany.assembly.Component createDefaultComponentForDeployedComposite(Composite composite) {
+        AssemblyFactory assemblyFactory = new DefaultAssemblyFactory();
+        org.apache.tuscany.assembly.Component componentDef = assemblyFactory.createComponent();
+        componentDef.setName(composite.getName().getLocalPart());
+        componentDef.setImplementation(composite);
+        ComponentProperty componentProperty = null;
+        for (Property property : composite.getProperties()) {
+            componentProperty = assemblyFactory.createComponentProperty();
+            componentProperty.setName(property.getName());
+            componentProperty.setMany(property.isMany());
+            componentProperty.setXSDElement(property.getXSDElement());
+            componentProperty.setXSDType(property.getXSDType());
+            componentProperty.setProperty(property);
+            componentDef.getProperties().add(componentProperty);
+        }
+        return componentDef;
+    }
 
     public Collection<Component> deploy(Composite composite) throws BuilderException, ResolutionException {
         @SuppressWarnings("unchecked")
@@ -128,17 +152,15 @@
         DeploymentContext deploymentContext = new RootDeploymentContext(null, groupId, componentId, xmlFactory,
                                                                         scopeContainer);
 
-        // Create a default component implemented by the given composite
-        org.apache.tuscany.assembly.Component componentDef = new DefaultAssemblyFactory().createComponent();
-        componentDef.setName(composite.getName().getLocalPart());
-        componentDef.setImplementation(composite);
-
+        
+        org.apache.tuscany.assembly.Component componentDef = 
+            createDefaultComponentForDeployedComposite(composite);
+        
         // Adjust the composite graph and wire the references with SCA bindings
         processSCABinding(composite);
 
-        // Build runtime artifacts using the builders
         builder.build(componentDef, deploymentContext);
-
+        
         // Register all components with the component manager
         Collection<Component> components = deploymentContext.getComponents().values();
         for (Component toRegister : components) {
@@ -156,7 +178,6 @@
             Object model = componentManager.getModelObject(Object.class, scaObject);
             if (model instanceof org.apache.tuscany.assembly.Component) {
                 connect((Component)scaObject, (org.apache.tuscany.assembly.Component)model);
-                configureProperties((Component)scaObject, (org.apache.tuscany.assembly.Component)model);
             } else if (model instanceof CompositeService) {
                 try {
                     connect((Service)scaObject, (CompositeService)model);
@@ -209,20 +230,7 @@
             }
         }
     }
-
-    public void configureProperties(Component source, org.apache.tuscany.assembly.Component definition)
-        throws BuilderException {
-        if (source == null) {
-            throw new ComponentNotFoundException("Source not found", URI.create(definition.getName()));
-        }
-
-        for (ComponentProperty property : definition.getProperties()) {
-            if (property.getValue() != null) {
-                source.configureProperty(property.getName());
-            }
-        }
-    }
-
+    
     public void connect(Component source, org.apache.tuscany.assembly.Component definition) throws WiringException {
 
         if (definition.getImplementation() instanceof Composite) {

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java?view=diff&rev=530503&r1=530502&r2=530503
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java Thu Apr 19 11:00:06 2007
@@ -22,6 +22,8 @@
 import org.apache.tuscany.assembly.CompositeReference;
 import org.apache.tuscany.assembly.CompositeService;
 import org.apache.tuscany.assembly.Implementation;
+import org.apache.tuscany.assembly.util.PropertyUtil;
+import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderInstantiationException;
 import org.apache.tuscany.spi.component.Component;
@@ -40,7 +42,15 @@
 
     public Component build(Component component, Composite componentType, DeploymentContext deploymentContext)
         throws BuilderException {
+
         for (org.apache.tuscany.assembly.Component definition : componentType.getComponents()) {
+            //update component defn. properties that might be using $source with the
+            //composites configured property values
+            try {
+                PropertyUtil.sourceComponentProperties(component.getProperties(), definition);
+            } catch (Exception e) {
+                throw new BuilderConfigException(e);
+            }
             builderRegistry.build(definition, deploymentContext);
         }
         for (org.apache.tuscany.assembly.Service definition : componentType.getServices()) {
@@ -65,5 +75,4 @@
         }
         return component;
     }
-
 }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java?view=diff&rev=530503&r1=530502&r2=530503
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java Thu Apr 19 11:00:06 2007
@@ -20,6 +20,7 @@
 
 import java.net.URI;
 
+import org.apache.tuscany.assembly.ComponentProperty;
 import org.apache.tuscany.assembly.Composite;
 import org.apache.tuscany.core.component.CompositeComponentImpl;
 import org.apache.tuscany.core.deployer.ChildDeploymentContext;
@@ -43,7 +44,12 @@
 
         URI name = URI.create(context.getComponentId() + definition.getName());
         Component component = new CompositeComponentImpl(name);
-
+        
+        //configure the composite component with properties
+        for (ComponentProperty compProp : definition.getProperties()) {
+            component.getProperties().put(compProp.getName(), compProp);
+        }
+        
         return build(component, composite, childContext);
     }
 

Modified: incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java?view=diff&rev=530503&r1=530502&r2=530503
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java Thu Apr 19 11:00:06 2007
@@ -86,8 +86,9 @@
         for (Property p : componentDefinition.getProperties()) {
             properties.put(p.getName(), p);
         }
-        component.setDefaultPropertyValues(properties);
+        component.setProperties(properties);
         component.setScopeContainer(scopeContainer);
+        EasyMock.expect(component.getProperties()).andReturn(properties).anyTimes();
         EasyMock.expect(component.getUri()).andReturn(componentId);
         EasyMock.replay(component);
 



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