public class PlasticClassPool extends java.lang.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(java.lang.ClassLoader parentLoader,
PlasticManagerDelegate delegate,
java.util.Set<java.lang.String> controlledPackages,
java.util.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(java.lang.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 java.lang.Object |
createAnnotation(java.lang.String className,
org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode node) |
AnnotationAccess |
createAnnotationAccess(java.util.List<org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode> annotationNodes) |
AnnotationAccess |
createAnnotationAccess(java.lang.String className) |
PlasticClassTransformation |
createTransformation(java.lang.String baseClassName,
java.lang.String newClassName) |
PlasticClassTransformation |
createTransformation(java.lang.String baseClassName,
java.lang.String newClassName,
java.lang.String implementationClassName) |
ClassInstantiator |
getClassInstantiator(java.lang.String className) |
java.lang.ClassLoader |
getClassLoader() |
InternalPlasticClassTransformation |
getPlasticClassTransformation(java.lang.String className)
For a fully-qualified class name of an existing class, loads the bytes for the class
and returns a PlasticClass instance.
|
java.lang.Class<?> |
loadAndTransformClass(java.lang.String className)
Load the class, transforming it as necessary.
|
java.lang.Class |
realize(java.lang.String primaryClassName,
ClassType classType,
org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode) |
java.lang.Class |
realizeTransformedClass(org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode,
InheritanceData inheritanceData,
StaticContext staticContext) |
void |
removePlasticClassListener(PlasticClassListener listener) |
boolean |
shouldInterceptClassLoading(java.lang.String className)
Identifies which classes are to be loaded.
|
public PlasticClassPool(java.lang.ClassLoader parentLoader, PlasticManagerDelegate delegate, java.util.Set<java.lang.String> controlledPackages, java.util.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 java.lang.ClassLoader getClassLoader()
public java.lang.Class realizeTransformedClass(org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode, InheritanceData inheritanceData, StaticContext staticContext)
public java.lang.Class realize(java.lang.String primaryClassName, ClassType classType, org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode)
public AnnotationAccess createAnnotationAccess(java.lang.String className)
public AnnotationAccess createAnnotationAccess(java.util.List<org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode> annotationNodes)
protected java.lang.Object createAnnotation(java.lang.String className, org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode node)
public boolean shouldInterceptClassLoading(java.lang.String className)
ClassLoaderDelegate
shouldInterceptClassLoading
in interface ClassLoaderDelegate
className
- fully qualified class namepublic java.lang.Class<?> loadAndTransformClass(java.lang.String className) throws java.lang.ClassNotFoundException
ClassLoaderDelegate
loadAndTransformClass
in interface ClassLoaderDelegate
className
- binary class namejava.lang.ClassNotFoundException
public InternalPlasticClassTransformation getPlasticClassTransformation(java.lang.String className) throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException
public org.apache.tapestry5.internal.plastic.asm.tree.ClassNode constructClassNodeFromBytecode(java.lang.String className)
ClassReader.accept(org.apache.tapestry5.internal.plastic.asm.ClassVisitor, int)
).className
- fully qualified class namepublic PlasticClassTransformation createTransformation(java.lang.String baseClassName, java.lang.String newClassName)
public PlasticClassTransformation createTransformation(java.lang.String baseClassName, java.lang.String newClassName, java.lang.String implementationClassName)
public ClassInstantiator getClassInstantiator(java.lang.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.