Class DeferredAuthorityFactory

All Implemented Interfaces:
AuthorityFactory, Factory, BufferedFactory, Factory, OptionalFactory, RegistrableFactory
Direct Known Subclasses:
CoordinateOperationFactoryUsingWKT, FactoryUsingWKT, IAULongitudeFirstFactory, LongitudeFirstEpsgDecorator, LongitudeFirstFactory, ThreadedEpsgFactory

public abstract class DeferredAuthorityFactory extends BufferedAuthorityFactory implements OptionalFactory
A buffered authority factory which will defer the creation of a backing store until when first needed. This approach allow to establish a connection to a database (for example) only when first needed. In addition, the backing store can be automatically disposed after a timeout and recreated when needed again.
Since:
2.1
Author:
Martin Desruisseaux (IRD)
  • Constructor Details

    • DeferredAuthorityFactory

      protected DeferredAuthorityFactory(Hints userHints, int priority)
      Constructs an instance without initial backing store. Subclasses are responsible for creating an appropriate backing store when the createBackingStore() method is invoked.
      Parameters:
      userHints - An optional set of hints, or null if none.
      priority - The priority for this factory, as a number between MINIMUM_PRIORITY and MAXIMUM_PRIORITY inclusive.
      Since:
      2.2
      See Also:
    • DeferredAuthorityFactory

      protected DeferredAuthorityFactory(Hints userHints, int priority, int maxStrongReferences)
      Constructs an instance without initial backing store. Subclasses are responsible for creating an appropriate backing store when the createBackingStore() method is invoked.
      Parameters:
      userHints - An optional set of hints, or null if none.
      priority - The priority for this factory, as a number between MINIMUM_PRIORITY and MAXIMUM_PRIORITY inclusive.
      maxStrongReferences - The maximum number of objects to keep by strong reference.
      Since:
      2.2
      See Also:
  • Method Details

    • isAvailable

      public boolean isAvailable()
      Returns true if this factory is available. The default implementation returns false if createBackingStore() throws an exception.
      Specified by:
      isAvailable in interface OptionalFactory
    • getBackingStore

      protected final AbstractAuthorityFactory getBackingStore() throws FactoryException
      Returns the backing store authority factory.
      Returns:
      The backing store to uses in createXXX(...) methods.
      Throws:
      FactoryException - if the creation of backing store failed.
    • createBackingStore

      protected abstract AbstractAuthorityFactory createBackingStore() throws FactoryException
      Creates the backing store authority factory. This method is invoked the first time a createXXX(...) method is invoked.
      Returns:
      The backing store to uses in createXXX(...) methods.
      Throws:
      FactoryNotFoundException - if the backing store has not been found.
      FactoryException - if the creation of backing store failed for an other reason.
    • isConnected

      public boolean isConnected()
      Returns true if this deferred factory is connected to its backing store. This method returns false if no createFoo method has been invoked, if the backing store has been automatically disposed after the timeout or if this factoy has been disposed.
    • setTimeout

      public void setTimeout(long delay)
      Set a timer for disposing the backing store after the specified amount of milliseconds of inactivity. The createBackingStore() method will be responsible for creating a new backing store when needed. Note that the backing store disposal can be vetoed if canDisposeBackingStore(org.geotools.referencing.factory.AbstractAuthorityFactory) returns false.
      Parameters:
      delay - The minimal delay before to close the backing store. This delay is very approximative. The backing store will not be closed before, but may take as much as twice that time before to be closed.
    • canDisposeBackingStore

      protected boolean canDisposeBackingStore(AbstractAuthorityFactory backingStore)
      Returns true if the backing store can be disposed now. This method is invoked automatically after the amount of time specified by setTimeout(long) if the factory were not used during that time. The default implementation always returns true. Subclasses should override this method and returns false if they want to prevent the backing store disposal under some circonstances.
      Parameters:
      backingStore - The backing store in process of being disposed.
    • dispose

      public void dispose() throws FactoryException
      Releases resources immediately instead of waiting for the garbage collector. This method disposes the backing store regardeless of canDisposeBackingStore(org.geotools.referencing.factory.AbstractAuthorityFactory) value.
      Overrides:
      dispose in class BufferedAuthorityFactory
      Throws:
      FactoryException - if an error occured while disposing the factory.
    • exit

      public static void exit()
      Gets rid of the timer thread at application shutdown
    • disposeBackingStore

      protected void disposeBackingStore()
      Disposes of the backing store