Package org.apache.tapestry5.ioc.internal.services

# Class JustInTimeObjectCreator<T>

java.lang.Object
org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator<T>

All Implemented Interfaces:
  `Runnable`, `ObjectCreator<T>`, `EagerLoadServiceProxy`

public class JustInTimeObjectCreator<T> extends Object implements ObjectCreator<T>, EagerLoadServiceProxy, Runnable
Invoked from a fabricated service delegate to get or realize (instantiate and configure) the service implementation. This includes synchronization logic, to prevent multiple threads from attempting to realize the same service at the same time (a service should be realized only once). The additional interfaces implemented by this class support eager loading of services (at application startup), and orderly shutdown of proxies.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JustInTimeObjectCreator(ServiceActivityTracker tracker, ObjectCreator<T> creator, String serviceId)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `T`
  `createObject()`
  Checks to see if the proxy has been shutdown, then invokes `ObjectCreator.createObject()` if it has not already done so.
  `void`
  `eagerLoadService()`
  Invokes `createObject()` to force the creation of the underlying service.
  `void`
  `run()`
  Invoked when the Registry is shutdown; deletes the instantiated object (if it exists) and replaces the ObjectCreator with one that throws an IllegalStateException.

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

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

- ## Constructor Details

  - ### JustInTimeObjectCreator

    public JustInTimeObjectCreator(ServiceActivityTracker tracker, ObjectCreator<T> creator, String serviceId)

- ## Method Details

  - ### createObject

    public T createObject()
    Checks to see if the proxy has been shutdown, then invokes `ObjectCreator.createObject()` if it has not already done so.
    Specified by:
      `createObject` in interface `ObjectCreator<T>`
    Throws:
      `IllegalStateException` - if the registry has been shutdown

  - ### eagerLoadService

    public void eagerLoadService()
    Invokes `createObject()` to force the creation of the underlying service.
    Specified by:
      `eagerLoadService` in interface `EagerLoadServiceProxy`

  - ### run

    public void run()
    Invoked when the Registry is shutdown; deletes the instantiated object (if it exists) and replaces the ObjectCreator with one that throws an IllegalStateException.
    Specified by:
      `run` in interface `Runnable`