diff options
Diffstat (limited to 'java/sca/modules/assembly')
3 files changed, 23 insertions, 5 deletions
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/CompositeReference.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/CompositeReference.java index d3fa80ba74..9defd8f66c 100644 --- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/CompositeReference.java +++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/CompositeReference.java @@ -26,12 +26,19 @@ import java.util.List; * @version $Rev$ $Date$ */ public interface CompositeReference extends Reference { + /** + * Returns the promoted components. For each promoted component/reference, + * they have the same index in the component and reference list. + * + * @return the promoted components + */ + List<Component> getPromotedComponents(); /** - * Returns the promoted composite references. + * Returns the promoted component references. * - * @return the promoted composite references + * @return the promoted component references */ List<ComponentReference> getPromotedReferences(); - + } diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java index eb858b4e3d..30c4e78367 100644 --- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java +++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java @@ -86,7 +86,7 @@ public class CompositePromotionBuilderImpl extends BaseBuilderImpl implements Co // Connect composite services and references to the component // services and references that they promote connectCompositeServices(composite, components, componentServices, monitor); - connectCompositeReferences(composite, componentReferences, monitor); + connectCompositeReferences(composite, components, componentReferences, monitor); } /** @@ -170,6 +170,7 @@ public class CompositePromotionBuilderImpl extends BaseBuilderImpl implements Co * @param problems */ private void connectCompositeReferences(Composite composite, + Map<String, Component> components, Map<String, ComponentReference> componentReferences, Monitor monitor) { // Propagate interfaces from inner composite components' references to @@ -198,7 +199,11 @@ public class CompositePromotionBuilderImpl extends BaseBuilderImpl implements Co String componentReferenceName = componentReference.getName(); componentReference = componentReferences.get(componentReferenceName); if (componentReference != null) { - + // Set the promoted component + Component promotedComponent = compositeReference.getPromotedComponents().get(i); + promotedComponent = components.get(promotedComponent.getName()); + compositeReference.getPromotedComponents().set(i, promotedComponent); + // Point to the resolved component reference promotedReferences.set(i, componentReference); diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/CompositeReferenceImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/CompositeReferenceImpl.java index 4348e08fcb..db88798cb5 100644 --- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/CompositeReferenceImpl.java +++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/CompositeReferenceImpl.java @@ -22,6 +22,7 @@ package org.apache.tuscany.sca.assembly.impl; import java.util.ArrayList; import java.util.List; +import org.apache.tuscany.sca.assembly.Component; import org.apache.tuscany.sca.assembly.ComponentReference; import org.apache.tuscany.sca.assembly.CompositeReference; @@ -31,6 +32,7 @@ import org.apache.tuscany.sca.assembly.CompositeReference; * @version $Rev$ $Date$ */ public class CompositeReferenceImpl extends ReferenceImpl implements CompositeReference, Cloneable { + private List<Component> promotedComponents = new ArrayList<Component>(); private List<ComponentReference> promotedReferences = new ArrayList<ComponentReference>(); /** @@ -48,4 +50,8 @@ public class CompositeReferenceImpl extends ReferenceImpl implements CompositeRe return promotedReferences; } + public List<Component> getPromotedComponents() { + return promotedComponents; + } + } |