diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-06-11 13:03:35 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-06-11 13:03:35 +0000 |
commit | 3f6f4bd3c857b9e78de3cc541b97f38ddbbe780d (patch) | |
tree | 39825423e4180b3275da661c20cc6dfee2edd73b /java/sca/modules/assembly/src | |
parent | d00715f00690715d7ba29bd1b8671ae01a9a70e7 (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
Diffstat (limited to 'java/sca/modules/assembly/src')
-rw-r--r-- | java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ReferenceImpl.java | 11 |
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; } |