Class ObjectLocatorImpl

java.lang.Object
org.apache.tapestry5.ioc.internal.ObjectLocatorImpl
All Implemented Interfaces:
ObjectLocator
Direct Known Subclasses:
ServiceResourcesImpl

public class ObjectLocatorImpl extends Object implements ObjectLocator
Base service locator class used when only the module is known (i.e., when instantiating a module class).
  • Constructor Details

  • Method Details

    • getService

      public <T> T getService(String serviceId, Class<T> serviceInterface)
      Description copied from interface: ObjectLocator
      Obtains a service via its unique service id. Returns the service's proxy. The service proxy implements the same interface as the actual service, and is used to instantiate the actual service only as needed (this is transparent to the application).
      Specified by:
      getService in interface ObjectLocator
      Parameters:
      serviceId - unique Service id used to locate the service object (may contain symbols, which will be expanded), case is ignored
      serviceInterface - the interface implemented by the service (or an interface extended by the service interface)
      Returns:
      the service instance
    • getService

      public <T> T getService(Class<T> serviceInterface)
      Description copied from interface: ObjectLocator
      Locates a service given a service interface and (optionally) some marker annotation types. A single service must implement the service interface (which * can be hard to guarantee) and by marked by all the marker types. The search takes into account inheritance of the service interface (not the service implementation), which may result in a failure due to extra matches.
      Specified by:
      getService in interface ObjectLocator
      Parameters:
      serviceInterface - the interface the service implements
      Returns:
      the service's proxy
      See Also:
    • getService

      public <T> T getService(Class<T> serviceInterface, Class<? extends Annotation>... markerTypes)
      Description copied from interface: ObjectLocator
      Locates a service given a service interface and (optionally) some marker annotation types. A single service must implement the service interface (which * can be hard to guarantee) and by marked by all the marker types. The search takes into account inheritance of the service interface (not the service implementation), which may result in a failure due to extra matches. The ability to specify marker annotation types was added in 5.3
      Specified by:
      getService in interface ObjectLocator
      Parameters:
      serviceInterface - the interface the service implements
      markerTypes - Markers used to select a specific service that implements the interface
      Returns:
      the service's proxy
      See Also:
    • getObject

      public <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider)
      Description copied from interface: ObjectLocator
      Obtains an object indirectly, using the MasterObjectProvider service.
      Specified by:
      getObject in interface ObjectLocator
      Parameters:
      objectType - the type of object to be returned
      annotationProvider - provides access to annotations on the field or parameter for which a value is to be obtained, which may be utilized in selecting an appropriate object, use null when annotations are not available (in which case, selection will be based only on the object type)
      Returns:
      the requested object
      See Also:
    • autobuild

      public <T> T autobuild(Class<T> clazz)
      Description copied from interface: ObjectLocator
      Autobuilds a class by finding the public constructor with the most parameters. Services and other resources or dependencies will be injected into the parameters of the constructor and into private fields marked with the Inject annotation. There are two cases: constructing a service implementation, and constructing an arbitrary object. In the former case, many service resources are also available for injection, not just dependencies or objects provided via the MasterObjectProvider service.
      Specified by:
      autobuild in interface ObjectLocator
      Parameters:
      clazz - the type of object to instantiate
      Returns:
      the instantiated instance
    • autobuild

      public <T> T autobuild(String description, Class<T> clazz)
      Description copied from interface: ObjectLocator
      Specified by:
      autobuild in interface ObjectLocator
      Parameters:
      description - description used with OperationTracker
      clazz - the type of object to instantiate
      Returns:
      the instantiated instance
    • proxy

      public <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass)
      Description copied from interface: ObjectLocator
      Creates a proxy. The proxy will defer invocation of ObjectLocator.autobuild(Class) until just-in-time (that is, first method invocation). In a limited number of cases, it is necessary to use such a proxy to prevent service construction cycles, particularly when contributing (directly or indirectly) to the MasterObjectProvider (which is itself at the heart of autobuilding). If the class file for the class is a file on the file system (not a file packaged in a JAR), then the proxy will autoreload: changing the class file will result in the new class being reloaded and re-instantiated (with dependencies).
      Specified by:
      proxy in interface ObjectLocator
      Parameters:
      interfaceClass - the interface implemented by the proxy
      implementationClass - a concrete class that implements the interface
      Returns:
      a proxy
      See Also: