diff options
Diffstat (limited to '')
2 files changed, 19 insertions, 1 deletions
diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java index 113ec0c72c..0acb326a47 100644 --- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java +++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java @@ -238,6 +238,11 @@ public class OperationImpl implements Operation { copy.attributes = new ConcurrentHashMap<Object, Object>(); copy.attributes.putAll(attributes); + + // [rfeng] We need to clone the wrapper as it holds the databinding information + if (wrapper != null) { + copy.wrapper = (WrapperInfo)wrapper.clone(); + } return copy; } diff --git a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/util/WrapperInfo.java b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/util/WrapperInfo.java index 840e6306bd..2252434c39 100644 --- a/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/util/WrapperInfo.java +++ b/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/interfacedef/util/WrapperInfo.java @@ -48,7 +48,7 @@ import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl; * @version $Rev$ $Date$ * @tuscany.spi.extension.asclient */ -public class WrapperInfo { +public class WrapperInfo implements Cloneable { private ElementInfo inputWrapperElement; private ElementInfo outputWrapperElement; @@ -188,4 +188,17 @@ public class WrapperInfo { public void setOutputWrapperType(DataType<XMLType> outputWrapperType) { this.outputWrapperType = outputWrapperType; } + + @Override + public Object clone() throws CloneNotSupportedException { + WrapperInfo copy = (WrapperInfo) super.clone(); + if (inputWrapperType != null) { + copy.inputWrapperType = (DataType<XMLType>)inputWrapperType.clone(); + } + if (outputWrapperType != null) { + copy.outputWrapperType = (DataType<XMLType>)outputWrapperType.clone(); + } + return copy; + + } } |