org.apache.tuscany.sdo.helper
Class CrossScopeCopyHelperImpl

java.lang.Object
  extended by org.apache.tuscany.sdo.helper.CrossScopeCopyHelperImpl
All Implemented Interfaces:
CopyHelper

public class CrossScopeCopyHelperImpl
extends Object
implements CopyHelper

A CopyHelper implementation that creates the copy objects in a specific metadata scope. The target scope must contain a compatible version of the Types needed to create the copy objects.


Nested Class Summary
protected  class CrossScopeCopyHelperImpl.CrossScopeCopier
           
 
Field Summary
protected  TypeHelper scope
           
 
Fields inherited from interface commonj.sdo.helper.CopyHelper
INSTANCE
 
Constructor Summary
CrossScopeCopyHelperImpl(TypeHelper targetScope)
           
 
Method Summary
 DataObject copy(DataObject dataObject)
          Create a deep copy of the DataObject tree: Copies the dataObject and all its contained DataObjects recursively.
 DataObject copyShallow(DataObject dataObject)
          Create a shallow copy of the DataObject dataObject: Creates a new DataObject copiedDataObject with the same values as the source dataObject for each property where property.getType().isDataType() is true.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

scope

protected TypeHelper scope
Constructor Detail

CrossScopeCopyHelperImpl

public CrossScopeCopyHelperImpl(TypeHelper targetScope)
Method Detail

copyShallow

public DataObject copyShallow(DataObject dataObject)
Description copied from interface: CopyHelper
Create a shallow copy of the DataObject dataObject: Creates a new DataObject copiedDataObject with the same values as the source dataObject for each property where property.getType().isDataType() is true. The value of such a Property property in copiedDataObject is: dataObject.get(property) for single-valued Properties (copiedDataObject.get(property) equals() dataObject.get(property)), or a List where each member is equal to the member at the same index in dataObject for multi-valued Properties copiedDataObject.getList(property).get(i) equals() dataObject.getList(property).get(i) The copied Object is unset for each Property where property.getType().isDataType() is false since they are not copied. Read-only properties are copied. A copied object shares metadata with the source object sourceDO.getType() == copiedDO.getType() If a ChangeSummary is part of the source DataObject the copy has a new, empty ChangeSummary. Logging state is the same as the source ChangeSummary.

Specified by:
copyShallow in interface CopyHelper
Parameters:
dataObject - to be copied
Returns:
copy of dataObject

copy

public DataObject copy(DataObject dataObject)
Description copied from interface: CopyHelper
Create a deep copy of the DataObject tree: Copies the dataObject and all its contained DataObjects recursively. Values of Properties are copied as in shallow copy, and values of Properties where property.getType().isDataType() is false are copied where each value copied must be a DataObject contained by the source dataObject. If a DataObject is outside the DataObject tree and the property is bidirectional, then the DataObject is skipped. If a DataObject is outside the DataObject tree and the property is unidirectional, then the same DataObject is referenced. Read-only properties are copied. If any DataObject referenced is not in the containment tree an IllegalArgumentException is thrown. If a ChangeSummary is part of the copy tree the new ChangeSummary refers to objects in the new DataObject tree. Logging state is the same as the source ChangeSummary.

Specified by:
copy in interface CopyHelper
Parameters:
dataObject - to be copied.
Returns:
copy of dataObject


Copyright © 2013 The Apache Software Foundation. All Rights Reserved.