Search in sources :

Example 1 with Alternative

use of javax.enterprise.inject.Alternative in project deltaspike by apache.

the class BeanBuilder method readFromType.

/**
 * <p>
 * Read the {@link AnnotatedType}, creating a bean from the class and it's
 * annotations.
 * </p>
 * <p/>
 * <p>
 * By default the bean lifecycle will wrap the result of calling
 * {@link BeanManager#createInjectionTarget(AnnotatedType)}.
 * </p>
 * <p/>
 * <p>
 * {@link BeanBuilder} does <em>not</em> support reading members of the class
 * to create producers or observer methods.
 * </p>
 *
 * @param type the type to read
 */
public BeanBuilder<T> readFromType(AnnotatedType<T> type) {
    this.beanClass = type.getJavaClass();
    if (beanLifecycle == null) {
        setDefaultBeanLifecycle(type);
    }
    this.qualifiers = new HashSet<Annotation>();
    this.stereotypes = new HashSet<Class<? extends Annotation>>();
    this.types = new HashSet<Type>();
    for (Annotation annotation : type.getAnnotations()) {
        if (beanManager.isQualifier(annotation.annotationType())) {
            this.qualifiers.add(annotation);
        } else if (beanManager.isScope(annotation.annotationType())) {
            this.scope = annotation.annotationType();
        } else if (beanManager.isStereotype(annotation.annotationType())) {
            this.stereotypes.add(annotation.annotationType());
        }
        if (annotation instanceof Named) {
            this.name = ((Named) annotation).value();
            if (name == null || name.length() == 0) {
                name = createDefaultBeanName(type);
            }
        }
        if (annotation instanceof Alternative) {
            this.alternative = true;
        }
    }
    if (type.isAnnotationPresent(Typed.class)) {
        Typed typed = type.getAnnotation(Typed.class);
        this.types.addAll(Arrays.asList(typed.value()));
    } else {
        for (Class<?> c = type.getJavaClass(); c != Object.class && c != null; c = c.getSuperclass()) {
            this.types.add(c);
        }
        Collections.addAll(this.types, type.getJavaClass().getInterfaces());
        this.types.add(Object.class);
    }
    if (qualifiers.isEmpty()) {
        qualifiers.add(new DefaultLiteral());
    }
    qualifiers.add(new AnyLiteral());
    this.id = ImmutableBeanWrapper.class.getName() + ":" + Annotateds.createTypeId(type);
    return this;
}
Also used : Named(javax.inject.Named) Alternative(javax.enterprise.inject.Alternative) Annotation(java.lang.annotation.Annotation) AnnotatedType(javax.enterprise.inject.spi.AnnotatedType) Type(java.lang.reflect.Type) Typed(javax.enterprise.inject.Typed) DefaultLiteral(org.apache.deltaspike.core.api.literal.DefaultLiteral) AnyLiteral(org.apache.deltaspike.core.api.literal.AnyLiteral)

Example 2 with Alternative

use of javax.enterprise.inject.Alternative in project kie-wb-common by kiegroup.

the class TestAppSetup method classLoaderHelper.

@Produces
@Alternative
public ModuleClassLoaderHelper classLoaderHelper() {
    ModuleClassLoaderHelper classLoaderHelper = mock(ModuleClassLoaderHelper.class);
    when(classLoaderHelper.getModuleClassLoader(any())).thenReturn(this.getClass().getClassLoader());
    return classLoaderHelper;
}
Also used : ModuleClassLoaderHelper(org.kie.workbench.common.services.backend.project.ModuleClassLoaderHelper) Alternative(javax.enterprise.inject.Alternative) Produces(javax.enterprise.inject.Produces)

Aggregations

Alternative (javax.enterprise.inject.Alternative)2 Annotation (java.lang.annotation.Annotation)1 Type (java.lang.reflect.Type)1 Produces (javax.enterprise.inject.Produces)1 Typed (javax.enterprise.inject.Typed)1 AnnotatedType (javax.enterprise.inject.spi.AnnotatedType)1 Named (javax.inject.Named)1 AnyLiteral (org.apache.deltaspike.core.api.literal.AnyLiteral)1 DefaultLiteral (org.apache.deltaspike.core.api.literal.DefaultLiteral)1 ModuleClassLoaderHelper (org.kie.workbench.common.services.backend.project.ModuleClassLoaderHelper)1