Package org.jboss.weld.inject
Interface WeldInstance<T>
-
- Type Parameters:
T- the required bean type
- All Superinterfaces:
javax.enterprise.inject.Instance<T>,Iterable<T>,javax.inject.Provider<T>
public interface WeldInstance<T> extends javax.enterprise.inject.Instance<T>Represents an enhanced version ofInstance.In the following example we filter out beans which are not
Dependentthen sort the beans by priority and use the handler whose bean has the highest priority (according togetPriorityComparator()) to obtain the hello string. Note that contextual references for beans with lower priority are not created at all.@ApplicationScoped class Hello { @Inject WeldInstance<HelloProvider> instance; String hello() { HelloProvider helloProvider = instance.handlersStream().filter(h -> h.getBean().getScope().equals(Dependent.class)) .sorted(instance.getPriorityComparator()).findFirst().map(Handler::get).orElse(null); if (helloProvider != null) return helloProvider.getHello(); return "No hello provider found!"; } }- Author:
- Martin Kouba
- See Also:
- WELD-2204
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interfaceWeldInstance.Handler<T>This interface represents a contextual reference handler.
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description WeldInstance.Handler<T>getHandler()Obtains an initialized contextual reference handler for the bean that has the required type and required qualifiers and is eligible for injection.Comparator<WeldInstance.Handler<?>>getPriorityComparator()The returned comparator sorts handlers by priority in descending order.Iterable<WeldInstance.Handler<T>>handlers()Allows to iterate over contextual reference handlers for all the beans that have the required type and required qualifiers and are eligible for injection.default Stream<WeldInstance.Handler<T>>handlersStream()WeldInstance<T>select(Annotation... qualifiers)<U extends T>
WeldInstance<U>select(Class<U> subtype, Annotation... qualifiers)<X> WeldInstance<X>select(Type subtype, Annotation... qualifiers)Obtains a childInstancefor the given required type and additional required qualifiers.<U extends T>
WeldInstance<U>select(javax.enterprise.util.TypeLiteral<U> subtype, Annotation... qualifiers)-
Methods inherited from interface javax.enterprise.inject.Instance
destroy, isAmbiguous, isResolvable, isUnsatisfied, stream
-
Methods inherited from interface java.lang.Iterable
forEach, iterator, spliterator
-
-
-
-
Method Detail
-
getHandler
WeldInstance.Handler<T> getHandler()
Obtains an initialized contextual reference handler for the bean that has the required type and required qualifiers and is eligible for injection.The contextual reference is obtained lazily, i.e. when first needed.
- Returns:
- a new handler
- Throws:
javax.enterprise.inject.UnsatisfiedResolutionException- if there is no bean with given type and qualifiersjavax.enterprise.inject.AmbiguousResolutionException- if there is more than one bean with given type and qualifiers
-
handlers
Iterable<WeldInstance.Handler<T>> handlers()
Allows to iterate over contextual reference handlers for all the beans that have the required type and required qualifiers and are eligible for injection.Note that the returned
Iterableis stateless and so eachIterable.iterator()produces a new set of handlers.- Returns:
- a new iterable
-
handlersStream
default Stream<WeldInstance.Handler<T>> handlersStream()
- Returns:
- a new stream of contextual reference handlers
-
getPriorityComparator
Comparator<WeldInstance.Handler<?>> getPriorityComparator()
The returned comparator sorts handlers by priority in descending order.- A class-based bean whose annotated type has
javax.annotation.Priorityhas the priority of valuejavax.annotation.Priority#value() - A custom bean which implements
Prioritizedhas the priority of valuePrioritized.getPriority() - Any other bean has the priority of value 0
- Returns:
- a comparator instance
- A class-based bean whose annotated type has
-
select
WeldInstance<T> select(Annotation... qualifiers)
- Specified by:
selectin interfacejavax.enterprise.inject.Instance<T>
-
select
<U extends T> WeldInstance<U> select(Class<U> subtype, Annotation... qualifiers)
- Specified by:
selectin interfacejavax.enterprise.inject.Instance<T>
-
select
<U extends T> WeldInstance<U> select(javax.enterprise.util.TypeLiteral<U> subtype, Annotation... qualifiers)
- Specified by:
selectin interfacejavax.enterprise.inject.Instance<T>
-
select
<X> WeldInstance<X> select(Type subtype, Annotation... qualifiers)
Obtains a child
Instancefor the given required type and additional required qualifiers. Must be invoked onInstance<T>where T isObject.- Type Parameters:
X- the required type- Parameters:
subtype- aTyperepresenting the required typequalifiers- the additional required qualifiers- Returns:
- the child
Instance - Throws:
IllegalArgumentException- if passed two instances of the same non repeating qualifier type, or an instance of an annotation that is not a qualifier typeIllegalStateException- if the container is already shutdownIllegalStateException- if invoked onInstance<T>where T is of any other type thanObject
-
-