Package org.apache.tapestry5.beanmodel.internal.services

# Class PropertyConduitSourceImpl

java.lang.Object
org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl

All Implemented Interfaces:
  `PropertyConduitSource`

public class PropertyConduitSourceImpl extends Object implements PropertyConduitSource

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PropertyConduitSourceImpl(PropertyAccess access, PlasticProxyFactory proxyFactory, TypeCoercer typeCoercer, StringInterner interner)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `PropertyConduit`
  `create(Class rootClass, String expression)`
  Returns a property conduit instance for the given expression.
  `void`
  `listenForInvalidations(InvalidationEventHub hub)`
  `static NullPointerException`
  `nullTerm(String term, String expression, Object root)`
  May be invoked from fabricated PropertyConduit instances.

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

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

- ## Constructor Details

  - ### PropertyConduitSourceImpl

    public PropertyConduitSourceImpl(PropertyAccess access, @ComponentLayer PlasticProxyFactory proxyFactory, TypeCoercer typeCoercer, StringInterner interner)

- ## Method Details

  - ### listenForInvalidations

    @PostInjection public void listenForInvalidations(@ComponentClasses InvalidationEventHub hub)

  - ### create

    public PropertyConduit create(Class rootClass, String expression)
    Description copied from interface: `PropertyConduitSource`
    Returns a property conduit instance for the given expression. PropertyConduitSource caches the conduits it returns, so despite the name, this method does not always create a new conduit. The cache is cleared if a change to component classes is observed. Callers of this method should observe notifications from the `InvalidationEventHub` for `ComponentClasses` and discard any aquired conduits; failure to do so will create memory leaks whenever component classes change (the conduits will keep references to the old classes and classloaders).
    Specified by:
      `create` in interface `PropertyConduitSource`
    Parameters:
      `rootClass` - the type of the root object to which the expression is applied
      `expression` - expression to be evaluated on instances of the root class
    Returns:
      RuntimeException if the expression is invalid (poorly formed, references non-existent properties, etc.)

  - ### nullTerm

    public static NullPointerException nullTerm(String term, String expression, Object root)
    May be invoked from fabricated PropertyConduit instances.