From b38b9ae2715b97ba5288de178dd4beafac2f68d0 Mon Sep 17 00:00:00 2001 From: antelder Date: Sun, 15 May 2011 06:51:48 +0000 Subject: Add a method to Contribution to merge in ContributionMetadata git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1103278 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/contribution/Contribution.java | 2 ++ .../sca/contribution/impl/ContributionImpl.java | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) (limited to 'sca-java-2.x/trunk/modules/contribution/src/main') diff --git a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java index af2dd66863..1e8c54cc9c 100644 --- a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java +++ b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java @@ -129,4 +129,6 @@ public interface Contribution extends Artifact, Extensible { * @return the model */ T getArtifactModel(String uri); + + void mergeMetaData(ContributionMetadata metaData); } \ No newline at end of file diff --git a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java index 31ddc5b793..c1b348cc8b 100644 --- a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java +++ b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java @@ -22,12 +22,14 @@ package org.apache.tuscany.sca.contribution.impl; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.ListIterator; import java.util.Set; import org.apache.tuscany.sca.assembly.Composite; import org.apache.tuscany.sca.assembly.impl.ExtensibleImpl; import org.apache.tuscany.sca.contribution.Artifact; import org.apache.tuscany.sca.contribution.Contribution; +import org.apache.tuscany.sca.contribution.ContributionMetadata; import org.apache.tuscany.sca.contribution.Export; import org.apache.tuscany.sca.contribution.Import; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; @@ -163,4 +165,23 @@ class ContributionImpl extends ExtensibleImpl implements Contribution { } throw new IllegalArgumentException("artifact not found: " + uri); } + + @Override + public void mergeMetaData(ContributionMetadata metaData) { + imports.addAll(metaData.getImports()); + exports.addAll(metaData.getExports()); + if (metaData.getDeployables().size() > 0) { + // Update the deployable Composite objects with the correct Composite object for the artifact + for (Artifact a : getArtifacts()) { + if (a.getModel() instanceof Composite) { + for (ListIterator lit = metaData.getDeployables().listIterator(); lit.hasNext();) { + if (lit.next().getName().equals(((Composite)a.getModel()).getName())) { + lit.set((Composite)a.getModel()); + } + } + } + } + deployables.addAll(metaData.getDeployables()); + } + } } -- cgit v1.2.3