|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.objectweb.asm.ClassAdapter
org.apache.felix.ipojo.manipulation.MethodCreator
public class MethodCreator
iPOJO Class Adapter. This class adapt the visited class to link the class with the container.
| Field Summary | |
|---|---|
private static java.lang.String |
ENTRY
onEntry method name. |
private static java.lang.String |
ERROR
on Error method name. |
private static java.lang.String |
EXIT
onExit method name. |
private static java.lang.String |
FIELD_FLAG_PREFIX
Filed flag prefix. |
private static java.lang.String |
GET
onGet method name. |
static java.lang.String |
IM_FIELD
Instance Manager Field. |
private java.util.Set |
m_fields
Set of fields detected in the class. |
private boolean |
m_foundSuitableConstructor
Set to true when a suitable constructor
is found. |
private java.util.List |
m_methodFlags
List of fields injected as method flag in the class. |
private java.util.List |
m_methods
List of methods contained in the class. |
private java.lang.String |
m_owner
Name of the current manipulated class. |
private java.lang.String |
m_superclass
Name of the super class. |
private java.util.List |
m_visitedMethods
The list of methods visited during the previous analysis. |
private static java.lang.String |
METHOD_FLAG_PREFIX
Method flag prefix. |
private static java.lang.String |
POJO
POJO class. |
private static java.lang.String |
PREFIX
All POJO method will be renamed by using this prefix. |
private static java.lang.String |
SET
onSet method name. |
| 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, 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, 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, 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, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6 |
| Constructor Summary | |
|---|---|
MethodCreator(org.objectweb.asm.ClassVisitor arg0,
java.util.Map fields,
java.util.List methods)
Constructor. |
|
| Method Summary | |
|---|---|
private void |
addIMField()
Add the instance manager field (__im). |
private void |
addPOJOInterface(int version,
int access,
java.lang.String name,
java.lang.String signature,
java.lang.String superName,
java.lang.String[] interfaces)
Add the POJO interface to the visited class. |
private void |
createArrayGetter(java.lang.String name,
java.lang.String desc,
org.objectweb.asm.Type type)
Create a setter method for an array. |
private void |
createArraySetter(java.lang.String name,
java.lang.String desc,
org.objectweb.asm.Type type)
Create a getter method for an array. |
private void |
createGetComponentInstanceMethod()
Create the getComponentInstance method. |
private void |
createSetInstanceManagerMethod()
Create the setter method for the __cm field. |
private void |
createSimpleConstructor()
Creates a simple constructor with an instance manager in argument if no suitable constructor is found during the visit. |
private void |
createSimpleGetter(java.lang.String name,
java.lang.String desc,
org.objectweb.asm.Type type)
Create the getter for a field. |
private void |
createSimpleSetter(java.lang.String name,
java.lang.String desc,
org.objectweb.asm.Type type)
Create the setter method for one property. |
private void |
generateBCConstructor(int access,
java.lang.String signature,
java.lang.String[] exceptions,
java.util.List annotations)
Create a constructor to call the manipulated constructor. |
private void |
generateEmptyConstructor(int access,
java.lang.String signature,
java.lang.String[] exceptions,
java.util.List annotations)
Create a constructor to call the manipulated constructor. |
private java.lang.String |
generateMethodFlag(java.lang.String name,
java.lang.String desc)
Generate a method flag name. |
private void |
generateMethodHeader(int access,
java.lang.String name,
java.lang.String desc,
java.lang.String signature,
java.lang.String[] exceptions,
java.util.List annotations)
Generate the method header of a POJO method. |
private java.lang.String |
generateMethodId(java.lang.String name,
java.lang.String desc)
Generate the method id based on the given method name and method descriptor. |
private MethodDescriptor |
getMethodDescriptor(java.lang.String name,
java.lang.String desc)
Gets the method descriptor for the specified name and descriptor. |
void |
visit(int version,
int access,
java.lang.String name,
java.lang.String signature,
java.lang.String superName,
java.lang.String[] interfaces)
Visit method. |
void |
visitEnd()
Visit end. |
org.objectweb.asm.FieldVisitor |
visitField(int access,
java.lang.String name,
java.lang.String desc,
java.lang.String signature,
java.lang.Object value)
Visit a Field. |
org.objectweb.asm.MethodVisitor |
visitMethod(int access,
java.lang.String name,
java.lang.String desc,
java.lang.String signature,
java.lang.String[] exceptions)
A method is visited. |
| Methods inherited from class org.objectweb.asm.ClassAdapter |
|---|
visitAnnotation, visitAttribute, visitInnerClass, visitOuterClass, visitSource |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String IM_FIELD
private static final java.lang.String PREFIX
private static final java.lang.String POJO
private static final java.lang.String FIELD_FLAG_PREFIX
private static final java.lang.String METHOD_FLAG_PREFIX
private static final java.lang.String ENTRY
private static final java.lang.String EXIT
private static final java.lang.String ERROR
private static final java.lang.String GET
private static final java.lang.String SET
private java.lang.String m_owner
private java.util.Set m_fields
private java.util.List m_methods
private java.util.List m_methodFlags
private java.util.List m_visitedMethods
private boolean m_foundSuitableConstructor
true when a suitable constructor
is found. If not set to true at the end
of the visit, the manipulator injects a constructor.
private java.lang.String m_superclass
| Constructor Detail |
|---|
public MethodCreator(org.objectweb.asm.ClassVisitor arg0,
java.util.Map fields,
java.util.List methods)
arg0 - : class visitor.fields - : fields map detected during the previous class analysis.methods - : the list of the detected method during the previous class analysis.| Method Detail |
|---|
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 interface org.objectweb.asm.ClassVisitorvisit in class org.objectweb.asm.ClassAdapterversion - : versionaccess - : access flagname - : class namesignature - : signaturesuperName - : parent classinterfaces - : implemented interfaceClassAdapter.visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])
public org.objectweb.asm.MethodVisitor visitMethod(int access,
java.lang.String name,
java.lang.String desc,
java.lang.String signature,
java.lang.String[] exceptions)
visitMethod in interface org.objectweb.asm.ClassVisitorvisitMethod in class org.objectweb.asm.ClassAdapteraccess - : access flag.name - : name of the methoddesc - : method descriptorsignature - : signatureexceptions - : declared exceptions.
ClassAdapter.visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])
private MethodDescriptor getMethodDescriptor(java.lang.String name,
java.lang.String desc)
m_visitedMethods
name - the name of the methoddesc - the descriptor of the method
null if not found.
public org.objectweb.asm.FieldVisitor visitField(int access,
java.lang.String name,
java.lang.String desc,
java.lang.String signature,
java.lang.Object value)
visitField in interface org.objectweb.asm.ClassVisitorvisitField in class org.objectweb.asm.ClassAdapteraccess - : access modifiername - : name of the fielddesc - : description of the fieldsignature - : signature of the fieldvalue - : value of the field
ClassVisitor.visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object)
private void generateEmptyConstructor(int access,
java.lang.String signature,
java.lang.String[] exceptions,
java.util.List annotations)
access - : access flagsignature - : method signatureexceptions - : declared exceptionannotations - : the annotations to move to this constructor.
private void generateBCConstructor(int access,
java.lang.String signature,
java.lang.String[] exceptions,
java.util.List annotations)
access - : access flagsignature - : method signatureexceptions - : declared exceptionannotations - : the annotations to move to this constructor.
private void generateMethodHeader(int access,
java.lang.String name,
java.lang.String desc,
java.lang.String signature,
java.lang.String[] exceptions,
java.util.List annotations)
access - : access flag.name - : method name.desc - : method descriptor.signature - : method signature.exceptions - : declared exceptions.annotations - : the annotations to move to this method.
private java.lang.String generateMethodFlag(java.lang.String name,
java.lang.String desc)
name - : method name.desc - : method descriptor.
private java.lang.String generateMethodId(java.lang.String name,
java.lang.String desc)
name - : method namedesc - : method descriptor
private void addIMField()
private void addPOJOInterface(int version,
int access,
java.lang.String name,
java.lang.String signature,
java.lang.String superName,
java.lang.String[] interfaces)
version - : class versionaccess - : class accessname - : class namesignature - : class signaturesuperName - : super classinterfaces - : implemented interfaces.public void visitEnd()
visitEnd in interface org.objectweb.asm.ClassVisitorvisitEnd in class org.objectweb.asm.ClassAdapterClassAdapter.visitEnd()private void createSimpleConstructor()
private void createSetInstanceManagerMethod()
private void createGetComponentInstanceMethod()
private void createArraySetter(java.lang.String name,
java.lang.String desc,
org.objectweb.asm.Type type)
name - : field namedesc - : method descriptiontype - : contained type (inside the array)
private void createArrayGetter(java.lang.String name,
java.lang.String desc,
org.objectweb.asm.Type type)
name - : field namedesc - : method descriptiontype - : contained type (inside the array)
private void createSimpleGetter(java.lang.String name,
java.lang.String desc,
org.objectweb.asm.Type type)
name - : field of the dependencydesc - : description of the getter methodtype - : type to return
private void createSimpleSetter(java.lang.String name,
java.lang.String desc,
org.objectweb.asm.Type type)
name - : name of the field representing a propertydesc - : description of the setter methodtype - : type of the property
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||