org.objectweb.easybeans.enhancer.bean
Class Migration21ClassAdapter

java.lang.Object
  extended by org.objectweb.asm.ClassAdapter
      extended by org.objectweb.easybeans.enhancer.bean.Migration21ClassAdapter
All Implemented Interfaces:
org.objectweb.asm.ClassVisitor, org.objectweb.asm.Opcodes

public class Migration21ClassAdapter
extends org.objectweb.asm.ClassAdapter
implements org.objectweb.asm.Opcodes

This adapter is used to add the EJB 2.1 methods that are required for the EJBObject or EJBLocalObject interfaces.

Author:
Florent Benoit

Field Summary
private  boolean addRemoveMethod
          Remove method has been implemented ?
private  ClassAnnotationMetadata classAnnotationMetadata
          Metadata available by this adapter for a class.
private static int FIVE
          Constant = 5.
private static int FOUR
          Constant = 4.
private static int ONE
          Constant = 1.
private static int THREE
          Constant = 3.
private static int TWO
          Constant = 2.
 
Fields inherited from class org.objectweb.asm.ClassAdapter
cv
 
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, 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, 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, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, 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, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6
 
Constructor Summary
Migration21ClassAdapter(ClassAnnotationMetadata classAnnotationMetadata, org.objectweb.asm.ClassVisitor cv)
          Constructor.
 
Method Summary
private  void addGetHandleMethod()
          Add the internal getHandle method.
private  void addGetPrimaryKey()
          Add the getPrimaryKey() method.
private  void addIsIdentitalEJBLocalObject()
          Add the method for EJBLocalObject equality.
private  void addIsIdentitalEJBObject()
          Add the method for EJBObject equality.
private  void addIsIdentitalMethods()
          Add the two methods (one fo EJBObject and the other for EJBLocalObject).
private  void addRemoveMethod()
          Add en empty remove method.
 void visitEnd()
          Visits the end of the class.
 org.objectweb.asm.MethodVisitor visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)
          Visits a method of the class.
 
Methods inherited from class org.objectweb.asm.ClassAdapter
visit, visitAnnotation, visitAttribute, visitField, visitInnerClass, visitOuterClass, visitSource
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

classAnnotationMetadata

private ClassAnnotationMetadata classAnnotationMetadata
Metadata available by this adapter for a class.


addRemoveMethod

private boolean addRemoveMethod
Remove method has been implemented ?


ONE

private static final int ONE
Constant = 1.

See Also:
Constant Field Values

TWO

private static final int TWO
Constant = 2.

See Also:
Constant Field Values

THREE

private static final int THREE
Constant = 3.

See Also:
Constant Field Values

FOUR

private static final int FOUR
Constant = 4.

See Also:
Constant Field Values

FIVE

private static final int FIVE
Constant = 5.

See Also:
Constant Field Values
Constructor Detail

Migration21ClassAdapter

public Migration21ClassAdapter(ClassAnnotationMetadata classAnnotationMetadata,
                               org.objectweb.asm.ClassVisitor cv)
Constructor.

Parameters:
classAnnotationMetadata - object containing all attributes of the class
cv - the class visitor to which this adapter must delegate calls.
Method Detail

visitMethod

public org.objectweb.asm.MethodVisitor visitMethod(int access,
                                                   java.lang.String name,
                                                   java.lang.String desc,
                                                   java.lang.String signature,
                                                   java.lang.String[] exceptions)
Visits a method of the class. This method must return a new MethodVisitor instance (or null) each time it is called, i.e., it should not return a previously returned visitor.

Specified by:
visitMethod in interface org.objectweb.asm.ClassVisitor
Overrides:
visitMethod in class org.objectweb.asm.ClassAdapter
Parameters:
access - the method's access flags (see Opcodes). This parameter also indicates if the method is synthetic and/or deprecated.
name - the method's name.
desc - the method's descriptor (see Type).
signature - the method's signature. May be null if the method parameters, return type and exceptions do not use generic types.
exceptions - the internal names of the method's exception classes (see getInternalName). May be null.
Returns:
an object to visit the byte code of the method, or null if this class visitor is not interested in visiting the code of this method.

visitEnd

public void visitEnd()
Visits the end of the class. This method, which is the last one to be called, is used to inform the visitor that all the fields and methods of the class have been visited.

Specified by:
visitEnd in interface org.objectweb.asm.ClassVisitor
Overrides:
visitEnd in class org.objectweb.asm.ClassAdapter

addRemoveMethod

private void addRemoveMethod()
Add en empty remove method. This method has been flagged as a remove/business method. Then, when this method is called, the bean is destroyed.


addGetPrimaryKey

private void addGetPrimaryKey()
Add the getPrimaryKey() method. It always throw exceptions as it is intented to be used by session beans.


addGetHandleMethod

private void addGetHandleMethod()
Add the internal getHandle method. This method do nothing. The proxy client is handling this method.


addIsIdentitalMethods

private void addIsIdentitalMethods()
Add the two methods (one fo EJBObject and the other for EJBLocalObject). These methods handle the equality of beans.


addIsIdentitalEJBLocalObject

private void addIsIdentitalEJBLocalObject()
Add the method for EJBLocalObject equality.


addIsIdentitalEJBObject

private void addIsIdentitalEJBObject()
Add the method for EJBObject equality.