
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 extends Annotation> 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 extends Annotation> 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 extends Annotation> 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 extends SyntheticBeanCreator> creatorClass);
SyntheticBeanBuilder disposeWith(Class extends SyntheticBeanDisposer> disposerClass);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy