Interface MasterObjectProvider

  • All Known Implementing Classes:
    MasterObjectProviderImpl

    @UsesOrderedConfiguration(ObjectProvider.class)
    public interface MasterObjectProvider
    A service that acts as a chain-of-command over a number of ObjectProvider, but allows for the case where no object may be provided. This service is itself a key part of Tapestry's general injection mechanism; it is used when instantiating a service implementation instance, invoking module methods (service builder, decorator, or contribution methods), when autobuilding objects of any type. As of Tapestry 5.3, the MasterObjectProvider allows injection of OperationTracker as a special case (not based on a contributed ObjectProvider).
    • Method Detail

      • provide

        <T> T provide​(Class<T> objectType,
                      AnnotationProvider annotationProvider,
                      ObjectLocator locator,
                      boolean required)
        Provides an object based on an expression. The process of providing objects occurs within a particular context, which will typically be a service builder method, service contributor method, or service decorator method. The locator parameter provides access to the services visible to that context. When the value is required and no ObjectProvider provided a non-null value, then ObjectLocator.getService(Class, Class[]) is invoked (with no marker annotations), to provide a uniquely matching service, or throw a failure exception if no single service can be found.
        Type Parameters:
        T -
        Parameters:
        objectType - the expected object type
        annotationProvider - provides access to annotations (typically, the field or parameter to which an injection-related annotation is attached); annotations on the field or parameter may also be used when resolving the desired object
        locator - locator for the context in which the provider is being used
        required - if true (normal case) a value must be provided; if false then it is allowed for no ObjectProvider to provide a value, and this method may return null to indicate the failure
        Returns:
        the requested object, or null if this object provider can not supply an object
        Throws:
        RuntimeException - if the expression can not be evaluated, or the type of object identified is not assignable to the type specified by the objectType parameter