public class PlasticClassPool extends Object implements ClassLoaderDelegate, org.apache.tapestry5.internal.plastic.asm.Opcodes, PlasticClassListenerHub
ClassNode
s
to be instantiated as runtime classes.AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, 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, ASM4, ASM5, 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, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8
Constructor and Description |
---|
PlasticClassPool(ClassLoader parentLoader,
PlasticManagerDelegate delegate,
Set<String> controlledPackages,
Set<TransformationOption> options)
Creates the pool with a set of controlled packages; all classes in the controlled packages are loaded by the
pool's class loader, and all top-level classes in the controlled packages are transformed via the delegate.
|
Modifier and Type | Method and Description |
---|---|
void |
addPlasticClassListener(PlasticClassListener listener) |
org.apache.tapestry5.internal.plastic.asm.tree.ClassNode |
constructClassNodeFromBytecode(String className)
Constructs a class node by reading the raw bytecode for a class and instantiating a ClassNode
(via
ClassReader.accept(org.apache.tapestry5.internal.plastic.asm.ClassVisitor, int) ). |
protected Object |
createAnnotation(String className,
org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode node) |
AnnotationAccess |
createAnnotationAccess(List<org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode> annotationNodes) |
AnnotationAccess |
createAnnotationAccess(String className) |
PlasticClassTransformation |
createTransformation(String baseClassName,
String newClassName) |
PlasticClassTransformation |
createTransformation(String baseClassName,
String newClassName,
String implementationClassName) |
ClassInstantiator |
getClassInstantiator(String className) |
ClassLoader |
getClassLoader() |
InternalPlasticClassTransformation |
getPlasticClassTransformation(String className)
For a fully-qualified class name of an existing class, loads the bytes for the class
and returns a PlasticClass instance.
|
Class<?> |
loadAndTransformClass(String className)
Load the class, transforming it as necessary.
|
Class |
realize(String primaryClassName,
ClassType classType,
org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode) |
Class |
realizeTransformedClass(org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode,
InheritanceData inheritanceData,
StaticContext staticContext) |
void |
removePlasticClassListener(PlasticClassListener listener) |
boolean |
shouldInterceptClassLoading(String className)
Identifies which classes are to be loaded.
|
public PlasticClassPool(ClassLoader parentLoader, PlasticManagerDelegate delegate, Set<String> controlledPackages, Set<TransformationOption> options)
parentLoader
- typically, the Thread's context class loaderdelegate
- responsible for end stages of transforming top-level classescontrolledPackages
- set of package names (note: retained, not copied)options
- used when transforming classespublic ClassLoader getClassLoader()
public Class realizeTransformedClass(org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode, InheritanceData inheritanceData, StaticContext staticContext)
public Class realize(String primaryClassName, ClassType classType, org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode)
public AnnotationAccess createAnnotationAccess(String className)
public AnnotationAccess createAnnotationAccess(List<org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode> annotationNodes)
protected Object createAnnotation(String className, org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode node)
public boolean shouldInterceptClassLoading(String className)
ClassLoaderDelegate
shouldInterceptClassLoading
in interface ClassLoaderDelegate
className
- fully qualified class namepublic Class<?> loadAndTransformClass(String className) throws ClassNotFoundException
ClassLoaderDelegate
loadAndTransformClass
in interface ClassLoaderDelegate
className
- binary class nameClassNotFoundException
public InternalPlasticClassTransformation getPlasticClassTransformation(String className) throws ClassNotFoundException
ClassNotFoundException
public org.apache.tapestry5.internal.plastic.asm.tree.ClassNode constructClassNodeFromBytecode(String className)
ClassReader.accept(org.apache.tapestry5.internal.plastic.asm.ClassVisitor, int)
).className
- fully qualified class namepublic PlasticClassTransformation createTransformation(String baseClassName, String newClassName)
public PlasticClassTransformation createTransformation(String baseClassName, String newClassName, String implementationClassName)
public ClassInstantiator getClassInstantiator(String className)
public void addPlasticClassListener(PlasticClassListener listener)
addPlasticClassListener
in interface PlasticClassListenerHub
public void removePlasticClassListener(PlasticClassListener listener)
removePlasticClassListener
in interface PlasticClassListenerHub
${project.version} - Copyright © 2003-2015 The Apache Software Foundation.