Package org.eclipse.sisu.inject
Class DefaultBeanLocator
java.lang.Object
org.eclipse.sisu.inject.DefaultBeanLocator
- All Implemented Interfaces:
BeanLocator
,MutableBeanLocator
Default
MutableBeanLocator
that locates qualified beans across a dynamic group of BindingPublisher
s.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ConcurrentMap
<Long, RankedBindings> private final Map
<WatchedBeans, Object> private final ImplicitBindings
private final ReentrantReadWriteLock
private final RankedSequence
<BindingPublisher> private final Long[]
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
add
(BindingPublisher publisher) Adds the given rankedBindingPublisher
and distributes itsBinding
s.(package private) void
autoPublish
(com.google.inject.Injector injector) Automatically publishes anyInjector
that contains a binding to thisBeanLocator
.
Relies on Guice's auto-injection, bind the locator with a Provider to disable this feature.(package private) static void
autoPublishChild
(com.google.inject.Injector childInjector) Automatically publishes childInjector
s that inherit a binding to thisBeanLocator
.
Assumes module(s) used to create the child injector request static injection of this class.void
clear()
Removes all knownBindingPublisher
s and theirBinding
s.private RankedBindings
fetchBindings
(com.google.inject.TypeLiteral type, Long[] idReturn) Fetches any bindings currently associated with the given type.locate
(com.google.inject.Key key) Finds bean implementations that match the given qualified bindingKey
.Snapshot of currently registeredBindingPublisher
s.boolean
remove
(BindingPublisher publisher) Removes the givenBindingPublisher
and itsBinding
s.void
Tracks bean implementations that match the given qualified bindingKey
.
-
Field Details
-
publishers
-
cachedBindings
-
cachedWatchers
-
implicitBindings
-
typeIdHolder
-
publisherLock
-
-
Constructor Details
-
DefaultBeanLocator
public DefaultBeanLocator()
-
-
Method Details
-
locate
Description copied from interface:BeanLocator
Finds bean implementations that match the given qualified bindingKey
.- Specified by:
locate
in interfaceBeanLocator
- Parameters:
key
- The qualified key- Returns:
- Sequence of bean entries that match the given key
-
watch
Description copied from interface:BeanLocator
Tracks bean implementations that match the given qualified bindingKey
.Uses the
Mediator
pattern to send events to an arbitrary watcher object.- Specified by:
watch
in interfaceBeanLocator
- Parameters:
key
- The qualified keymediator
- The event mediatorwatcher
- The bean watcher
-
add
Description copied from interface:MutableBeanLocator
Adds the given rankedBindingPublisher
and distributes itsBinding
s.- Specified by:
add
in interfaceMutableBeanLocator
- Parameters:
publisher
- The new publisher- Returns:
true
if the publisher was added; otherwisefalse
-
remove
Description copied from interface:MutableBeanLocator
Removes the givenBindingPublisher
and itsBinding
s.- Specified by:
remove
in interfaceMutableBeanLocator
- Parameters:
publisher
- The old publisher- Returns:
true
if the publisher was removed; otherwisefalse
-
publishers
Description copied from interface:MutableBeanLocator
Snapshot of currently registeredBindingPublisher
s.- Specified by:
publishers
in interfaceMutableBeanLocator
- Returns:
- The registered
BindingPublisher
s
-
clear
public void clear()Description copied from interface:MutableBeanLocator
Removes all knownBindingPublisher
s and theirBinding
s.- Specified by:
clear
in interfaceMutableBeanLocator
-
fetchBindings
Fetches any bindings currently associated with the given type.- Parameters:
type
- The generic typeidReturn
- Optional holder, returns the assigned type id- Returns:
- Associated bindings;
null
if this is a new type
-
autoPublish
@Inject void autoPublish(com.google.inject.Injector injector) Automatically publishes anyInjector
that contains a binding to thisBeanLocator
.
Relies on Guice's auto-injection, bind the locator with a Provider to disable this feature.- Parameters:
injector
- The injector
-
autoPublishChild
@Inject static void autoPublishChild(com.google.inject.Injector childInjector) Automatically publishes childInjector
s that inherit a binding to thisBeanLocator
.
Assumes module(s) used to create the child injector request static injection of this class.- Parameters:
childInjector
- The child injector
-