Package com.google.inject.spi
Class BindingSourceRestriction
- java.lang.Object
-
- com.google.inject.spi.BindingSourceRestriction
-
public final class BindingSourceRestriction extends Object
Contains abstractions for enforcingRestrictedBindingSource
.Enforcement happens in two phases:
- Data structures for enforcement are built during Binder configuration.
BindingSourceRestriction.PermitMapConstruction
encapsulates this process, and theBindingSourceRestriction.PermitMap
is the end result. - Restrictions are enforced by checking each binding for violations with
check(com.google.inject.internal.GuiceInternal, java.util.List<com.google.inject.spi.Element>)
, which uses theBindingSourceRestriction.PermitMap
(s) built during Binder configuration.
Note: None of this is thread-safe because it's only used while the Injector is being built, which happens on a single thread.
- Author:
- vzm@google.com (Vladimir Makaric)
- Data structures for enforcement are built during Binder configuration.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static com.google.common.collect.ImmutableList<Message>
check(GuiceInternal guiceInternal, List<Element> elements)
Returns all the restriction violations found on the given Module Elements, as error messages.static Optional<String>
getMissingImplementationSuggestion(GuiceInternal guiceInternal, Key<?> key)
Returns a suggestion for how a restricted binding should be created in case it's missing.
-
-
-
Method Detail
-
getMissingImplementationSuggestion
public static Optional<String> getMissingImplementationSuggestion(GuiceInternal guiceInternal, Key<?> key)
Returns a suggestion for how a restricted binding should be created in case it's missing.
-
check
public static com.google.common.collect.ImmutableList<Message> check(GuiceInternal guiceInternal, List<Element> elements)
Returns all the restriction violations found on the given Module Elements, as error messages.Note: Intended to be used on Module Elements, not Injector Elements, ie. the result of
Elements.getElements(com.google.inject.Module...)
notInjector.getElements
. The Module Elements this check cares about are:- Module Bindings, which are always explicit and always have an
ElementSource
(with a Module Stack), unlike Injector Bindings, which may be implicit and bereft of an ElementSource. PrivateElements
, which represent the recursive case of this check. They contain a list of elements that this check is recursively called on.
- Module Bindings, which are always explicit and always have an
-
-