Class AbstractBindingBuilder<T>
- java.lang.Object
-
- org.glassfish.hk2.utilities.binding.AbstractBindingBuilder<T>
-
- Type Parameters:
T
- bound service type.
- All Implemented Interfaces:
BindingBuilder<T>
,NamedBindingBuilder<T>
,ScopedBindingBuilder<T>
,ScopedNamedBindingBuilder<T>
,ServiceBindingBuilder<T>
- Direct Known Subclasses:
AbstractBindingBuilder.ClassBasedBindingBuilder
,AbstractBindingBuilder.FactoryInstanceBasedBindingBuilder
,AbstractBindingBuilder.FactoryTypeBasedBindingBuilder
,AbstractBindingBuilder.InstanceBasedBindingBuilder
abstract class AbstractBindingBuilder<T> extends java.lang.Object implements ServiceBindingBuilder<T>, NamedBindingBuilder<T>, ScopedBindingBuilder<T>, ScopedNamedBindingBuilder<T>
Abstract binding builder implementation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
AbstractBindingBuilder.ClassBasedBindingBuilder<T>
private static class
AbstractBindingBuilder.FactoryInstanceBasedBindingBuilder<T>
private static class
AbstractBindingBuilder.FactoryTypeBasedBindingBuilder<T>
private static class
AbstractBindingBuilder.InstanceBasedBindingBuilder<T>
-
Field Summary
Fields Modifier and Type Field Description (package private) java.lang.String
analyzer
Analyzer to use with this descriptor(package private) java.util.Set<java.lang.reflect.Type>
contracts
Contracts the service should be bound to.(package private) java.lang.reflect.Type
implementationType
(package private) HK2Loader
loader
Bound service loader.(package private) MultiMap<java.lang.String,java.lang.String>
metadata
Binding metadata (e.g.(package private) java.lang.String
name
Binding name (see @Named).(package private) java.lang.Boolean
proxiable
Injectee is proxiable.(package private) java.lang.Boolean
proxyForSameScope
Injectee should be proxied even inside the same scope(package private) java.util.Set<java.lang.annotation.Annotation>
qualifiers
Qualifiers (other than @Named).(package private) java.lang.Integer
ranked
Binding rank.(package private) java.lang.Class<? extends java.lang.annotation.Annotation>
scope
Binding scope.(package private) java.lang.annotation.Annotation
scopeAnnotation
Binding scope as annotation
-
Constructor Summary
Constructors Constructor Description AbstractBindingBuilder()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description AbstractBindingBuilder<T>
analyzeWith(java.lang.String analyzer)
Set the name of theClassAnalyzer
on the binding.AbstractBindingBuilder<T>
asType(java.lang.reflect.Type t)
Call this if the parameterized type of the implementation class is known.(package private) abstract void
complete(DynamicConfiguration configuration, HK2Loader defaultLoader)
Build the binding descriptor and bind it in thedynamic configuration
.(package private) static <T> AbstractBindingBuilder<T>
create(java.lang.Class<T> serviceType, boolean bindAsContract)
Create a new service binding builder.(package private) static <T> AbstractBindingBuilder<T>
create(java.lang.reflect.Type serviceType, boolean bindAsContract)
Create a new service binding builder.(package private) static <T> AbstractBindingBuilder<T>
create(TypeLiteral<T> serviceType, boolean bindAsContract)
Create a new service binding builder.(package private) static <T> AbstractBindingBuilder<T>
create(T service)
Create a new service binding builder.(package private) static <T> AbstractBindingBuilder<T>
createFactoryBinder(java.lang.Class<? extends Factory<T>> factoryType, java.lang.Class<? extends java.lang.annotation.Annotation> factoryScope)
Create a new service binding builder.(package private) static <T> AbstractBindingBuilder<T>
createFactoryBinder(Factory<T> factory)
Create a new service binding builder.AbstractBindingBuilder<T>
in(java.lang.annotation.Annotation scopeAnnotation)
Scope a binding.AbstractBindingBuilder<T>
in(java.lang.Class<? extends java.lang.annotation.Annotation> scopeAnnotation)
Scope a binding.AbstractBindingBuilder<T>
loadedBy(HK2Loader loader)
Custom HK2 loader to be used when service class is about to be loaded.AbstractBindingBuilder<T>
named(java.lang.String name)
Name
the binding.AbstractBindingBuilder<T>
proxy(boolean proxiable)
Set proxy flag on the binding.AbstractBindingBuilder<T>
proxyForSameScope(boolean proxyForSameScope)
Set proxyForSameScope flag on the bindingAbstractBindingBuilder<T>
qualifiedBy(java.lang.annotation.Annotation annotation)
Add a binding qualifier annotation.void
ranked(int rank)
Rank the binding.AbstractBindingBuilder<T>
to(java.lang.Class<? super T> contract)
Bind a new contract to a service.AbstractBindingBuilder<T>
to(java.lang.reflect.Type contract)
Bind a new contract to a service.AbstractBindingBuilder<T>
to(TypeLiteral<?> contract)
Bind a new contract to a service.AbstractBindingBuilder<T>
withMetadata(java.lang.String key, java.lang.String value)
Add binding descriptor metadata.AbstractBindingBuilder<T>
withMetadata(java.lang.String key, java.util.List<java.lang.String> values)
Add binding descriptor metadata.
-
-
-
Field Detail
-
contracts
java.util.Set<java.lang.reflect.Type> contracts
Contracts the service should be bound to.
-
loader
HK2Loader loader
Bound service loader.
-
metadata
final MultiMap<java.lang.String,java.lang.String> metadata
Binding metadata (e.g. useful for filtering).
-
qualifiers
java.util.Set<java.lang.annotation.Annotation> qualifiers
Qualifiers (other than @Named).
-
scopeAnnotation
java.lang.annotation.Annotation scopeAnnotation
Binding scope as annotation
-
scope
java.lang.Class<? extends java.lang.annotation.Annotation> scope
Binding scope.
-
ranked
java.lang.Integer ranked
Binding rank.
-
name
java.lang.String name
Binding name (see @Named).
-
proxiable
java.lang.Boolean proxiable
Injectee is proxiable.
-
proxyForSameScope
java.lang.Boolean proxyForSameScope
Injectee should be proxied even inside the same scope
-
implementationType
java.lang.reflect.Type implementationType
-
analyzer
java.lang.String analyzer
Analyzer to use with this descriptor
-
-
Method Detail
-
proxy
public AbstractBindingBuilder<T> proxy(boolean proxiable)
Description copied from interface:ServiceBindingBuilder
Set proxy flag on the binding.- Specified by:
proxy
in interfaceNamedBindingBuilder<T>
- Specified by:
proxy
in interfaceScopedBindingBuilder<T>
- Specified by:
proxy
in interfaceScopedNamedBindingBuilder<T>
- Specified by:
proxy
in interfaceServiceBindingBuilder<T>
- Parameters:
proxiable
- flag to determine if the binding should be proxiable.
-
proxyForSameScope
public AbstractBindingBuilder<T> proxyForSameScope(boolean proxyForSameScope)
Description copied from interface:ServiceBindingBuilder
Set proxyForSameScope flag on the binding- Specified by:
proxyForSameScope
in interfaceScopedBindingBuilder<T>
- Specified by:
proxyForSameScope
in interfaceServiceBindingBuilder<T>
- Parameters:
proxyForSameScope
- flag to determine if proxies should be generated even within the same scope- Returns:
- A further refined ServiceBindingBuilder
-
analyzeWith
public AbstractBindingBuilder<T> analyzeWith(java.lang.String analyzer)
Description copied from interface:ServiceBindingBuilder
Set the name of theClassAnalyzer
on the binding.- Specified by:
analyzeWith
in interfaceScopedBindingBuilder<T>
- Specified by:
analyzeWith
in interfaceScopedNamedBindingBuilder<T>
- Specified by:
analyzeWith
in interfaceServiceBindingBuilder<T>
- Parameters:
analyzer
- The name of the analyzer that should be used. May be null to indicate the default class analzyer
-
to
public AbstractBindingBuilder<T> to(java.lang.Class<? super T> contract)
Description copied from interface:ServiceBindingBuilder
Bind a new contract to a service.- Specified by:
to
in interfaceNamedBindingBuilder<T>
- Specified by:
to
in interfaceScopedBindingBuilder<T>
- Specified by:
to
in interfaceScopedNamedBindingBuilder<T>
- Specified by:
to
in interfaceServiceBindingBuilder<T>
- Parameters:
contract
- contract type.- Returns:
- updated binder.
-
to
public AbstractBindingBuilder<T> to(TypeLiteral<?> contract)
Description copied from interface:ServiceBindingBuilder
Bind a new contract to a service.- Specified by:
to
in interfaceNamedBindingBuilder<T>
- Specified by:
to
in interfaceScopedBindingBuilder<T>
- Specified by:
to
in interfaceScopedNamedBindingBuilder<T>
- Specified by:
to
in interfaceServiceBindingBuilder<T>
- Parameters:
contract
- contract type.- Returns:
- updated binder.
-
to
public AbstractBindingBuilder<T> to(java.lang.reflect.Type contract)
Description copied from interface:ServiceBindingBuilder
Bind a new contract to a service.- Specified by:
to
in interfaceServiceBindingBuilder<T>
- Parameters:
contract
- contract type.- Returns:
- updated binder.
-
loadedBy
public AbstractBindingBuilder<T> loadedBy(HK2Loader loader)
Description copied from interface:ServiceBindingBuilder
Custom HK2 loader to be used when service class is about to be loaded.- Specified by:
loadedBy
in interfaceNamedBindingBuilder<T>
- Specified by:
loadedBy
in interfaceScopedBindingBuilder<T>
- Specified by:
loadedBy
in interfaceScopedNamedBindingBuilder<T>
- Specified by:
loadedBy
in interfaceServiceBindingBuilder<T>
- Parameters:
loader
- custom service loader.- Returns:
- updated binder.
-
withMetadata
public AbstractBindingBuilder<T> withMetadata(java.lang.String key, java.lang.String value)
Description copied from interface:ServiceBindingBuilder
Add binding descriptor metadata. The metadata can be later used to e.g.filter
binding descriptors. If this is forFactory
descriptors the metadata will be placed on both the Factory as a service and on the FactoriesFactory.provide()
method- Specified by:
withMetadata
in interfaceNamedBindingBuilder<T>
- Specified by:
withMetadata
in interfaceScopedBindingBuilder<T>
- Specified by:
withMetadata
in interfaceScopedNamedBindingBuilder<T>
- Specified by:
withMetadata
in interfaceServiceBindingBuilder<T>
- Parameters:
key
- metadata key.value
- metadata value.- Returns:
- updated binder.
-
withMetadata
public AbstractBindingBuilder<T> withMetadata(java.lang.String key, java.util.List<java.lang.String> values)
Description copied from interface:ServiceBindingBuilder
Add binding descriptor metadata. The metadata can be later used to e.g.filter
binding descriptors. If this is forFactory
descriptors the metadata will be placed on both the Factory as a service and on the FactoriesFactory.provide()
method- Specified by:
withMetadata
in interfaceNamedBindingBuilder<T>
- Specified by:
withMetadata
in interfaceScopedBindingBuilder<T>
- Specified by:
withMetadata
in interfaceScopedNamedBindingBuilder<T>
- Specified by:
withMetadata
in interfaceServiceBindingBuilder<T>
- Parameters:
key
- metadata key.values
- metadata values.- Returns:
- updated binder.
-
qualifiedBy
public AbstractBindingBuilder<T> qualifiedBy(java.lang.annotation.Annotation annotation)
Description copied from interface:ServiceBindingBuilder
Add a binding qualifier annotation. If this is being used with aFactory
then both the Factory Service and theFactory.provide()
method will get the qualifier- Specified by:
qualifiedBy
in interfaceNamedBindingBuilder<T>
- Specified by:
qualifiedBy
in interfaceScopedBindingBuilder<T>
- Specified by:
qualifiedBy
in interfaceScopedNamedBindingBuilder<T>
- Specified by:
qualifiedBy
in interfaceServiceBindingBuilder<T>
- Parameters:
annotation
- qualifier annotation.- Returns:
- updated binder.
-
in
public AbstractBindingBuilder<T> in(java.lang.annotation.Annotation scopeAnnotation)
Description copied from interface:ServiceBindingBuilder
Scope a binding.- Specified by:
in
in interfaceServiceBindingBuilder<T>
- Parameters:
scopeAnnotation
- scope annotation.- Returns:
- updated binding.
-
in
public AbstractBindingBuilder<T> in(java.lang.Class<? extends java.lang.annotation.Annotation> scopeAnnotation)
Description copied from interface:ServiceBindingBuilder
Scope a binding.- Specified by:
in
in interfaceNamedBindingBuilder<T>
- Specified by:
in
in interfaceServiceBindingBuilder<T>
- Parameters:
scopeAnnotation
- scope annotation.- Returns:
- updated binding.
-
named
public AbstractBindingBuilder<T> named(java.lang.String name)
Description copied from interface:ServiceBindingBuilder
Name
the binding.- Specified by:
named
in interfaceScopedBindingBuilder<T>
- Specified by:
named
in interfaceServiceBindingBuilder<T>
- Parameters:
name
- new name value.- Returns:
- updated binding.
-
ranked
public void ranked(int rank)
Description copied from interface:ServiceBindingBuilder
Rank the binding. The higher rank, the more prominent position in an injectediterable provider
for a contract.- Specified by:
ranked
in interfaceNamedBindingBuilder<T>
- Specified by:
ranked
in interfaceScopedBindingBuilder<T>
- Specified by:
ranked
in interfaceScopedNamedBindingBuilder<T>
- Specified by:
ranked
in interfaceServiceBindingBuilder<T>
- Parameters:
rank
- binding rank to be used to resolve ordering in case of multiple services are bound to the same contract.
-
asType
public AbstractBindingBuilder<T> asType(java.lang.reflect.Type t)
Description copied from interface:ServiceBindingBuilder
Call this if the parameterized type of the implementation class is known. This must only be called with a ParameterizedType- Specified by:
asType
in interfaceNamedBindingBuilder<T>
- Specified by:
asType
in interfaceServiceBindingBuilder<T>
- Parameters:
t
- The non-null ParameterizedType describing the implementation- Returns:
- A DescriptorBuilder with the given implementationType
-
complete
abstract void complete(DynamicConfiguration configuration, HK2Loader defaultLoader)
Build the binding descriptor and bind it in thedynamic configuration
.- Parameters:
configuration
- dynamic binding configuration.defaultLoader
- default HK2 loader that should be used in case a custom loader was not set.
-
create
static <T> AbstractBindingBuilder<T> create(java.lang.Class<T> serviceType, boolean bindAsContract)
Create a new service binding builder.- Type Parameters:
T
- service type.- Parameters:
serviceType
- service class.bindAsContract
- iftrue
, the service class will be bound as one of the contracts.- Returns:
- initialized binding builder.
-
create
static <T> AbstractBindingBuilder<T> create(java.lang.reflect.Type serviceType, boolean bindAsContract)
Create a new service binding builder.- Type Parameters:
T
- service type.- Parameters:
serviceType
- service class.bindAsContract
- iftrue
, the service class will be bound as one of the contracts.- Returns:
- initialized binding builder.
-
create
static <T> AbstractBindingBuilder<T> create(TypeLiteral<T> serviceType, boolean bindAsContract)
Create a new service binding builder.- Type Parameters:
T
- service type.- Parameters:
serviceType
- generic service type.bindAsContract
- iftrue
, the service class will be bound as one of the contracts.- Returns:
- initialized binding builder.
-
create
static <T> AbstractBindingBuilder<T> create(T service)
Create a new service binding builder.- Parameters:
service
- service instance.- Returns:
- initialized binding builder.
-
createFactoryBinder
static <T> AbstractBindingBuilder<T> createFactoryBinder(Factory<T> factory)
Create a new service binding builder.- Parameters:
factory
- service factory instance.- Returns:
- initialized binding builder.
-
createFactoryBinder
static <T> AbstractBindingBuilder<T> createFactoryBinder(java.lang.Class<? extends Factory<T>> factoryType, java.lang.Class<? extends java.lang.annotation.Annotation> factoryScope)
Create a new service binding builder.- Parameters:
factoryType
- service factory class.factoryScope
- service factory scope.- Returns:
- initialized binding builder.
-
-