Package org.apache.tapestry5.beanmodel.services

## Class PlasticProxyFactoryImpl

- java.lang.Object
- - org.apache.tapestry5.beanmodel.services.PlasticProxyFactoryImpl

- All Implemented Interfaces:
    `PlasticProxyFactory`, `PlasticClassListenerHub`

      public class PlasticProxyFactoryImpl
      extends Object
      implements PlasticProxyFactory

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static String` | `INTERNAL_GET_DELEGATE` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PlasticProxyFactoryImpl​(ClassLoader parentClassLoader, org.slf4j.Logger logger)` |
    `PlasticProxyFactoryImpl​(PlasticManager manager, org.slf4j.Logger logger)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addPlasticClassListener​(PlasticClassListener listener)` |
    `void` | `clearCache()` | Clears any cached information stored by the proxy factory; this is useful in Tapestry development mode when a class loader may have been discarded (because the proxy factory may indirectly keep references to classes loaded by the old class loader).
    `<T> T` | `createProxy​(Class<T> interfaceType, Class<? extends T> implementationType, ObjectCreator<T> creator, String description)` | Creates a proxy instance that delegates all methods through a corresponding ObjectCreator.
    `<T> ClassInstantiator<T>` | `createProxy​(Class<T> interfaceType, Class<? extends T> implementationType, PlasticClassTransformer callback)` | Same as `createProxy(interfacetype, implementationType, callback, true)`
    `<T> ClassInstantiator<T>` | `createProxy​(Class<T> interfaceType, Class<? extends T> implementationType, PlasticClassTransformer callback, boolean introduceInterface)` | Creates a proxy object that implements the indicated interface and indicated service implementation type, then invokes the callback to further configure the proxy.
    `<T> T` | `createProxy​(Class<T> interfaceType, ObjectCreator<T> creator, String description)` | Creates a proxy instance that delegates all methods through a corresponding ObjectCreator.
    `<T> ClassInstantiator<T>` | `createProxy​(Class<T> interfaceType, PlasticClassTransformer callback)` | Creates a proxy object that implements the indicated interface, then invokes the callback to further configure the proxy.
    `<T> PlasticClassTransformation<T>` | `createProxyTransformation​(Class<T> interfaceType)` | Creates the underlying `PlasticClassTransformation` for an interface proxy.
    `<T> PlasticClassTransformation<T>` | `createProxyTransformation​(Class<T> interfaceType, Class<? extends T> implementationType)` | Creates the underlying `PlasticClassTransformation` for an interface proxy with a given implementation class.
    `ClassLoader` | `getClassLoader()` | Returns the class loader used when creating new classes, this is a child class loader of another class loader (usually, the thread's context class loader).
    `Location` | `getConstructorLocation​(Constructor constructor)` | Return a string representation for the constructor (including class and parameters) and (if available) file name and line number.
    `Location` | `getMemberLocation​(Member member, String methodName, String memberTypeDesc, ObjectCreator<String> textDescriptionCreator)` |
    `Location` | `getMethodLocation​(Method method)` | Converts a method to a `Location`, which includes information about the source file name and line number.
    `void` | `removePlasticClassListener​(PlasticClassListener listener)` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### INTERNAL_GET_DELEGATE

          public static final String INTERNAL_GET_DELEGATE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### PlasticProxyFactoryImpl

          public PlasticProxyFactoryImpl​(ClassLoader parentClassLoader,
                                         org.slf4j.Logger logger)

    - #### PlasticProxyFactoryImpl

          public PlasticProxyFactoryImpl​(PlasticManager manager,
                                         org.slf4j.Logger logger)

  - ### Method Detail

    - #### getClassLoader

          public ClassLoader getClassLoader()

      Description copied from interface: `PlasticProxyFactory`
      Returns the class loader used when creating new classes, this is a child class loader of another class loader (usually, the thread's context class loader).
      Specified by:
        `getClassLoader` in interface `PlasticProxyFactory`

    - #### createProxy

          public <T> ClassInstantiator<T> createProxy​(Class<T> interfaceType,
                                                      Class<? extends T> implementationType,
                                                      PlasticClassTransformer callback)

      Description copied from interface: `PlasticProxyFactory`
      Same as `createProxy(interfacetype, implementationType, callback, true)`
      Specified by:
        `createProxy` in interface `PlasticProxyFactory`
      Parameters:
        `interfaceType` - interface implemented by proxy
        `implementationType` - a class that implements the interfaceType. It can be null.
        `callback` - configures the proxy
      Returns:
        instantiator that can be used to create an instance of the proxy class

    - #### createProxy

          public <T> ClassInstantiator<T> createProxy​(Class<T> interfaceType,
                                                      Class<? extends T> implementationType,
                                                      PlasticClassTransformer callback,
                                                      boolean introduceInterface)

      Description copied from interface: `PlasticProxyFactory`
      Creates a proxy object that implements the indicated interface and indicated service implementation type, then invokes the callback to further configure the proxy.
      Specified by:
        `createProxy` in interface `PlasticProxyFactory`
      Parameters:
        `interfaceType` - interface implemented by proxy
        `implementationType` - a class that implements the interfaceType. It can be null.
        `callback` - configures the proxy
      Returns:
        instantiator that can be used to create an instance of the proxy class

    - #### createProxy

          public <T> ClassInstantiator<T> createProxy​(Class<T> interfaceType,
                                                      PlasticClassTransformer callback)

      Description copied from interface: `PlasticProxyFactory`
      Creates a proxy object that implements the indicated interface, then invokes the callback to further configure the proxy.
      Specified by:
        `createProxy` in interface `PlasticProxyFactory`
      Parameters:
        `interfaceType` - interface implemented by proxy
        `callback` - configures the proxy
      Returns:
        instantiator that can be used to create an instance of the proxy class

    - #### createProxyTransformation

          public <T> PlasticClassTransformation<T> createProxyTransformation​(Class<T> interfaceType,
                                                                             Class<? extends T> implementationType)

      Description copied from interface: `PlasticProxyFactory`
      Creates the underlying `PlasticClassTransformation` for an interface proxy with a given implementation class. This should only be used in the cases where encapsulating the PlasticClass construction into a callback is not feasible (which is the case for some of the older APIs inside Tapestry IoC).
      Specified by:
        `createProxyTransformation` in interface `PlasticProxyFactory`
      Parameters:
        `interfaceType` - class proxy will extend from
        `implementationType` - a class that implements the interfaceType. It can be null.
      Returns:
        transformation from which an instantiator may be created

    - #### createProxyTransformation

          public <T> PlasticClassTransformation<T> createProxyTransformation​(Class<T> interfaceType)

      Description copied from interface: `PlasticProxyFactory`
      Creates the underlying `PlasticClassTransformation` for an interface proxy. This should only be used in the cases where encapsulating the PlasticClass construction into a callback is not feasible (which is the case for some of the older APIs inside Tapestry IoC).
      Specified by:
        `createProxyTransformation` in interface `PlasticProxyFactory`
      Parameters:
        `interfaceType` - class proxy will extend from
      Returns:
        transformation from which an instantiator may be created

    - #### createProxy

          public <T> T createProxy​(Class<T> interfaceType,
                                   ObjectCreator<T> creator,
                                   String description)

      Description copied from interface: `PlasticProxyFactory`
      Creates a proxy instance that delegates all methods through a corresponding ObjectCreator. Each method invocation on the proxy will route through `ObjectCreator.createObject()` (the creator implementation may decide to cache the return value as appropriate).
      Specified by:
        `createProxy` in interface `PlasticProxyFactory`
      Type Parameters:
        `T` - type of proxy
      Parameters:
        `interfaceType` - interface class for proxy
        `creator` - object responsible for creating the real object
        `description` - the `toString()` of the proxy
      Returns:
        proxy instance

    - #### createProxy

          public <T> T createProxy​(Class<T> interfaceType,
                                   Class<? extends T> implementationType,
                                   ObjectCreator<T> creator,
                                   String description)

      Description copied from interface: `PlasticProxyFactory`
      Creates a proxy instance that delegates all methods through a corresponding ObjectCreator. Each method invocation on the proxy will route through `ObjectCreator.createObject()` (the creator implementation may decide to cache the return value as appropriate).
      Specified by:
        `createProxy` in interface `PlasticProxyFactory`
      Type Parameters:
        `T` - type of proxy
      Parameters:
        `interfaceType` - interface class for proxy
        `implementationType` - class that implements the interface type. It may be null
        `creator` - object responsible for creating the real object
        `description` - the `toString()` of the proxy
      Returns:
        proxy instance

    - #### getMethodLocation

          public Location getMethodLocation​(Method method)

      Description copied from interface: `PlasticProxyFactory`
      Converts a method to a `Location`, which includes information about the source file name and line number.
      Specified by:
        `getMethodLocation` in interface `PlasticProxyFactory`
      Parameters:
        `method` - to look up
      Returns:
        the location (identifying the method and possibly, the line number within the method)

    - #### getConstructorLocation

          public Location getConstructorLocation​(Constructor constructor)

      Description copied from interface: `PlasticProxyFactory`
      Return a string representation for the constructor (including class and parameters) and (if available) file name and line number.
      Specified by:
        `getConstructorLocation` in interface `PlasticProxyFactory`
      Returns:
        the location (identifying the constructor and possibly, the line number within the method)

    - #### clearCache

          public void clearCache()

      Description copied from interface: `PlasticProxyFactory`
      Clears any cached information stored by the proxy factory; this is useful in Tapestry development mode when a class loader may have been discarded (because the proxy factory may indirectly keep references to classes loaded by the old class loader).
      Specified by:
        `clearCache` in interface `PlasticProxyFactory`

    - #### getMemberLocation

          public Location getMemberLocation​(Member member,
                                            String methodName,
                                            String memberTypeDesc,
                                            ObjectCreator<String> textDescriptionCreator)

    - #### addPlasticClassListener

          public void addPlasticClassListener​(PlasticClassListener listener)

      Specified by:
        `addPlasticClassListener` in interface `PlasticClassListenerHub`

    - #### removePlasticClassListener

          public void removePlasticClassListener​(PlasticClassListener listener)

      Specified by:
        `removePlasticClassListener` in interface `PlasticClassListenerHub`