| An optional factory that may not be available in all configurations.
Such factories often need some external resources. For example the default
need a MS-Access database installed on the client machine. This database is not bundle in
Geotools distribution; if the user have not installed it, the factory can't work.
This interface is not a manager for automatic download of external resources.
It is just a way to tell to
FactoryFinder that this factory exists, but can't do its
job for whatever reasons (usually a missing resource that the user shall download and install
himself), so
FactoryFinder has to choose an other factory. In other words, the
OptionalFactory interface is used as a filter, nothing else. The process is as follows:
- When
FactoryRegistry.getServiceProvider is invoked, it starts to iterate over all
registered factories. If an
, it
is taken in account for the iteration order.
- If no suitable factory was found before the iterator reachs this optional factory, then
OptionalFactory.isAvailable is invoked. If it returns
true , then this optional factory
is processed like any other factories. Otherwise it is ignored.
NOTE:
OptionalFactory is not designed for factories with intermittent
state (i.e. return value of
OptionalFactory.isAvailable varying in an unpredictable way). The behavior
is undetermined if the
isAvailable() state changes with time.
since: 2.0 version: $Id: OptionalFactory.java 25972 2007-06-21 13:38:35Z desruisseaux $ author: Martin Desruisseaux See Also: org.geotools.data.DataStoreFactorySpi.isAvailable |