Package org.apache.tapestry5.internal.services

# Interface ComponentInstantiatorSource

All Known Implementing Classes:
  `ComponentInstantiatorSourceImpl`

@UsesMappedConfiguration(key=java.lang.String.class, value=ControlledPackageType.class) public interface ComponentInstantiatorSource
Creates `Instantiator`s for components, based on component class name. This will involve transforming the component's class before it is loaded. In addition, a source acts as an event hub for `InvalidationListener`s, so that any information derived from loaded classes can be discarded and rebuilt when classes change. The strategy used is that when any class (in a controlled package) changes, the entire class loader is discarded, along with any instances derived from those classes. A new class loader is created, and then invalidation events are fired to listeners. Starting in Tapestry 5.3, the packages that are loaded are controlled by a configuration that maps package names to `ControlledPackageType`s.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `exists(String className)`
  Checks to see if a fully qualified class name exists.
  `void`
  `forceComponentInvalidation()`
  Forces invalidation logic, as if a component class on the disk had changed, forcing a reload of all pages and components.
  `Instantiator`
  `getInstantiator(String classname)`
  Given the name of a component class, provides an instantiator for that component.
  `PlasticProxyFactory`
  `getProxyFactory()`
  Returns a proxy factory that can be used to generate additional classes around enhanced classes, or create subclasses of enhanced classes.

- ## Method Details

  - ### getInstantiator

    Instantiator getInstantiator(String classname)
    Given the name of a component class, provides an instantiator for that component. Instantiators are cached, so repeated calls to this method with the same class name will return the same instance; however, callers should also be aware that the instantiators may lose validity after an invalidation (caused by changes to external Java class files).
    Parameters:
      `classname` - FQCN to find (and perhaps transform and load)
    Returns:
      an object which can instantiate an instance of the component

  - ### exists

    boolean exists(String className)
    Checks to see if a fully qualified class name exists. This method appears to exist only for testing.
    Parameters:
      `className` - name of class to check
    Returns:
      true if the class exists (there's a ".class" file), false otherwise

  - ### getProxyFactory

    PlasticProxyFactory getProxyFactory()
    Returns a proxy factory that can be used to generate additional classes around enhanced classes, or create subclasses of enhanced classes.
    Since:
      5.3

  - ### forceComponentInvalidation

    void forceComponentInvalidation()
    Forces invalidation logic, as if a component class on the disk had changed, forcing a reload of all pages and components.
    Since:
      5.3