Interface PlasticProxyFactory

All Superinterfaces:
PlasticClassListenerHub
All Known Implementing Classes:
PlasticProxyFactoryImpl

A service used to create proxies of varying types. As a secondary concern, manages to identify the location of methods and constructors, which is important for exception reporting.
Since:
5.3
  • Method Details

    • 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).
    • createProxy

      <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.
      Parameters:
      interfaceType - interface implemented by proxy
      callback - configures the proxy
      Returns:
      instantiator that can be used to create an instance of the proxy class
    • createProxy

      @IncompatibleChange(release="5.4.5", details="TAP5-2528") <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.
      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

      @IncompatibleChange(release="5.4", details="TAP5-2029") <T> ClassInstantiator<T> createProxy(Class<T> interfaceType, Class<? extends T> implementationType, PlasticClassTransformer callback)
      Same as createProxy(interfacetype, implementationType, callback, true)
      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
    • createProxyTransformation

      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).
      Parameters:
      interfaceType - class proxy will extend from
      Returns:
      transformation from which an instantiator may be created
    • createProxyTransformation

      @IncompatibleChange(release="5.4", details="TAP5-2029") <T> PlasticClassTransformation<T> createProxyTransformation(Class<T> interfaceType, Class<? extends T> implementationType)
      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).
      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
    • createProxy

      <T> T createProxy(Class<T> interfaceType, ObjectCreator<T> creator, String description)
      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).
      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

      @IncompatibleChange(release="5.4", details="Added for TAP5-2029") <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. Each method invocation on the proxy will route through ObjectCreator.createObject() (the creator implementation may decide to cache the return value as appropriate).
      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

      Converts a method to a Location, which includes information about the source file name and line number.
      Parameters:
      method - to look up
      Returns:
      the location (identifying the method and possibly, the line number within the method)
    • getConstructorLocation

      Return a string representation for the constructor (including class and parameters) and (if available) file name and line number.
      Returns:
      the location (identifying the constructor and possibly, the line number within the method)
    • clearCache

      @IncompatibleChange(release="5.3.3", details="Added method") 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).
      Since:
      5.3.3
    • getPlasticManager

      Returns the PlasticManager instance used by this PlasticProxyFactory.
      Since:
      5.8.3
    • getProxyFactory

      Returns the PlasticProxyFactory instance to be used for a given class. Default implementation returns this.
      Since:
      5.8.3