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

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

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

import jakarta.enterprise.lang.model.types.Type;
import java.lang.annotation.Annotation;
import java.util.function.Consumer;

// TODO remove entirely, if we remove AppArchive/AppDeployment
// TODO maybe AppArchiveConfig shouldn't extend AppArchive, and *ConfigQuery shouldn't extend *Query
public interface AppArchiveConfig extends AppArchive {
    @Override
    ClassConfigQuery classes();

    @Override
    MethodConfigQuery constructors(); // no static initializers

    @Override
    MethodConfigQuery methods(); // no constructors nor static initializers

    @Override
    FieldConfigQuery fields();

    interface ClassConfigQuery extends ClassQuery {
        @Override
        ClassConfigQuery exactly(Class clazz);

        @Override
        ClassConfigQuery subtypeOf(Class clazz);

        @Override
        ClassConfigQuery annotatedWith(Class annotationType);

        void configure(Consumer> consumer);
    }

    interface MethodConfigQuery extends MethodQuery {
        @Override
        MethodConfigQuery declaredOn(ClassQuery classes);

        @Override
        MethodConfigQuery withReturnType(Class type);

        @Override
        MethodConfigQuery withReturnType(Type type);

        @Override
        MethodConfigQuery annotatedWith(Class annotationType);

        void configure(Consumer> consumer);
    }

    interface FieldConfigQuery extends FieldQuery {
        @Override
        FieldConfigQuery declaredOn(ClassQuery classes);

        @Override
        FieldConfigQuery ofType(Class type);

        @Override
        FieldConfigQuery ofType(Type type);

        @Override
        FieldConfigQuery annotatedWith(Class annotationType);

        void configure(Consumer> consumer);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy