public class ClassWeaver
extends org.objectweb.asm.ClassVisitor
implements org.objectweb.asm.Opcodes
org.eclipse.persistence.internal.weaving.MethodWeaver
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CACHEKEY_SIGNATURE |
static java.lang.String |
CLONEABLE_SHORT_SIGNATURE |
static java.lang.String |
CT_SHORT_SIGNATURE |
static java.lang.String |
ENTITY_MANAGER_IMPL_SHORT_SIGNATURE |
static java.lang.String |
FETCHGROUP_SHORT_SIGNATURE |
static java.lang.String |
FETCHGROUP_SIGNATURE |
static java.lang.String |
FETCHGROUP_TRACKER_SHORT_SIGNATURE |
static java.lang.String |
FETCHGROUP_TRACKER_SIGNATURE |
static java.lang.String |
ITEM_LINKS_SIGNATURE |
static java.lang.String |
JPA_TRANSIENT_DESCRIPTION |
static java.lang.String |
LINK_SIGNATURE |
static java.lang.String |
LIST_RELATIONSHIP_INFO_SIGNATURE |
static java.lang.String |
LONG_SIGNATURE |
static java.lang.String |
OBJECT_SIGNATURE |
static java.lang.String |
PBOOLEAN_SIGNATURE |
static java.lang.String |
PCE_SHORT_SIGNATURE |
static java.lang.String |
PCE_SIGNATURE |
static java.lang.String |
PCL_SHORT_SIGNATURE |
static java.lang.String |
PCL_SIGNATURE |
static java.lang.String |
PERSISTENCE_ENTITY_SHORT_SIGNATURE |
static java.lang.String |
PERSISTENCE_FIELDNAME_POSTFIX |
static java.lang.String |
PERSISTENCE_FIELDNAME_PREFIX |
static java.lang.String |
PERSISTENCE_GET |
static java.lang.String |
PERSISTENCE_OBJECT_SHORT_SIGNATURE |
static java.lang.String |
PERSISTENCE_OBJECT_SIGNATURE |
static java.lang.String |
PERSISTENCE_SET |
static java.lang.String |
PERSISTENCE_WEAVED_SHORT_SIGNATURE |
static java.lang.String |
SESSION_SIGNATURE |
static java.lang.String |
STRING_SIGNATURE |
static java.lang.String |
TW_CT_SHORT_SIGNATURE |
static java.lang.String |
TW_LAZY_SHORT_SIGNATURE |
static java.lang.String |
VECTOR_SIGNATURE |
static java.lang.String |
VH_SHORT_SIGNATURE |
static java.lang.String |
VHI_CLASSNAME |
static java.lang.String |
VHI_SHORT_SIGNATURE |
static java.lang.String |
VHI_SIGNATURE |
static java.lang.String |
VIRTUAL_GETTER_SIGNATURE |
static java.lang.String |
VIRTUAL_SETTER_SIGNATURE |
boolean |
weaved |
static java.lang.String |
WEAVED_FETCHGROUPS_SHORT_SIGNATURE |
static java.lang.String |
WEAVED_REST_LAZY_SHORT_SIGNATURE |
boolean |
weavedChangeTracker |
boolean |
weavedFetchGroups |
boolean |
weavedLazy |
boolean |
weavedPersistenceEntity |
boolean |
weavedRest |
static java.lang.String |
XML_TRANSIENT_DESCRIPTION |
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASM6, ASM7, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V9
Constructor and Description |
---|
ClassWeaver(org.objectweb.asm.ClassVisitor classWriter,
ClassDetails classDetails) |
Modifier and Type | Method and Description |
---|---|
void |
addFetchGroupMethods(ClassDetails classDetails)
Adds get/set method for FetchGroupTracker interface.
|
void |
addFetchGroupVariables()
Add a variable of type FetchGroup, Session to the class.
|
void |
addGetPropertyChangeListener(ClassDetails classDetails)
Add the implementation of the changeTracker_getPropertyChangeListener
method to the class.
|
void |
addGetterMethodForFieldAccess(ClassDetails classDetails,
AttributeDetails attributeDetails)
Adds a convenience method used to replace a GETFIELD when field access is
used.
|
void |
addGetterMethodForValueHolder(ClassDetails classDetails,
AttributeDetails attributeDetails)
Add a get method for the newly added valueholder.
|
void |
addInitializerForValueHolder(ClassDetails classDetails,
AttributeDetails attributeDetails)
Add a method that allows us to lazily initialize a valueholder we have
woven in This allows us to avoid initializing valueholders in the
constructor.
|
void |
addPersistenceEntityMethods(ClassDetails classDetails)
Adds get/set method for PersistenceEntity interface.
|
void |
addPersistenceEntityVariables()
Add a variable of type Object to the class.
|
void |
addPersistenceGetSet(ClassDetails classDetails)
Add an internal generic get and set method.
|
void |
addPersistenceNew(ClassDetails classDetails)
Add an internal empty constructor, and new method.
|
void |
addPersistencePostClone(ClassDetails classDetails)
Add an internal post clone method.
|
void |
addPersistenceRestMethods(ClassDetails classDetails) |
void |
addPersistenceRestVariables() |
void |
addPropertyChange(ClassDetails classDetails)
Add a method to track property changes.
|
void |
addPropertyChangeListener(boolean attributeAccess)
Add a variable of type PropertyChangeListener to the class.
|
void |
addSetPropertyChangeListener(ClassDetails classDetails)
Add the implementation of the changeTracker_setPropertyChangeListener
method to the class.
|
void |
addSetterMethodForFieldAccess(ClassDetails classDetails,
AttributeDetails attributeDetails)
Adds a convenience method used to replace a PUTFIELD when field access is
used.
|
void |
addSetterMethodForValueHolder(ClassDetails classDetails,
AttributeDetails attributeDetails)
Add a set method for the newly added ValueHolder.
|
void |
addShallowClone(ClassDetails classDetails)
Add an internal shallow clone method.
|
void |
addValueHolder(AttributeDetails attributeDetails)
Add a variable of type ValueHolderInterface to the class.
|
static java.lang.String |
getWeavedValueHolderGetMethodName(java.lang.String attributeName)
Return the get method name weaved for a value-holder attribute.
|
static java.lang.String |
getWeavedValueHolderSetMethodName(java.lang.String attributeName)
Return the set method name weaved for a value-holder attribute.
|
static boolean |
isJAXBOnPath()
Return if the JAXB classes are on the classpath (if they are the
XmlTransient annotation is added).
|
static void |
unwrapPrimitive(AttributeDetails attribute,
org.objectweb.asm.MethodVisitor visitor)
Used for primitive conversion.
|
void |
visit(int version,
int access,
java.lang.String name,
java.lang.String signature,
java.lang.String superName,
java.lang.String[] interfaces)
Visit the class byte-codes and modify to weave Persistence interfaces.
|
void |
visitEnd()
Visit the end of the class byte codes.
|
org.objectweb.asm.MethodVisitor |
visitMethod(int access,
java.lang.String methodName,
java.lang.String desc,
java.lang.String signature,
java.lang.String[] exceptions)
Construct a MethodWeaver and allow it to process the method.
|
static java.lang.String |
wrapperFor(int sort)
Used for primitive conversion.
|
public static final java.lang.String PERSISTENCE_WEAVED_SHORT_SIGNATURE
public static final java.lang.String TW_LAZY_SHORT_SIGNATURE
public static final java.lang.String VHI_CLASSNAME
public static final java.lang.String VH_SHORT_SIGNATURE
public static final java.lang.String VHI_SHORT_SIGNATURE
public static final java.lang.String VHI_SIGNATURE
public static final java.lang.String TW_CT_SHORT_SIGNATURE
public static final java.lang.String PCL_SHORT_SIGNATURE
public static final java.lang.String PCL_SIGNATURE
public static final java.lang.String CT_SHORT_SIGNATURE
public static final java.lang.String PCE_SHORT_SIGNATURE
public static final java.lang.String PCE_SIGNATURE
public static final java.lang.String PERSISTENCE_ENTITY_SHORT_SIGNATURE
public static final java.lang.String PERSISTENCE_OBJECT_SHORT_SIGNATURE
public static final java.lang.String PERSISTENCE_OBJECT_SIGNATURE
public static final java.lang.String VECTOR_SIGNATURE
public static final java.lang.String OBJECT_SIGNATURE
public static final java.lang.String STRING_SIGNATURE
public static final java.lang.String CACHEKEY_SIGNATURE
public static final java.lang.String WEAVED_FETCHGROUPS_SHORT_SIGNATURE
public static final java.lang.String FETCHGROUP_TRACKER_SIGNATURE
public static final java.lang.String FETCHGROUP_TRACKER_SHORT_SIGNATURE
public static final java.lang.String FETCHGROUP_SHORT_SIGNATURE
public static final java.lang.String FETCHGROUP_SIGNATURE
public static final java.lang.String SESSION_SIGNATURE
public static final java.lang.String ENTITY_MANAGER_IMPL_SHORT_SIGNATURE
public static final java.lang.String PBOOLEAN_SIGNATURE
public static final java.lang.String LONG_SIGNATURE
public static final java.lang.String WEAVED_REST_LAZY_SHORT_SIGNATURE
public static final java.lang.String LIST_RELATIONSHIP_INFO_SIGNATURE
public static final java.lang.String CLONEABLE_SHORT_SIGNATURE
public static final java.lang.String JPA_TRANSIENT_DESCRIPTION
public static final java.lang.String XML_TRANSIENT_DESCRIPTION
public static final java.lang.String PERSISTENCE_SET
public static final java.lang.String PERSISTENCE_GET
public static final java.lang.String PERSISTENCE_FIELDNAME_PREFIX
public static final java.lang.String PERSISTENCE_FIELDNAME_POSTFIX
public static final java.lang.String VIRTUAL_GETTER_SIGNATURE
public static final java.lang.String VIRTUAL_SETTER_SIGNATURE
public static final java.lang.String LINK_SIGNATURE
public static final java.lang.String ITEM_LINKS_SIGNATURE
public boolean weaved
public boolean weavedLazy
public boolean weavedPersistenceEntity
public boolean weavedChangeTracker
public boolean weavedFetchGroups
public boolean weavedRest
public ClassWeaver(org.objectweb.asm.ClassVisitor classWriter, ClassDetails classDetails)
public static java.lang.String wrapperFor(int sort)
public static void unwrapPrimitive(AttributeDetails attribute, org.objectweb.asm.MethodVisitor visitor)
public static java.lang.String getWeavedValueHolderGetMethodName(java.lang.String attributeName)
public static java.lang.String getWeavedValueHolderSetMethodName(java.lang.String attributeName)
public static boolean isJAXBOnPath()
public void addValueHolder(AttributeDetails attributeDetails)
public void addPropertyChangeListener(boolean attributeAccess)
public void addGetPropertyChangeListener(ClassDetails classDetails)
public void addSetPropertyChangeListener(ClassDetails classDetails)
public void addPropertyChange(ClassDetails classDetails)
public void addInitializerForValueHolder(ClassDetails classDetails, AttributeDetails attributeDetails)
public void addGetterMethodForValueHolder(ClassDetails classDetails, AttributeDetails attributeDetails)
public void addSetterMethodForValueHolder(ClassDetails classDetails, AttributeDetails attributeDetails)
public void addSetterMethodForFieldAccess(ClassDetails classDetails, AttributeDetails attributeDetails)
public void addGetterMethodForFieldAccess(ClassDetails classDetails, AttributeDetails attributeDetails)
public void addPersistenceEntityVariables()
public void addPersistencePostClone(ClassDetails classDetails)
public void addPersistenceRestMethods(ClassDetails classDetails)
public void addPersistenceRestVariables()
public void addShallowClone(ClassDetails classDetails)
public void addPersistenceNew(ClassDetails classDetails)
public void addPersistenceGetSet(ClassDetails classDetails)
public void addPersistenceEntityMethods(ClassDetails classDetails)
public void addFetchGroupVariables()
public void addFetchGroupMethods(ClassDetails classDetails)
public void visit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)
visit
in class org.objectweb.asm.ClassVisitor
public org.objectweb.asm.MethodVisitor visitMethod(int access, java.lang.String methodName, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)
visitMethod
in class org.objectweb.asm.ClassVisitor
public void visitEnd()
visitEnd
in class org.objectweb.asm.ClassVisitor
EclipseLink 2.6.3, "build v20160428-59c81c5" API Reference