|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.jboss.weld.extensions.bean.AbstractImmutableBean<T> org.jboss.weld.extensions.bean.ImmutableNarrowingBean<T>
public class ImmutableNarrowingBean<T>
A narrowing bean allows you to build a general purpose bean (likely a producer method), and register it for a narrowed type (or qualifiers). For example, you could create a producer method which uses an a String ID to located an object (the object can have any class):
@Produces // Use some synthetic scope to prevent this from interfering with other // resolutions @MyProducer Object produce(InjectionPoint ip) { String id = ip.getAnnotated().getAnnotation(Id.class).value(); // Lookup and return the object for the id }
The delegate bean must return an object which can be cast to the
type T
, otherwise a ClassCastException
will be thrown at
runtime when the bean is created.
You can then register a narrowing bean for each type you need:
event.addBean(new NarrowingBeanBuilder<T>(delegateBean).readFromType(type).create());
ImmutableNarrowingBean
will use the annotations on
defininingType
to discover the qualifiers, types, scope,
stereotypes of the bean, as well as determine it's name (if any) and whether
it is an alternative.
The attributes are immutable, and collections are defensively copied on instantiation. It uses the defaults from the specification for properties if not specified.
NarrowingBeanBuilder
,
ImmutablePassivationCapableNarrowingBean
Constructor Summary | |
---|---|
ImmutableNarrowingBean(javax.enterprise.inject.spi.Bean<Object> delegate,
String name,
Set<Annotation> qualifiers,
Class<? extends Annotation> scope,
Set<Class<? extends Annotation>> stereotypes,
Set<Type> types,
boolean alternative,
boolean nullable,
String toString)
Instantiate a new ImmutableNarrowingBean . |
Method Summary | |
---|---|
T |
create(javax.enterprise.context.spi.CreationalContext<T> creationalContext)
|
void |
destroy(T instance,
javax.enterprise.context.spi.CreationalContext<T> creationalContext)
|
Methods inherited from class org.jboss.weld.extensions.bean.AbstractImmutableBean |
---|
getBeanClass, getInjectionPoints, getName, getQualifiers, getScope, getStereotypes, getTypes, isAlternative, isNullable, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public ImmutableNarrowingBean(javax.enterprise.inject.spi.Bean<Object> delegate, String name, Set<Annotation> qualifiers, Class<? extends Annotation> scope, Set<Class<? extends Annotation>> stereotypes, Set<Type> types, boolean alternative, boolean nullable, String toString)
ImmutableNarrowingBean
.
delegate
- the bean to delegate the lifecycle toname
- the name of the beanqualifiers
- the qualifiers of the beanscope
- the scope of the beanstereotypes
- the bean's stereotypestypes
- the types of the beanalternative
- whether the bean is an alternativeMethod Detail |
---|
public T create(javax.enterprise.context.spi.CreationalContext<T> creationalContext)
public void destroy(T instance, javax.enterprise.context.spi.CreationalContext<T> creationalContext)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |