summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-06-11 13:03:35 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-06-11 13:03:35 +0000
commit3f6f4bd3c857b9e78de3cc541b97f38ddbbe780d (patch)
tree39825423e4180b3275da661c20cc6dfee2edd73b
parentd00715f00690715d7ba29bd1b8671ae01a9a70e7 (diff)
TUSCANY-3082 extend the reference clone operation so that the endpoint references themselves are cloned and made to point back to the cloned reference.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@783752 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
index 18782e4f33..89a6508a24 100644
--- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
+++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java
@@ -24,6 +24,7 @@ import java.util.List;
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Callback;
+import org.apache.tuscany.sca.assembly.ComponentReference;
import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.EndpointReference2;
import org.apache.tuscany.sca.assembly.Reference;
@@ -53,7 +54,15 @@ public class ReferenceImpl extends AbstractReferenceImpl implements Reference, C
ReferenceImpl clone = (ReferenceImpl)super.clone();
clone.bindings = new ArrayList<Binding>(bindings);
clone.targets = new ArrayList<ComponentService>(targets);
- clone.endpointReferences = new ArrayList<EndpointReference2>(endpointReferences);
+ // clone the endpoint references themselves and set the reference pointer back to
+ // this new refrence
+ clone.endpointReferences = new ArrayList<EndpointReference2>();
+
+ for (EndpointReference2 epr : endpointReferences){
+ EndpointReference2 eprClone = (EndpointReference2)epr.clone();
+ eprClone.setReference((ComponentReference)clone);
+ clone.endpointReferences.add(eprClone);
+ }
return clone;
}