Author: jboynes
Date: Fri Mar 10 12:39:14 2006
New Revision: 384910

URL: http://svn.apache.org/viewcvs?rev=384910&view=rev
Log:
defer component wire resolution until model initialization phase

Modified:
    
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
    
incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/mock/MockModuleFactory.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java
    
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java
    
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/impl/AssemblyVisitorTestCase.java
    
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredReference.java
    
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredReferenceImpl.java
    
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java
    
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLModelContentHandlerImpl.java

Modified: 
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
 Fri Mar 10 12:39:14 2006
@@ -339,7 +339,7 @@
 
         ConfiguredReference cref = factory.createConfiguredReference();
         cref.setName("setGenericComponent");
-        cref.getTargetConfiguredServices().add(cTargetService);
+        cref.setTarget("target");
         cref.initialize(assemblyContext);
         sourceComponent.getConfiguredReferences().add(cref);
         sourceComponent.initialize(assemblyContext);
@@ -379,7 +379,7 @@
 
         ConfiguredReference cref = factory.createConfiguredReference();
         cref.setName(ref.getName());
-        cref.getTargetConfiguredServices().add(cTargetService);
+        cref.setTarget("target");
         cref.initialize(assemblyContext);
         sourceComponent.getConfiguredReferences().add(cref);
         sourceComponent.initialize(assemblyContext);
@@ -487,7 +487,7 @@
         componentType.getReferences().add(reference);
         ConfiguredReference cReference = 
systemFactory.createConfiguredReference();
         cReference.setName(reference.getName());
-        cReference.getTargetConfiguredServices().add(cTargetService);
+        cReference.setTarget("target");
         cReference.initialize(assemblyContext);
         source.getConfiguredReferences().add(cReference);
 
@@ -500,7 +500,7 @@
         componentType.getReferences().add(reference2);
         ConfiguredReference cReference2 = 
systemFactory.createConfiguredReference();
         cReference2.setName(reference2.getName());
-        cReference2.getTargetConfiguredServices().add(cTargetService);
+        cReference2.setTarget("target");
         cReference2.initialize(assemblyContext);
         source.getConfiguredReferences().add(cReference2);
 
@@ -513,7 +513,7 @@
         componentType.getReferences().add(reference3);
         ConfiguredReference cReference3 = 
systemFactory.createConfiguredReference();
         cReference3.setName(reference3.getName());
-        cReference3.getTargetConfiguredServices().add(cTargetService);
+        cReference3.setTarget("target");
         cReference3.initialize(assemblyContext);
         source.getConfiguredReferences().add(cReference3);
         source.initialize(assemblyContext);

Modified: 
incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/mock/MockModuleFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/mock/MockModuleFactory.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/mock/MockModuleFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/mock/MockModuleFactory.java
 Fri Mar 10 12:39:14 2006
@@ -69,7 +69,7 @@
         
sourceComponent.getComponentImplementation().getComponentType().getReferences().add(ref);
         ConfiguredReference cref = factory.createConfiguredReference();
         cref.setName(ref.getName());
-        cref.getTargetConfiguredServices().add(cTargetService);
+        cref.setTarget("target");
         cref.initialize(assemblyContext);
         sourceComponent.getConfiguredReferences().add(cref);
         sourceComponent.initialize(assemblyContext);

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
 Fri Mar 10 12:39:14 2006
@@ -66,7 +66,7 @@
 public class TuscanyRuntime extends SCA {
     private final Monitor monitor;
     private final Object sessionKey = new Object();
-    
+
     private final RuntimeContext runtimeContext;
     private AggregateContext systemModuleComponentContext;
     private AggregateContext moduleContext;
@@ -102,15 +102,15 @@
         // Create a resource loader from the current classloader
         ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
         ResourceLoader resourceLoader = new ResourceLoaderImpl(classLoader);
-        
+
         // Create an assembly model factory
         AssemblyFactory modelFactory=new AssemblyFactoryImpl();
-        
+
         // Create an assembly model loader
         List<SCDLModelLoader> scdlLoaders=new ArrayList<SCDLModelLoader>();
         scdlLoaders.add(new SystemSCDLModelLoader());
         AssemblyModelLoader modelLoader=new 
SCDLAssemblyModelLoaderImpl(scdlLoaders);
-        
+
         // Create an assembly model context
         AssemblyModelContext modelContext = new 
AssemblyModelContextImpl(modelFactory, modelLoader, resourceLoader);
 
@@ -144,7 +144,7 @@
         systemModuleComponentContext = (AggregateContext) 
systemContext.getContext(SYSTEM_MODULE_COMPONENT);
         
systemModuleComponentContext.registerModelObject(systemModuleComponent.getComponentImplementation());
         systemModuleComponentContext.fireEvent(EventContext.MODULE_START, 
null);
-        
+
         // Load the SCDL configuration of the application module
         ModuleComponent moduleComponent = loader.loadModuleComponent(name, 
uri);
         

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java
 Fri Mar 10 12:39:14 2006
@@ -16,9 +16,7 @@
  */
 package org.apache.tuscany.core.loader.assembly;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import javax.xml.namespace.QName;
 import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
 import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
@@ -27,18 +25,16 @@
 
 import org.osoa.sca.annotations.Scope;
 
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.core.config.ConfigurationLoadException;
 import static 
org.apache.tuscany.core.loader.assembly.AssemblyConstants.COMPONENT;
 import static 
org.apache.tuscany.core.loader.assembly.AssemblyConstants.PROPERTIES;
 import static 
org.apache.tuscany.core.loader.assembly.AssemblyConstants.REFERENCES;
-import org.apache.tuscany.core.config.ConfigurationLoadException;
 import org.apache.tuscany.model.assembly.AssemblyModelObject;
 import org.apache.tuscany.model.assembly.Component;
 import org.apache.tuscany.model.assembly.ComponentImplementation;
 import org.apache.tuscany.model.assembly.ConfiguredProperty;
 import org.apache.tuscany.model.assembly.ConfiguredReference;
-import org.apache.tuscany.model.assembly.Property;
-import org.apache.tuscany.model.assembly.Reference;
-import org.apache.tuscany.common.resource.ResourceLoader;
 
 /**
  * @version $Rev$ $Date$
@@ -90,6 +86,7 @@
                 String value = reader.getElementText();
                 ConfiguredProperty configuredProperty = 
factory.createConfiguredProperty();
                 // todo set property override
+                configuredProperty.setName(name);
                 configuredProperty.setValue(value);
                 configuredProperties.add(configuredProperty);
                 break;
@@ -105,9 +102,9 @@
         while (true) {
             switch (reader.next()) {
             case START_ELEMENT:
-                String name = reader.getLocalName();
-                String value = reader.getElementText();
                 ConfiguredReference configuredReference = 
factory.createConfiguredReference();
+                configuredReference.setName(reader.getLocalName());
+                configuredReference.setTarget(reader.getElementText());
                 configuredReferences.add(configuredReference);
                 break;
             case END_ELEMENT:

Modified: 
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/MockFactory.java
 Fri Mar 10 12:39:14 2006
@@ -365,6 +365,7 @@
         // wire source to target
         ConfiguredReference cReference = 
systemFactory.createConfiguredReference();
         cReference.setName("setTarget");
+        cReference.setTarget("target");
         cReference.getTargetConfiguredServices().add(cTargetService);
         cReference.initialize(assemblyContext);
         source.getConfiguredReferences().add(cReference);
@@ -372,6 +373,7 @@
         // wire multiplicity using a setter
         ConfiguredReference cReference2 = 
systemFactory.createConfiguredReference();
         cReference2.setName("setTargets");
+        cReference2.setTarget("target");
         cReference2.getTargetConfiguredServices().add(cTargetService);
         cReference2.initialize(assemblyContext);
         source.getConfiguredReferences().add(cReference2);
@@ -379,6 +381,7 @@
         // wire multiplicity using a field
         ConfiguredReference cReference3 = 
systemFactory.createConfiguredReference();
         cReference3.setName("targetsThroughField");
+        cReference3.setTarget("target");
         cReference3.getTargetConfiguredServices().add(cTargetService);
         cReference3.initialize(assemblyContext);
         source.getConfiguredReferences().add(cReference3);

Modified: 
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/impl/AssemblyVisitorTestCase.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/impl/AssemblyVisitorTestCase.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/impl/AssemblyVisitorTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/impl/AssemblyVisitorTestCase.java
 Fri Mar 10 12:39:14 2006
@@ -42,6 +42,7 @@
 import org.apache.tuscany.model.assembly.Reference;
 import org.apache.tuscany.model.assembly.RuntimeConfigurationHolder;
 import org.apache.tuscany.model.assembly.Service;
+import org.apache.tuscany.model.assembly.ComponentType;
 import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
 import org.apache.tuscany.model.assembly.impl.AssemblyModelContextImpl;
 import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
@@ -61,20 +62,47 @@
     private AssemblyModelContext assemblyContext = new 
AssemblyModelContextImpl(factory, null, null);
      
     public void testModelVisit() throws Exception {
-        
-        Component component = factory.createSimpleComponent();
-        SystemImplementation impl = factory.createSystemImplementation();
-        impl.setComponentType(factory.createComponentType());
+        ComponentType componentType;
+        Service service;
+        SystemImplementation impl;
+        Component component;
+
+        Module module = factory.createModule();
+
+        // create target component
+        componentType = factory.createComponentType();
+        service = factory.createService();
+        service.setName("target");
+        componentType.getServices().add(service);
+        impl = factory.createSystemImplementation();
+        impl.setComponentType(componentType);
+        component = factory.createSimpleComponent();
+        component.setName("target");
         component.setComponentImplementation(impl);
-        ConfiguredReference cRef = factory.createConfiguredReference();
+        component.initialize(assemblyContext);
+        module.getComponents().add(component);
+
+        // create source component
+        componentType = factory.createComponentType();
         Reference ref = factory.createReference();
-        cRef.setReference(ref);
+        ref.setName("ref");
+        componentType.getReferences().add(ref);
+        impl = factory.createSystemImplementation();
+        impl.setComponentType(componentType);
+        component = factory.createSimpleComponent();
+        component.setName("source");
+        component.setComponentImplementation(impl);
+        ConfiguredReference cRef = factory.createConfiguredReference();
+        cRef.setName("ref");
+        cRef.setTarget("target");
         component.getConfiguredReferences().add(cRef);
+        component.initialize(assemblyContext);
+        module.getComponents().add(component);
 
         EntryPoint ep = factory.createEntryPoint();
         JavaServiceContract contract = factory.createJavaServiceContract();
         contract.setInterface(ModuleScopeSystemComponent.class);
-        Service service = factory.createService();
+        service = factory.createService();
         service.setServiceContract(contract);
         ConfiguredService cService = factory.createConfiguredService();
         cService.setService(service);
@@ -86,10 +114,7 @@
         Reference epRef = factory.createReference();
         cEpRef.setReference(epRef);
         ep.setConfiguredReference(cEpRef);
-        
         ep.initialize(assemblyContext);
-        Module module = factory.createModule();
-        module.getComponents().add(component);
         module.getEntryPoints().add(ep);
 
         List<RuntimeConfigurationBuilder> builders = new ArrayList();

Modified: 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredReference.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredReference.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredReference.java
 (original)
+++ 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ConfiguredReference.java
 Fri Mar 10 12:39:14 2006
@@ -25,23 +25,51 @@
 
     /**
      * Returns the [EMAIL PROTECTED] Reference} that is being configured.
+     *
      * @return the [EMAIL PROTECTED] Reference} that is being configured
      */
     Reference getReference();
 
     /**
      * Sets the [EMAIL PROTECTED] Reference} that is being configured.
+     *
      * @param reference the [EMAIL PROTECTED] Reference} that is being 
configured
      */
     void setReference(Reference reference);
 
     /**
      * Returns the list of configured services that are wired to this 
configured reference.
+     *
      * @return the list of configured services that are wired to this 
configured reference
      */
     List<ConfiguredService> getTargetConfiguredServices();
 
+    /**
+     * Returns the name of the reference being configured.
+     *
+     * @return the name of the reference being configured
+     */
     String getName();
 
+    /**
+     * Set the name of the reference being configured.
+     *
+     * @param name the name of the reference being configured
+     */
     void setName(String name);
+
+    /**
+     * Returns the URI of the target of this reference.
+     * Relative URI's must be resolved relative to the component containing 
this reference.
+     *
+     * @return the URI of the target
+     */
+    String getTarget();
+
+    /**
+     * Set the URI of the target of this reference. May be relative.
+     *
+     * @param target the URI of the target of this reference
+     */
+    void setTarget(String target);
 }

Modified: 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredReferenceImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredReferenceImpl.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredReferenceImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ConfiguredReferenceImpl.java
 Fri Mar 10 12:39:14 2006
@@ -30,11 +30,10 @@
 public class ConfiguredReferenceImpl extends ConfiguredPortImpl implements 
ConfiguredReference {
 
     private String name;
+    private String target;
+
     private List<ConfiguredService> targetConfiguredServices = new 
ArrayList<ConfiguredService>();
 
-    /**
-     * Constructor
-     */
     protected ConfiguredReferenceImpl() {
     }
 
@@ -44,6 +43,14 @@
 
     public void setName(String name) {
         this.name = name;
+    }
+
+    public String getTarget() {
+        return target;
+    }
+
+    public void setTarget(String target) {
+        this.target = target;
     }
 
     /**

Modified: 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java
 Fri Mar 10 12:39:14 2006
@@ -144,6 +144,17 @@
                         continue;
                     
componentType.getProperties().add(configuredProperty.getProperty());
                 }
+
+                for (ConfiguredReference configuredReference : 
component.getConfiguredReferences()) {
+                    // Create a wire
+                    ServiceURI source =factory.createServiceURI(null, 
component, configuredReference);
+                    ServiceURI target =factory.createServiceURI(null, 
configuredReference.getTarget());
+
+                    Wire wire=factory.createWire();
+                    wire.setSource(source);
+                    wire.setTarget(target);
+                    getWires().add(wire);
+                }
             }
         }
         componentType.initialize(modelContext);

Modified: 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLModelContentHandlerImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLModelContentHandlerImpl.java?rev=384910&r1=384909&r2=384910&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLModelContentHandlerImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLModelContentHandlerImpl.java
 Fri Mar 10 12:39:14 2006
@@ -492,25 +492,11 @@
             String referenceName = referenceElementDef.getName();
             final ConfiguredReference configuredReference = 
factory.createConfiguredReference();
             configuredReference.setName(referenceName);
-
-            linkers.add(new Runnable() {
-                public void run() {
-                    ServiceURI referenceURI=factory.createServiceURI(null, 
component, configuredReference);
-
-                    // Get the reference value text
-                    Sequence text = referenceElement.getSequence(0);
-                    if (text != null && text.size() != 0) {
-                        String uri = text.getValue(0).toString();
-                        ServiceURI serviceURI=factory.createServiceURI(null, 
uri);
-
-                        // Create a wire
-                        Wire wire=factory.createWire();
-                        wire.setSource(referenceURI);
-                        wire.setTarget(serviceURI);
-                        currentAggregate.getWires().add(wire);
-                    }
-                }
-            });
+            Sequence text = referenceElement.getSequence(0);
+            if (text != null && text.size() != 0) {
+                String uri = String.valueOf(text.getValue(0));
+                configuredReference.setTarget(uri);
+            }
 
             component.getConfiguredReferences().add(configuredReference);
         }


Reply via email to