Package oracle.dbtools.plugin.api.di
Interface InstanceLocator
-
- All Known Implementing Classes:
Instances
,Instances.Builder
public interface InstanceLocator
Allows the application to dynamically obtain instances of services with a specified combination of required type and qualifiers. In general it is preferred to use injection to resolve dependencies, but in certain situations, injection is not the most convenient way to obtain a service instance. For these casesInstanceProvider
should be used. This facility should be used sparingly, frequent use indicates use of the Service Locator Pattern instead of the Dependency Injection Pattern.- Author:
- cdivilly
- See Also:
InstanceProvider
,TypeQualifier
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
INSTANCE_LOCATOR_ATTRIBUTE
Denotes the name of aHttpServletRequest
attribute which if present on a request indicates an attribute whose value will be an instance ofInstanceLocator
static java.lang.String
INSTANTIATOR_TYPE_SUFFIX
Deprecated.TheInstantiator
concept has been deprecated
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Deprecated Methods Modifier and Type Method Description static InstanceLocator
empty()
RetrieveInstanceLocator
implementation that never produces any matchesdefault <T> InstanceProvider<T>
select(java.lang.Class<T> service)
Select all services matching the specified type.default <T> InstanceProvider<T>
select(java.lang.Class<T> service, java.lang.annotation.Annotation... qualifiers)
Deprecated.Useselect(TypeQualifier)
instead<T> InstanceProvider<T>
select(TypeQualifier<T> qualifier)
Select all services matching the specifiedTypeQualifier
-
-
-
Field Detail
-
INSTANCE_LOCATOR_ATTRIBUTE
static final java.lang.String INSTANCE_LOCATOR_ATTRIBUTE
Denotes the name of aHttpServletRequest
attribute which if present on a request indicates an attribute whose value will be an instance ofInstanceLocator
void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { // Get request scoped InstanceLocator final InstanceLocator locator = (InstanceLocator) request .getAttribute(InstanceLocator.INSTANCE_LOCATOR_ATTRIBUTE); if (locator != null) { final SomeService service = locator.select(SomeService.class); // use SomeService instance... } }
-
INSTANTIATOR_TYPE_SUFFIX
@Deprecated static final java.lang.String INSTANTIATOR_TYPE_SUFFIX
Deprecated.TheInstantiator
concept has been deprecatedIdentifies the expected type name suffix for any type that can instantiate another type. See Accelerating Instantiation for more information on this topic.- See Also:
- Constant Field Values
-
-
Method Detail
-
select
default <T> InstanceProvider<T> select(java.lang.Class<T> service)
Select all services matching the specified type. Equivalent toselect(TypeQualifier.provides(service)
- Type Parameters:
T
- The type of the service- Parameters:
service
- The service to resolve- Returns:
InstanceProvider
for the specified type. This value is never null.- Since:
- 19.3.0
-
select
@Deprecated default <T> InstanceProvider<T> select(java.lang.Class<T> service, java.lang.annotation.Annotation... qualifiers)
Deprecated.Useselect(TypeQualifier)
insteadObtains a child Instance for the given required type and additional required qualifiers.- Type Parameters:
T
- The type of the service to locate- Parameters:
service
- The type (contract) of the service to retrievequalifiers
- Additional qualifiers that constrain which implementation to match- Returns:
InstanceProvider
for the specified type and qualifiers. This value is never null.
-
select
<T> InstanceProvider<T> select(TypeQualifier<T> qualifier)
Select all services matching the specifiedTypeQualifier
- Type Parameters:
T
- The type of the service to locate- Parameters:
qualifier
- The qualifier that constrains which implementation to match- Returns:
InstanceProvider
for the specified type and qualifier. This value is never null.- Since:
- 19.3.0
-
empty
static InstanceLocator empty()
RetrieveInstanceLocator
implementation that never produces any matches- Returns:
- empty
InstanceLocator
instance - Since:
- 19.3.0
-
-