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 classAbstractBindingBuilder.ClassBasedBindingBuilder<T>private static classAbstractBindingBuilder.FactoryInstanceBasedBindingBuilder<T>private static classAbstractBindingBuilder.FactoryTypeBasedBindingBuilder<T>private static classAbstractBindingBuilder.InstanceBasedBindingBuilder<T>
-
Field Summary
Fields Modifier and Type Field Description (package private) java.lang.StringanalyzerAnalyzer to use with this descriptor(package private) java.util.Set<java.lang.reflect.Type>contractsContracts the service should be bound to.(package private) java.lang.reflect.TypeimplementationType(package private) HK2LoaderloaderBound service loader.(package private) MultiMap<java.lang.String,java.lang.String>metadataBinding metadata (e.g.(package private) java.lang.StringnameBinding name (see @Named).(package private) java.lang.BooleanproxiableInjectee is proxiable.(package private) java.lang.BooleanproxyForSameScopeInjectee should be proxied even inside the same scope(package private) java.util.Set<java.lang.annotation.Annotation>qualifiersQualifiers (other than @Named).(package private) java.lang.IntegerrankedBinding rank.(package private) java.lang.Class<? extends java.lang.annotation.Annotation>scopeBinding scope.(package private) java.lang.annotation.AnnotationscopeAnnotationBinding 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 theClassAnalyzeron 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 voidcomplete(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)Namethe 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.voidranked(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:ServiceBindingBuilderSet proxy flag on the binding.- Specified by:
proxyin interfaceNamedBindingBuilder<T>- Specified by:
proxyin interfaceScopedBindingBuilder<T>- Specified by:
proxyin interfaceScopedNamedBindingBuilder<T>- Specified by:
proxyin interfaceServiceBindingBuilder<T>- Parameters:
proxiable- flag to determine if the binding should be proxiable.
-
proxyForSameScope
public AbstractBindingBuilder<T> proxyForSameScope(boolean proxyForSameScope)
Description copied from interface:ServiceBindingBuilderSet proxyForSameScope flag on the binding- Specified by:
proxyForSameScopein interfaceScopedBindingBuilder<T>- Specified by:
proxyForSameScopein 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:ServiceBindingBuilderSet the name of theClassAnalyzeron the binding.- Specified by:
analyzeWithin interfaceScopedBindingBuilder<T>- Specified by:
analyzeWithin interfaceScopedNamedBindingBuilder<T>- Specified by:
analyzeWithin 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:ServiceBindingBuilderBind a new contract to a service.- Specified by:
toin interfaceNamedBindingBuilder<T>- Specified by:
toin interfaceScopedBindingBuilder<T>- Specified by:
toin interfaceScopedNamedBindingBuilder<T>- Specified by:
toin interfaceServiceBindingBuilder<T>- Parameters:
contract- contract type.- Returns:
- updated binder.
-
to
public AbstractBindingBuilder<T> to(TypeLiteral<?> contract)
Description copied from interface:ServiceBindingBuilderBind a new contract to a service.- Specified by:
toin interfaceNamedBindingBuilder<T>- Specified by:
toin interfaceScopedBindingBuilder<T>- Specified by:
toin interfaceScopedNamedBindingBuilder<T>- Specified by:
toin interfaceServiceBindingBuilder<T>- Parameters:
contract- contract type.- Returns:
- updated binder.
-
to
public AbstractBindingBuilder<T> to(java.lang.reflect.Type contract)
Description copied from interface:ServiceBindingBuilderBind a new contract to a service.- Specified by:
toin interfaceServiceBindingBuilder<T>- Parameters:
contract- contract type.- Returns:
- updated binder.
-
loadedBy
public AbstractBindingBuilder<T> loadedBy(HK2Loader loader)
Description copied from interface:ServiceBindingBuilderCustom HK2 loader to be used when service class is about to be loaded.- Specified by:
loadedByin interfaceNamedBindingBuilder<T>- Specified by:
loadedByin interfaceScopedBindingBuilder<T>- Specified by:
loadedByin interfaceScopedNamedBindingBuilder<T>- Specified by:
loadedByin 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:ServiceBindingBuilderAdd binding descriptor metadata. The metadata can be later used to e.g.filterbinding descriptors. If this is forFactorydescriptors the metadata will be placed on both the Factory as a service and on the FactoriesFactory.provide()method- Specified by:
withMetadatain interfaceNamedBindingBuilder<T>- Specified by:
withMetadatain interfaceScopedBindingBuilder<T>- Specified by:
withMetadatain interfaceScopedNamedBindingBuilder<T>- Specified by:
withMetadatain 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:ServiceBindingBuilderAdd binding descriptor metadata. The metadata can be later used to e.g.filterbinding descriptors. If this is forFactorydescriptors the metadata will be placed on both the Factory as a service and on the FactoriesFactory.provide()method- Specified by:
withMetadatain interfaceNamedBindingBuilder<T>- Specified by:
withMetadatain interfaceScopedBindingBuilder<T>- Specified by:
withMetadatain interfaceScopedNamedBindingBuilder<T>- Specified by:
withMetadatain 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:ServiceBindingBuilderAdd a binding qualifier annotation. If this is being used with aFactorythen both the Factory Service and theFactory.provide()method will get the qualifier- Specified by:
qualifiedByin interfaceNamedBindingBuilder<T>- Specified by:
qualifiedByin interfaceScopedBindingBuilder<T>- Specified by:
qualifiedByin interfaceScopedNamedBindingBuilder<T>- Specified by:
qualifiedByin interfaceServiceBindingBuilder<T>- Parameters:
annotation- qualifier annotation.- Returns:
- updated binder.
-
in
public AbstractBindingBuilder<T> in(java.lang.annotation.Annotation scopeAnnotation)
Description copied from interface:ServiceBindingBuilderScope a binding.- Specified by:
inin 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:ServiceBindingBuilderScope a binding.- Specified by:
inin interfaceNamedBindingBuilder<T>- Specified by:
inin interfaceServiceBindingBuilder<T>- Parameters:
scopeAnnotation- scope annotation.- Returns:
- updated binding.
-
named
public AbstractBindingBuilder<T> named(java.lang.String name)
Description copied from interface:ServiceBindingBuilderNamethe binding.- Specified by:
namedin interfaceScopedBindingBuilder<T>- Specified by:
namedin interfaceServiceBindingBuilder<T>- Parameters:
name- new name value.- Returns:
- updated binding.
-
ranked
public void ranked(int rank)
Description copied from interface:ServiceBindingBuilderRank the binding. The higher rank, the more prominent position in an injectediterable providerfor a contract.- Specified by:
rankedin interfaceNamedBindingBuilder<T>- Specified by:
rankedin interfaceScopedBindingBuilder<T>- Specified by:
rankedin interfaceScopedNamedBindingBuilder<T>- Specified by:
rankedin 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:ServiceBindingBuilderCall this if the parameterized type of the implementation class is known. This must only be called with a ParameterizedType- Specified by:
asTypein interfaceNamedBindingBuilder<T>- Specified by:
asTypein 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.
-
-