ix.util
Class ObjectCopier

java.lang.Object
  extended by ix.util.ObjectCopier
All Implemented Interfaces:
ObjectMapper
Direct Known Subclasses:
DeepCopier, FixDomain.Fixer, MatchChoiceTest.VarMaker, PlanInstaller.Pass1, PlanMaker.Pass2

public class ObjectCopier
extends java.lang.Object
implements ObjectMapper

Copies Objects.


Field Summary
protected  ClassSyntax syntax
           
 
Constructor Summary
ObjectCopier()
          Creates a copier that uses the default ClassSyntax.
ObjectCopier(ClassSyntax syntax)
          Creates a copier that uses the specified ClassSyntax as a source for ClassDescrs.
 
Method Summary
 java.lang.Object copy(java.lang.Object obj)
          Returns a copy of the object.
 LList copyLList(LList obj)
          Copies an LList that has a spine made of instances of any mixture of Cons subclasses, calling mapElement(Object) on each list element as it goes.
static void main(java.lang.String[] argv)
          Test loop
 java.lang.Object mapElement(java.lang.Object elt)
          Called on subobjects of the object being copied to determine what object takes the subobject's place in the copy.
 java.lang.Object mapList(java.util.List obj, ClassDescr cd)
          Copies a List, calling mapElement(Object) on each element of the list.
 java.lang.Object mapMap(java.util.Map obj, ClassDescr cd)
          Copies a Map, calling mapElement(Object) on each key and value.
 java.lang.Object mapPrimitive(java.lang.Object obj, ClassDescr cd)
          Copies a "primitive" object.
 java.lang.Object mapSet(java.util.Set obj, ClassDescr cd)
          Copies a Set, calling mapElement(Object) on each member of the set.
 java.lang.Object mapStruct(java.lang.Object obj, ClassDescr cd)
          Copies a structure, calling mapElement(Object) on each field value.
 java.lang.Object mapXML(LiteralDocument xml, ClassDescr cd)
          Copies embedded XML.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

syntax

protected ClassSyntax syntax
Constructor Detail

ObjectCopier

public ObjectCopier()
Creates a copier that uses the default ClassSyntax.

See Also:
XML.config(), XMLConfig.defaultClassSyntax()

ObjectCopier

public ObjectCopier(ClassSyntax syntax)
Creates a copier that uses the specified ClassSyntax as a source for ClassDescrs.

Method Detail

copy

public java.lang.Object copy(java.lang.Object obj)
Returns a copy of the object. Whether this is a deep or shallow (top-level only) copy depends on the mapElement(Object) method.


mapElement

public java.lang.Object mapElement(java.lang.Object elt)
Called on subobjects of the object being copied to determine what object takes the subobject's place in the copy. The method in the ObjectCopier class is the identity function. In a subclass that made a deep (recursive) copy, it would call copy(Object) on the element.


mapPrimitive

public java.lang.Object mapPrimitive(java.lang.Object obj,
                                     ClassDescr cd)
Copies a "primitive" object. It's status as a primitive was determined by the ClassDescr. In the ObjectCopier class, mapPrimitive is the identity function.

Specified by:
mapPrimitive in interface ObjectMapper

mapStruct

public java.lang.Object mapStruct(java.lang.Object obj,
                                  ClassDescr cd)
Copies a structure, calling mapElement(Object) on each field value.

Specified by:
mapStruct in interface ObjectMapper

mapXML

public java.lang.Object mapXML(LiteralDocument xml,
                               ClassDescr cd)
Copies embedded XML. The method in the ObjectCopier class is the identity function.

Specified by:
mapXML in interface ObjectMapper

mapList

public java.lang.Object mapList(java.util.List obj,
                                ClassDescr cd)
Copies a List, calling mapElement(Object) on each element of the list. If the list is an LList, this method calls copyLList(LList) to do the work.

Specified by:
mapList in interface ObjectMapper

copyLList

public LList copyLList(LList obj)
Copies an LList that has a spine made of instances of any mixture of Cons subclasses, calling mapElement(Object) on each list element as it goes.

See Also:
LList, Cons

mapSet

public java.lang.Object mapSet(java.util.Set obj,
                               ClassDescr cd)
Copies a Set, calling mapElement(Object) on each member of the set.

Specified by:
mapSet in interface ObjectMapper

mapMap

public java.lang.Object mapMap(java.util.Map obj,
                               ClassDescr cd)
Copies a Map, calling mapElement(Object) on each key and value.

Specified by:
mapMap in interface ObjectMapper

main

public static void main(java.lang.String[] argv)
Test loop