Author: jboynes
Date: Sat Mar 11 07:35:35 2006
New Revision: 385092
URL: http://svn.apache.org/viewcvs?rev=385092&view=rev
Log:
support configured references with multiple values
converted the references associated with a component into a map keyed by name
update loaders to merge <v:reference-name> elements into the targets for a
reference
updated helper methods to support multiple targets'
Modified:
incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/SourceImpl.java
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptComponentContextBuilder.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/loader/assembly/ComponentLoader.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.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/mock/component/SourceImpl.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/AssemblyFactory.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Component.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/AssemblyFactoryImpl.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.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/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java?rev=385092&r1=385091&r2=385092&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java
(original)
+++
incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java
Sat Mar 11 07:35:35 2006
@@ -237,9 +237,9 @@
}
// handle references
- List<ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
+ Map<String, ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
if (configuredReferences != null) {
- for (ConfiguredReference reference : configuredReferences)
{
+ for (ConfiguredReference reference :
configuredReferences.values()) {
Injector injector = createReferenceInjector(config,
reference, fields, methods, parentContext);
injectors.add(injector);
}
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=385092&r1=385091&r2=385092&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
Sat Mar 11 07:35:35 2006
@@ -312,11 +312,9 @@
ref.setServiceContract(inter);
sourceComponent.getComponentImplementation().getComponentType().getReferences().add(ref);
- ConfiguredReference cref = factory.createConfiguredReference();
- cref.setName("setGenericComponent");
- cref.setTarget("target");
+ ConfiguredReference cref =
factory.createConfiguredReference("setGenericComponent", "target");
cref.initialize(assemblyContext);
- sourceComponent.getConfiguredReferences().add(cref);
+ sourceComponent.getConfiguredReferences().put(cref.getName(), cref);
sourceComponent.initialize(assemblyContext);
Module module = factory.createModule();
@@ -352,11 +350,9 @@
ref.setServiceContract(inter);
sourceComponent.getComponentImplementation().getComponentType().getReferences().add(ref);
- ConfiguredReference cref = factory.createConfiguredReference();
- cref.setName(ref.getName());
- cref.setTarget("target");
+ ConfiguredReference cref =
factory.createConfiguredReference(ref.getName(), "target");
cref.initialize(assemblyContext);
- sourceComponent.getConfiguredReferences().add(cref);
+ sourceComponent.getConfiguredReferences().put(cref.getName(), cref);
sourceComponent.initialize(assemblyContext);
Module module = factory.createModule();
@@ -460,11 +456,9 @@
reference.setName("setTarget");
reference.setServiceContract(refContract);
componentType.getReferences().add(reference);
- ConfiguredReference cReference =
systemFactory.createConfiguredReference();
- cReference.setName(reference.getName());
- cReference.setTarget("target");
+ ConfiguredReference cReference =
systemFactory.createConfiguredReference(reference.getName(), "target");
cReference.initialize(assemblyContext);
- source.getConfiguredReferences().add(cReference);
+ source.getConfiguredReferences().put(cReference.getName(), cReference);
// wire multiplicity using a setter
JavaServiceContract refContract2 =
systemFactory.createJavaServiceContract();
@@ -473,11 +467,9 @@
reference2.setName("setTargets");
reference2.setServiceContract(refContract2);
componentType.getReferences().add(reference2);
- ConfiguredReference cReference2 =
systemFactory.createConfiguredReference();
- cReference2.setName(reference2.getName());
- cReference2.setTarget("target");
+ ConfiguredReference cReference2 =
systemFactory.createConfiguredReference(reference2.getName(), "target");
cReference2.initialize(assemblyContext);
- source.getConfiguredReferences().add(cReference2);
+ source.getConfiguredReferences().put(cReference2.getName(),
cReference2);
// wire multiplicity using a field
JavaServiceContract refContract3 =
systemFactory.createJavaServiceContract();
@@ -486,11 +478,9 @@
reference3.setName("targetsThroughField");
reference3.setServiceContract(refContract3);
componentType.getReferences().add(reference3);
- ConfiguredReference cReference3 =
systemFactory.createConfiguredReference();
- cReference3.setName(reference3.getName());
- cReference3.setTarget("target");
+ ConfiguredReference cReference3 =
systemFactory.createConfiguredReference(reference3.getName(), "target");
cReference3.initialize(assemblyContext);
- source.getConfiguredReferences().add(cReference3);
+ source.getConfiguredReferences().put(cReference3.getName(),
cReference3);
source.initialize(assemblyContext);
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/SourceImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/SourceImpl.java?rev=385092&r1=385091&r2=385092&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/SourceImpl.java
(original)
+++
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/components/SourceImpl.java
Sat Mar 11 07:35:35 2006
@@ -31,7 +31,6 @@
public void setTarget(Target target) {
this.target = target;
- this.targets = new ArrayList();
}
public Target getTarget() {
Modified:
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptComponentContextBuilder.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptComponentContextBuilder.java?rev=385092&r1=385091&r2=385092&view=diff
==============================================================================
---
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptComponentContextBuilder.java
(original)
+++
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptComponentContextBuilder.java
Sat Mar 11 07:35:35 2006
@@ -19,7 +19,6 @@
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import org.apache.tuscany.container.js.assembly.JavaScriptImplementation;
@@ -174,9 +173,9 @@
}
// handle references
- List<ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
+ Map<String, ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
if (configuredReferences != null) {
- for (ConfiguredReference reference : configuredReferences)
{
+ for (ConfiguredReference reference :
configuredReferences.values()) {
ProxyFactory proxyFactory =
factory.createProxyFactory();
ServiceContract interfaze =
reference.getReference().getServiceContract();
Map<Method, InvocationConfiguration> iConfigMap = new
MethodHashMap();
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=385092&r1=385091&r2=385092&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
Sat Mar 11 07:35:35 2006
@@ -67,11 +67,9 @@
inter.setInterface(HelloWorldService.class);
ref.setServiceContract(inter);
sourceComponent.getComponentImplementation().getComponentType().getReferences().add(ref);
- ConfiguredReference cref = factory.createConfiguredReference();
- cref.setName(ref.getName());
- cref.setTarget("target");
+ ConfiguredReference cref =
factory.createConfiguredReference(ref.getName(), "target");
cref.initialize(assemblyContext);
- sourceComponent.getConfiguredReferences().add(cref);
+ sourceComponent.getConfiguredReferences().put(cref.getName(), cref);
sourceComponent.initialize(assemblyContext);
Module module = factory.createModule();
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=385092&r1=385091&r2=385092&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
Sat Mar 11 07:35:35 2006
@@ -17,6 +17,7 @@
package org.apache.tuscany.core.loader.assembly;
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;
@@ -97,15 +98,21 @@
}
protected void loadReferences(XMLStreamReader reader, Component component)
throws XMLStreamException {
- List<ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
-
+ Map<String, ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
while (true) {
switch (reader.next()) {
case START_ELEMENT:
- ConfiguredReference configuredReference =
factory.createConfiguredReference();
- configuredReference.setName(reader.getLocalName());
- configuredReference.setTarget(reader.getElementText());
- configuredReferences.add(configuredReference);
+ String name = reader.getLocalName();
+ String uri = reader.getElementText();
+
+ ConfiguredReference configuredReference =
configuredReferences.get(name);
+ if (configuredReference == null) {
+ configuredReference = factory.createConfiguredReference();
+ configuredReference.setName(name);
+ configuredReferences.put(name, configuredReference);
+ }
+
+ configuredReference.getTargets().add(uri);
break;
case END_ELEMENT:
return;
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.java?rev=385092&r1=385091&r2=385092&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.java
Sat Mar 11 07:35:35 2006
@@ -19,6 +19,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import java.util.Map;
import org.apache.tuscany.common.monitor.MonitorFactory;
import org.apache.tuscany.core.builder.BuilderConfigException;
@@ -66,7 +67,7 @@
* Decorates components whose implementation type is a
* [EMAIL PROTECTED]
org.apache.tuscany.core.system.assembly.SystemImplementation} with the
appropriate runtime configuration.
* System components are not proxied.
- *
+ *
* @version $Rev$ $Date$
*/
public class SystemComponentContextBuilder implements
RuntimeConfigurationBuilder<AggregateContext> {
@@ -149,9 +150,9 @@
// FIXME do not inject references on an application module yet
if (implClass != AggregateContextImpl.class) {
// handle references
- List<ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
+ Map<String, ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
if (configuredReferences != null) {
- for (ConfiguredReference reference : configuredReferences)
{
+ for (ConfiguredReference reference :
configuredReferences.values()) {
Injector injector =
createReferenceInjector(parentContext.getName(), component.getName(),
parentContext,
reference, fields, methods);
injectors.add(injector);
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=385092&r1=385091&r2=385092&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
Sat Mar 11 07:35:35 2006
@@ -15,9 +15,9 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
-import org.apache.tuscany.core.config.ConfigurationException;
import org.apache.tuscany.core.context.impl.AggregateContextImpl;
import org.apache.tuscany.core.mock.component.ModuleScopeSystemComponent;
import org.apache.tuscany.core.mock.component.ModuleScopeSystemComponentImpl;
@@ -264,19 +264,22 @@
Component source = systemFactory.createSystemComponent("source",
Source.class, SourceImpl.class, sourceScope);
ComponentType sourceComponentType =
source.getComponentImplementation().getComponentType();
List<Reference> references = sourceComponentType.getReferences();
- List<ConfiguredReference> configuredReferences =
source.getConfiguredReferences();
+ Map<String, ConfiguredReference> configuredReferences =
source.getConfiguredReferences();
// wire source to target
references.add(systemFactory.createReference("setTarget",
Target.class));
-
configuredReferences.add(systemFactory.createConfiguredReference("setTarget",
"target"));
+ ConfiguredReference configuredReference =
systemFactory.createConfiguredReference("setTarget", "target");
+ configuredReferences.put(configuredReference.getName(),
configuredReference);
// wire multiplicity using a setter
references.add(systemFactory.createReference("setTargets",
List.class));
-
configuredReferences.add(systemFactory.createConfiguredReference("setTargets",
"target"));
+ configuredReference =
systemFactory.createConfiguredReference("setTargets", "target");
+ configuredReferences.put(configuredReference.getName(),
configuredReference);
// wire multiplicity using a field
references.add(systemFactory.createReference("targetsThroughField",
List.class));
-
configuredReferences.add(systemFactory.createConfiguredReference("targetsThroughField",
"target"));
+ configuredReference =
systemFactory.createConfiguredReference("targetsThroughField", "target");
+ configuredReferences.put(configuredReference.getName(),
configuredReference);
source.initialize(assemblyContext);
Modified:
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/component/SourceImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/component/SourceImpl.java?rev=385092&r1=385091&r2=385092&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/component/SourceImpl.java
(original)
+++
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/mock/component/SourceImpl.java
Sat Mar 11 07:35:35 2006
@@ -31,7 +31,6 @@
public void setTarget(Target target) {
this.target = target;
- this.targets = new ArrayList();
}
public Target getTarget() {
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=385092&r1=385091&r2=385092&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
Sat Mar 11 07:35:35 2006
@@ -19,8 +19,6 @@
import junit.framework.Assert;
import junit.framework.TestCase;
-import org.apache.tuscany.common.resource.ResourceLoader;
-import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl;
import org.apache.tuscany.core.builder.BuilderException;
import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
import org.apache.tuscany.core.builder.impl.AssemblyVisitor;
@@ -30,7 +28,6 @@
import org.apache.tuscany.core.system.assembly.SystemBinding;
import org.apache.tuscany.core.system.assembly.SystemImplementation;
import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl;
-import org.apache.tuscany.model.assembly.AssemblyFactory;
import org.apache.tuscany.model.assembly.AssemblyModelContext;
import org.apache.tuscany.model.assembly.AssemblyModelObject;
import org.apache.tuscany.model.assembly.Component;
@@ -43,10 +40,7 @@
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;
-import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
import org.apache.tuscany.model.types.java.JavaServiceContract;
/**
@@ -92,10 +86,8 @@
component = factory.createSimpleComponent();
component.setName("source");
component.setComponentImplementation(impl);
- ConfiguredReference cRef = factory.createConfiguredReference();
- cRef.setName("ref");
- cRef.setTarget("target");
- component.getConfiguredReferences().add(cRef);
+ ConfiguredReference cRef = factory.createConfiguredReference("ref",
"target");
+ component.getConfiguredReferences().put(cRef.getName(), cRef);
component.initialize(assemblyContext);
module.getComponents().add(component);
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java?rev=385092&r1=385091&r2=385092&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
Sat Mar 11 07:35:35 2006
@@ -173,8 +173,8 @@
* Helper method for creating a configured reference.
*
* @param name the name of the reference
- * @param target the target for the reference
+ * @param targets the targets for the reference
* @return a ConfiguredReference
*/
- ConfiguredReference createConfiguredReference(String name, String target);
+ ConfiguredReference createConfiguredReference(String name, String...
targets);
}
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Component.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Component.java?rev=385092&r1=385091&r2=385092&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Component.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Component.java
Sat Mar 11 07:35:35 2006
@@ -17,6 +17,7 @@
package org.apache.tuscany.model.assembly;
import java.util.List;
+import java.util.Map;
/**
@@ -52,10 +53,11 @@
ConfiguredProperty getConfiguredProperty(String name);
/**
- * Returns a list of configured reference values for the configured
instance.
- * @return a list of configured reference values for the configured
instance
+ * Returns a live map of this components configured references, keyed by
reference name.
+ *
+ * @return a live map of configured references
*/
- List<ConfiguredReference> getConfiguredReferences();
+ Map<String, ConfiguredReference> getConfiguredReferences();
/**
* Returns the ConfiguredReference value for the specified reference.
@@ -76,5 +78,5 @@
* @return the configured service value for the named service
*/
ConfiguredService getConfiguredService(String name);
-
+
}
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=385092&r1=385091&r2=385092&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
Sat Mar 11 07:35:35 2006
@@ -20,10 +20,35 @@
/**
* A configured reference associated with a particular usage.
+ * Each configuredReference represents a configured version of an logical
+ * reference defined in the ComponentType. If the logical reference
+ * has a multiplicity greater than 1 (0..n or 1..n) then the configured
+ * reference many have multiple targets.
*/
public interface ConfiguredReference extends ConfiguredPort {
/**
+ * 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);
+
+ /**
+ * List of URIs for the targets of this reference.
+ *
+ * @return the list of URIs for the targets of this reference
+ */
+ List<String> getTargets();
+
+ /**
* Returns the [EMAIL PROTECTED] Reference} that is being configured.
*
* @return the [EMAIL PROTECTED] Reference} that is being configured
@@ -43,20 +68,6 @@
* @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.
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java?rev=385092&r1=385091&r2=385092&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
Sat Mar 11 07:35:35 2006
@@ -211,10 +211,12 @@
return reference;
}
- public ConfiguredReference createConfiguredReference(String name, String
target) {
+ public ConfiguredReference createConfiguredReference(String name,
String... targets) {
ConfiguredReference ref = createConfiguredReference();
ref.setName(name);
- ref.setTarget(target);
+ for (String target : targets) {
+ ref.getTargets().add(target);
+ }
return ref;
}
}
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java?rev=385092&r1=385091&r2=385092&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ComponentImpl.java
Sat Mar 11 07:35:35 2006
@@ -39,8 +39,7 @@
*/
public abstract class ComponentImpl extends AggregatePartImpl implements
Component {
- private List<ConfiguredReference> configuredReferences = new
ArrayList<ConfiguredReference>();
- private Map<String, ConfiguredReference> configuredReferencesMap;
+ private Map<String, ConfiguredReference> configuredReferencesMap = new
HashMap<String, ConfiguredReference>();
private List<ConfiguredService> configuredServices = new
ArrayList<ConfiguredService>();
private Map<String, ConfiguredService> configuredServicesMap;
private List<ConfiguredProperty> configuredProperties = new
ArrayList<ConfiguredProperty>();
@@ -74,18 +73,14 @@
return configuredServicesMap.get(name);
}
- /**
- * @see
org.apache.tuscany.model.assembly.Component#getConfiguredReferences()
- */
- public List<ConfiguredReference> getConfiguredReferences() {
- return configuredReferences;
+ public Map<String, ConfiguredReference> getConfiguredReferences() {
+ return configuredReferencesMap;
}
/**
* @see
org.apache.tuscany.model.assembly.Component#getConfiguredReference(java.lang.String)
*/
public ConfiguredReference getConfiguredReference(String name) {
- checkInitialized();
return configuredReferencesMap.get(name);
}
@@ -157,14 +152,12 @@
}
// Match configured references to the references on the component type
- configuredReferencesMap = new HashMap<String,
ConfiguredReference>(configuredReferences.size());
- for (ConfiguredReference configuredReference : configuredReferences) {
+ for (ConfiguredReference configuredReference :
configuredReferencesMap.values()) {
String name = configuredReference.getName();
((ConfiguredPortImpl) configuredReference).setAggregatePart(this);
Reference reference = componentType.getReference(name);
configuredReference.setReference(reference);
configuredReference.initialize(modelContext);
- configuredReferencesMap.put(name, configuredReference);
}
}
@@ -179,8 +172,8 @@
// Freeze configured services, references and properties
configuredServices = Collections.unmodifiableList(configuredServices);
freeze(configuredServices);
- configuredReferences =
Collections.unmodifiableList(configuredReferences);
- freeze(configuredReferences);
+ configuredReferencesMap =
Collections.unmodifiableMap(configuredReferencesMap);
+ freeze(configuredReferencesMap.values());
configuredProperties =
Collections.unmodifiableList(configuredProperties);
freeze(configuredProperties);
if (implementation != null)
@@ -196,7 +189,7 @@
if (!accept(configuredServices, visitor))
return false;
- if (!accept(configuredReferences, visitor))
+ if (!accept(configuredReferencesMap.values(), visitor))
return false;
if (!accept(configuredProperties, visitor))
return false;
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=385092&r1=385091&r2=385092&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
Sat Mar 11 07:35:35 2006
@@ -31,6 +31,7 @@
private String name;
private String target;
+ private List<String> targets = new ArrayList<String>();
private List<ConfiguredService> targetConfiguredServices = new
ArrayList<ConfiguredService>();
@@ -45,6 +46,10 @@
this.name = name;
}
+ public List<String> getTargets() {
+ return targets;
+ }
+
public String getTarget() {
return target;
}
@@ -67,22 +72,23 @@
checkNotFrozen();
super.setPort(reference);
}
-
+
/**
* @see
org.apache.tuscany.model.assembly.ConfiguredReference#getTargetConfiguredServices()
*/
public List<ConfiguredService> getTargetConfiguredServices() {
return targetConfiguredServices;
}
-
+
/**
* @see org.apache.tuscany.model.assembly.impl.ConfiguredPortImpl#freeze()
*/
public void freeze() {
super.freeze();
-
+
// Freeze list of configured services
-
targetConfiguredServices=Collections.unmodifiableList(targetConfiguredServices);
+ targetConfiguredServices =
Collections.unmodifiableList(targetConfiguredServices);
+ targets = Collections.unmodifiableList(targets);
}
}
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=385092&r1=385091&r2=385092&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
Sat Mar 11 07:35:35 2006
@@ -145,15 +145,16 @@
componentType.getProperties().add(configuredProperty.getProperty());
}
- for (ConfiguredReference configuredReference :
component.getConfiguredReferences()) {
+ for (ConfiguredReference configuredReference :
component.getConfiguredReferences().values()) {
// 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);
+ ServiceURI sourceURI =factory.createServiceURI(null,
component, configuredReference);
+ for (String target : configuredReference.getTargets()) {
+ ServiceURI targetURI =factory.createServiceURI(null,
target);
+ Wire wire=factory.createWire();
+ wire.setSource(sourceURI);
+ wire.setTarget(targetURI);
+ getWires().add(wire);
+ }
}
}
}
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=385092&r1=385091&r2=385092&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
Sat Mar 11 07:35:35 2006
@@ -480,6 +480,8 @@
// Grab the current component
final SimpleComponent component=this.currentComponent;
+ Map<String, ConfiguredReference> configuredReferences =
component.getConfiguredReferences();
+
// Initialize the component's configured references
Sequence sequence = object.getAny();
for (int r = 0, n = sequence.size(); r < n; r++) {
@@ -490,15 +492,18 @@
// Get the corresponding reference definition
String referenceName = referenceElementDef.getName();
- final ConfiguredReference configuredReference =
factory.createConfiguredReference();
- configuredReference.setName(referenceName);
+ ConfiguredReference configuredReference =
configuredReferences.get(referenceName);
+ if (configuredReference == null) {
+ configuredReference = factory.createConfiguredReference();
+ configuredReference.setName(referenceName);
+ configuredReferences.put(referenceName, configuredReference);
+ }
+
Sequence text = referenceElement.getSequence(0);
if (text != null && text.size() != 0) {
String uri = String.valueOf(text.getValue(0));
- configuredReference.setTarget(uri);
+ configuredReference.getTargets().add(uri);
}
-
- component.getConfiguredReferences().add(configuredReference);
}
return object;