org.apache.tapestry5.ioc.services
Interface MasterObjectProvider
- All Known Implementing Classes:
- MasterObjectProviderImpl
@UsesOrderedConfiguration(value=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).
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 typeannotationProvider
- 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 objectlocator
- locator for the context in which the provider is being usedrequired
- 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
Copyright © 2003-2012 The Apache Software Foundation.