Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.tapestry5.internal.plastic
Class PlasticClassPool

    java.lang.Object
      org.apache.tapestry5.internal.plastic.PlasticClassPool

All Implemented Interfaces:
  org.apache.tapestry5.internal.plastic.asm.Opcodes, ClassLoaderDelegate, PlasticClassListenerHub

    public class PlasticClassPool

extends java.lang.Object
implements ClassLoaderDelegate, org.apache.tapestry5.internal.plastic.asm.Opcodes, PlasticClassListenerHub

Responsible for managing a class loader that allows ASM `ClassNode`s to be instantiated as runtime classes.

Field Summary

Fields inherited from interface org.apache.tapestry5.internal.plastic.asm.Opcodes
`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 Summary
`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.

Method Summary
`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)`
`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.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### PlasticClassPool

    public 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.

  Parameters:
    `parentLoader` - typically, the Thread's context class loader
    `delegate` - responsible for end stages of transforming top-level classes
    `controlledPackages` - set of package names (note: retained, not copied)
    `options` - used when transforming classes

Method Detail

### getClassLoader

    public java.lang.ClassLoader getClassLoader()

### realizeTransformedClass

    public java.lang.Class realizeTransformedClass(org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode,
                                                   InheritanceData inheritanceData,
                                                   StaticContext staticContext)

### realize

    public java.lang.Class realize(java.lang.String primaryClassName,
                                   ClassType classType,
                                   org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode)

### createAnnotationAccess

    public AnnotationAccess createAnnotationAccess(java.lang.String className)

### createAnnotationAccess

    public AnnotationAccess createAnnotationAccess(java.util.List<org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode> annotationNodes)

### createAnnotation

    protected java.lang.Object createAnnotation(java.lang.String className,
                                                org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode node)

### shouldInterceptClassLoading

    public boolean shouldInterceptClassLoading(java.lang.String className)

  Description copied from interface: `ClassLoaderDelegate`
  Identifies which classes are to be loaded.

  Specified by:
    `shouldInterceptClassLoading` in interface `ClassLoaderDelegate`
  Parameters:
    `className` - fully qualified class name
  Returns:
    true if the class should be intercepted, false to let parent class loader load class

### loadAndTransformClass

    public java.lang.Class<?> loadAndTransformClass(java.lang.String className)
                                             throws java.lang.ClassNotFoundException

  Description copied from interface: `ClassLoaderDelegate`
  Load the class, transforming it as necessary.

  Specified by:
    `loadAndTransformClass` in interface `ClassLoaderDelegate`
  Parameters:
    `className` - binary class name
  Returns:
    loaded and (if not an inner class) transformed class
  Throws:
    `java.lang.ClassNotFoundException`

### getPlasticClassTransformation

    public InternalPlasticClassTransformation getPlasticClassTransformation(java.lang.String className)
                                                                     throws java.lang.ClassNotFoundException

  For a fully-qualified class name of an existing class, loads the bytes for the class and returns a PlasticClass instance.

  Throws:
    `java.lang.ClassNotFoundException`

### constructClassNodeFromBytecode

    public 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)`).

  Parameters:
    `className` - fully qualified class name
  Returns:
    corresponding ClassNode

### createTransformation

    public PlasticClassTransformation createTransformation(java.lang.String baseClassName,
                                                           java.lang.String newClassName)

### getClassInstantiator

    public ClassInstantiator getClassInstantiator(java.lang.String className)

### addPlasticClassListener

    public void addPlasticClassListener(PlasticClassListener listener)

  Specified by:
    `addPlasticClassListener` in interface `PlasticClassListenerHub`

### removePlasticClassListener

    public void removePlasticClassListener(PlasticClassListener listener)

  Specified by:
    `removePlasticClassListener` in interface `PlasticClassListenerHub`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2003-2012 The Apache Software Foundation.