Class ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl
- java.lang.Object
-
- org.glassfish.pfl.dynamic.copyobject.impl.ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl
-
- All Implemented Interfaces:
ClassCopierOrdinaryImpl.ClassFieldCopier
- Enclosing class:
- ClassCopierOrdinaryImpl
private static class ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl extends java.lang.Object implements ClassCopierOrdinaryImpl.ClassFieldCopier
Use bridge to copy objects. Now that we are on JDK 5, this has not been known to fail on any VM (unlike on JDK 1.4.1). Note that the reflective copier should work now on JDK 5, due to the change in suppressAccessChecks that supports writing to final fields. This copier also supports @Copy annotations on fields.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier
-
Field Summary
-
Constructor Summary
Constructors Constructor Description ClassFieldCopierUnsafeImpl(java.lang.Class<?> cls, PipelineClassCopierFactory ccf)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
copy(java.util.Map<java.lang.Object,java.lang.Object> oldToNew, java.lang.Object source, java.lang.Object result)
Copy all fields from src to dest, using oldToNew as usual to preserve aliasing.private boolean
fieldIsCopyable(java.lang.reflect.Field field)
private ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier
getPrimitiveFieldCopier(java.lang.Class<?> cls)
private ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier
getPrimitiveFieldInitializer(java.lang.Class<?> cls)
private ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier
getUnsafeFieldCopier(java.lang.reflect.Field fld)
java.lang.String
toString()
-
-
-
Field Detail
-
myClass
private java.lang.Class<?> myClass
-
fieldOffsets
private long[] fieldOffsets
-
fieldCopiers
private ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier[] fieldCopiers
-
classCopierFactory
private PipelineClassCopierFactory classCopierFactory
-
superCopier
private ClassCopierOrdinaryImpl.ClassFieldCopier superCopier
-
byteUnsafeFieldInitializer
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier byteUnsafeFieldInitializer
-
charUnsafeFieldInitializer
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier charUnsafeFieldInitializer
-
shortUnsafeFieldInitializer
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier shortUnsafeFieldInitializer
-
intUnsafeFieldInitializer
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier intUnsafeFieldInitializer
-
longUnsafeFieldInitializer
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier longUnsafeFieldInitializer
-
booleanUnsafeFieldInitializer
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier booleanUnsafeFieldInitializer
-
floatUnsafeFieldInitializer
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier floatUnsafeFieldInitializer
-
doubleUnsafeFieldInitializer
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier doubleUnsafeFieldInitializer
-
byteUnsafeFieldCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier byteUnsafeFieldCopier
-
charUnsafeFieldCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier charUnsafeFieldCopier
-
shortUnsafeFieldCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier shortUnsafeFieldCopier
-
intUnsafeFieldCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier intUnsafeFieldCopier
-
longUnsafeFieldCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier longUnsafeFieldCopier
-
booleanUnsafeFieldCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier booleanUnsafeFieldCopier
-
floatUnsafeFieldCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier floatUnsafeFieldCopier
-
doubleUnsafeFieldCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier doubleUnsafeFieldCopier
-
objectUnsafeFieldCopier
private ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier objectUnsafeFieldCopier
-
objectUnsafeFieldInitializer
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier objectUnsafeFieldInitializer
-
objectUnsafeFieldSourceCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier objectUnsafeFieldSourceCopier
-
objectUnsafeFieldResultCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier objectUnsafeFieldResultCopier
-
objectUnsafeFieldIdentityCopier
private static ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier objectUnsafeFieldIdentityCopier
-
-
Constructor Detail
-
ClassFieldCopierUnsafeImpl
public ClassFieldCopierUnsafeImpl(java.lang.Class<?> cls, PipelineClassCopierFactory ccf) throws ReflectiveCopyException
- Throws:
ReflectiveCopyException
-
-
Method Detail
-
getPrimitiveFieldInitializer
private ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier getPrimitiveFieldInitializer(java.lang.Class<?> cls)
-
getPrimitiveFieldCopier
private ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier getPrimitiveFieldCopier(java.lang.Class<?> cls)
-
getUnsafeFieldCopier
private ClassCopierOrdinaryImpl.ClassFieldCopierUnsafeImpl.UnsafeFieldCopier getUnsafeFieldCopier(java.lang.reflect.Field fld)
-
fieldIsCopyable
private boolean fieldIsCopyable(java.lang.reflect.Field field)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
copy
public void copy(java.util.Map<java.lang.Object,java.lang.Object> oldToNew, java.lang.Object source, java.lang.Object result) throws ReflectiveCopyException
Description copied from interface:ClassCopierOrdinaryImpl.ClassFieldCopier
Copy all fields from src to dest, using oldToNew as usual to preserve aliasing. This copies all fields declared in the class, as well as in the super class.- Specified by:
copy
in interfaceClassCopierOrdinaryImpl.ClassFieldCopier
- Throws:
ReflectiveCopyException
-
-