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);
}