diff options
3 files changed, 16 insertions, 2 deletions
diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java index e157b78a7c..6e5e09adf6 100644 --- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java +++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java @@ -53,7 +53,10 @@ public class ReferenceImpl extends AbstractReferenceImpl implements Reference, C @Override public Object clone() throws CloneNotSupportedException { ReferenceImpl clone = (ReferenceImpl)super.clone(); - clone.bindings = new ArrayList<Binding>(bindings); + clone.bindings = new ArrayList<Binding>(); + for (Binding binding : getBindings()){ + clone.bindings.add((Binding)binding.clone()); + } clone.targets = new ArrayList<ComponentService>(targets); // clone the endpoint references themselves and set the reference pointer back to // this new refrence diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java index 618d0d6e7b..4a8fd70910 100644 --- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java +++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java @@ -50,7 +50,9 @@ public class ServiceImpl extends AbstractServiceImpl implements Service, Cloneab public Object clone() throws CloneNotSupportedException { ServiceImpl clone = (ServiceImpl)super.clone(); clone.bindings = new ArrayList<Binding>(); - clone.bindings.addAll(getBindings()); + for (Binding binding : getBindings()){ + clone.bindings.add((Binding)binding.clone()); + } return clone; } diff --git a/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java b/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java index 920177e597..174b1320e7 100644 --- a/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java +++ b/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java @@ -583,6 +583,15 @@ public class DeployerImpl implements Deployer { for (Contribution contribution : contributionList) { for (Composite composite : contribution.getDeployables()) { + // TUSCANY-3907 - clone the top level composite before we includr + // it so that the composite model retained within + // the CompositeModelResolver is not changed by the build + try { + composite = (Composite)composite.clone(); + } catch (CloneNotSupportedException ex){ + // it is supported on Composite + } + // Include the node composite in the top-level composite domainComposite.getIncludes().add(composite); } |