All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jakarta.enterprise.inject.build.compatible.spi.SyntheticBeanBuilder Maven / Gradle / Ivy

package jakarta.enterprise.inject.build.compatible.spi;

import jakarta.enterprise.lang.model.AnnotationAttribute;
import jakarta.enterprise.lang.model.AnnotationInfo;
import jakarta.enterprise.lang.model.declarations.ClassInfo;
import jakarta.enterprise.lang.model.types.Type;
import java.lang.annotation.Annotation;

/**
 * Instances are not reusable. For each synthetic bean, new instance
 * must be created by {@link SyntheticComponents#addBean(Class)}.
 *
 * @param  type of bean instances
 */
public interface SyntheticBeanBuilder {
    // TODO should have the type parameter? (see also SyntheticObserverBuilder and SyntheticComponents)

    // can be called multiple times and is additive
    // TODO methods to add multiple types at once?
    SyntheticBeanBuilder type(Class type);

    SyntheticBeanBuilder type(ClassInfo type);

    SyntheticBeanBuilder type(Type type);

    // can be called multiple times and is additive
    // TODO methods to add multiple qualifiers at once?
    SyntheticBeanBuilder qualifier(Class qualifierAnnotation, AnnotationAttribute... attributes);

    SyntheticBeanBuilder qualifier(ClassInfo qualifierAnnotation, AnnotationAttribute... attributes);

    SyntheticBeanBuilder qualifier(AnnotationInfo qualifierAnnotation);

    SyntheticBeanBuilder qualifier(Annotation qualifierAnnotation);

    // if called multiple times, last call wins
    // if not called, defaults to @Dependent
    SyntheticBeanBuilder scope(Class scopeAnnotation);

    // if called with `true`, priority is automatically 0, unless `priority` is also called
    // if called multiple times, last call wins
    SyntheticBeanBuilder alternative(boolean isAlternative);

    // if called, alternative is automatically true
    // if called multiple times, last call wins
    SyntheticBeanBuilder priority(int priority);

    // EL name (equivalent to @Named), IIUC
    // if called multiple times, last call wins
    SyntheticBeanBuilder name(String name);

    // can be called multiple times and is additive
    SyntheticBeanBuilder stereotype(Class stereotypeAnnotation);

    SyntheticBeanBuilder stereotype(ClassInfo stereotypeAnnotation);

    // params for creation and destruction functions
    SyntheticBeanBuilder withParam(String key, boolean value);

    SyntheticBeanBuilder withParam(String key, boolean[] value);

    SyntheticBeanBuilder withParam(String key, int value);

    SyntheticBeanBuilder withParam(String key, int[] value);

    SyntheticBeanBuilder withParam(String key, long value);

    SyntheticBeanBuilder withParam(String key, long[] value);

    SyntheticBeanBuilder withParam(String key, double value);

    SyntheticBeanBuilder withParam(String key, double[] value);

    SyntheticBeanBuilder withParam(String key, String value);

    SyntheticBeanBuilder withParam(String key, String[] value);

    SyntheticBeanBuilder withParam(String key, Class value);

    SyntheticBeanBuilder withParam(String key, Class[] value);

    SyntheticBeanBuilder createWith(Class> creatorClass);

    SyntheticBeanBuilder disposeWith(Class> disposerClass);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy