org.jboss.weld.extensions.bean
Class ImmutablePassivationCapableNarrowingBean<T>
java.lang.Object
org.jboss.weld.extensions.bean.AbstractImmutableBean<T>
org.jboss.weld.extensions.bean.ImmutableNarrowingBean<T>
org.jboss.weld.extensions.bean.ImmutablePassivationCapableNarrowingBean<T>
- All Implemented Interfaces:
- javax.enterprise.context.spi.Contextual<T>, javax.enterprise.inject.spi.Bean<T>, javax.enterprise.inject.spi.PassivationCapable
public class ImmutablePassivationCapableNarrowingBean<T>
- extends ImmutableNarrowingBean<T>
- implements javax.enterprise.inject.spi.PassivationCapable
A passivation capable narrowing bean allows you to build a general purpose,
passivation capable, 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());
ImmutablePassivationCapableNarrowingBean
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.
- Author:
- Pete Muir
- See Also:
NarrowingBeanBuilder
,
ImmutableNarrowingBean
ImmutablePassivationCapableNarrowingBean
public ImmutablePassivationCapableNarrowingBean(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,
String id)
getId
public String getId()
- Specified by:
getId
in interface javax.enterprise.inject.spi.PassivationCapable
Copyright © 2008-2010 Seam Framework. All Rights Reserved.