# Package org.apache.tapestry5.plastic

Plastic, Tapestry's component class transformation library based on ASM

- Interface Summary
  Interface | Description
  --- | ---
  AnnotationAccess | Interface implemented by members that may hold annotations.
  ClassInstantiator<T> | The end result of a class transformation is a ClassInstantiator that can be used to instantiate an instance of the transformed class.
  ComputedValue<T> | Provides an indirect, or computed, value.
  ConstructorCallback | Supplies construction-time logic for the class' constructor.
  FieldConduit<T> | A `FieldConduit` is an object that effectively replaces the field in the instantiated object.
  FieldHandle | Allows read/write access directly to a field (bypassing accessors).
  FieldValueProvider | Interface that can be implemented to provide access to field values based on their name.
  InstanceContext | Defines per-instance context values for a transformed PlasticClass.
  InstructionBuilder | Simplifies the generation of method instructions for a particular method (or constructor), allowing bytecode to be created with a friendlier API that focuses on Java type names (names as they would appear in Java source) rather than JVM descriptors or internal names.
  InstructionBuilderCallback | Used in various places to allow some code to be constructed under controlled circumstances.
  LocalVariable | Variable available inside a `LocalVariableCallback`.
  LocalVariableCallback | A callback for generating code where a local variable is in effect.
  MethodAdvice | MethodAdvice is a special callback that is threaded into the implementation of a method.
  MethodHandle | Similiar to `Method`, this allows a method of a Plastic class to be invoked regardless of visibility.
  MethodInvocation | A representation of the invocation of a method that allows the behavior of the method to be advised: either by changing parameter values, or by changing the return value, or by catch or throwing different exceptions.
  MethodInvocationResult | The result of a method invocation, which encapsulates the actual return value (if any), as well as any checked exception.
  MethodParameter | Access to the parameters of a method, in particular, any visible annotations on that method.
  PlasticClass | The representation of a class while it is being instrumented and transformed.
  PlasticClassEvent | Describes a transformed class about to be loaded.
  PlasticClassListener | Allows a listener to be notified about classes about to be loaded by the manager's class loader.
  PlasticClassListenerHub | Methods for adding and removing `PlasticClassListener`s .
  PlasticClassTransformation<T> | A wrapper around a `PlasticClass` that allows the class to be converted into a concrete class, once all transformations are complete.
  PlasticClassTransformer | Interface for defining how a `PlasticClass` is transformed.
  PlasticField | Represents a field of a class being transformed.
  PlasticManagerDelegate | Delegate to the `PlasticManager` that performs the actual transformations of the class.
  PlasticMethod | A method of a transformed class.
  PropertyValueProvider | Interface that can be implemented to provide access to field values based on their name.
  SwitchBlock | Support for building the equivalent of a Java switch statement.
  SwitchCallback | A callback used by a `SwitchBlock` to manage the generation of code.
  TryCatchBlock | Allows a portion of a method to be marked so that exception and finally handlers can be provided.
  TryCatchCallback | A callback used with `InstructionBuilder.startTryCatch(TryCatchCallback)`.
  WhenCallback | Used with `InstructionBuilder.when(Condition, WhenCallback)`.
  WhileCallback | Callback used with `InstructionBuilder.doWhile(Condition, WhileCallback)`.

- Class Summary
  Class | Description
  --- | ---
  MethodDescription | Describes a `PlasticMethod` in terms of a method name, a set of modifiers (public, private, static, final, etc.), a return type, types of method arguments, and types of checked exceptions.
  PlasticConstants |
  PlasticManager | Manages the internal class loaders and other logics necessary to load and transform existing classes, or to create new classes dynamically at runtime.
  PlasticManager.PlasticManagerBuilder | A builder object for configuring the PlasticManager before instantiating it.
  PlasticUtils | Utilities for user code making use of Plastic.
  PlasticUtils.FieldInfo | Class used to represent a field name and its type for PlasticUtils.implementFieldValueProvider(PlasticClass, Set).

- Enum Summary
  Enum | Description
  --- | ---
  ClassType | Identifies the type of class referenced in a `PlasticClassEvent`.
  Condition | Condition used with `InstructionBuilder.when(Condition, WhenCallback)`.
  PropertyAccessType | Used when converting a field into a property (that is, adding accessor methods for the field) to identify which method(s) to create (a getter to access the value and/or a mutator to modify the value).
  TransformationOption | Options used when transforming classes.

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  Opcodes | Used to document the `InstructionBuilder` and `TryCatchBlock`