diff --git a/core/deployment/src/main/java/io/quarkus/deployment/Capability.java b/core/deployment/src/main/java/io/quarkus/deployment/Capability.java index 7ef00e04ad01c..7196e7d4b87f2 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/Capability.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/Capability.java @@ -5,47 +5,47 @@ */ public interface Capability { - String QUARKUS_PREFIX = "io.quarkus."; + String QUARKUS_PREFIX = "io.quarkus"; /** * A datasource connection pool implementation */ - String AGROAL = QUARKUS_PREFIX + "agroal"; + String AGROAL = QUARKUS_PREFIX + ".agroal"; /** * JSR 365 compatible contexts and dependency injection */ - String CDI = QUARKUS_PREFIX + "cdi"; + String CDI = QUARKUS_PREFIX + ".cdi"; - String CONFIG_YAML = QUARKUS_PREFIX + "config.yaml"; + String CONFIG_YAML = QUARKUS_PREFIX + ".config.yaml"; /** * Java Servlet API */ - String SERVLET = QUARKUS_PREFIX + "servlet"; + String SERVLET = QUARKUS_PREFIX + ".servlet"; /** * Java Transaction API (JTA) */ - String TRANSACTIONS = QUARKUS_PREFIX + "transactions"; + String TRANSACTIONS = QUARKUS_PREFIX + ".transactions"; - String LRA_PARTICIPANT = QUARKUS_PREFIX + "lra.participant"; + String LRA_PARTICIPANT = QUARKUS_PREFIX + ".lra.participant"; - String JACKSON = QUARKUS_PREFIX + "jackson"; + String JACKSON = QUARKUS_PREFIX + ".jackson"; - String KOTLIN = QUARKUS_PREFIX + "kotlin"; + String KOTLIN = QUARKUS_PREFIX + ".kotlin"; - String JSONB = QUARKUS_PREFIX + "jsonb"; + String JSONB = QUARKUS_PREFIX + ".jsonb"; - String HAL = QUARKUS_PREFIX + "hal"; + String HAL = QUARKUS_PREFIX + ".hal"; - String REST = QUARKUS_PREFIX + "rest"; + String REST = QUARKUS_PREFIX + ".rest"; String REST_CLIENT = REST + ".client"; String REST_CLIENT_REACTIVE = REST_CLIENT + ".reactive"; String REST_JACKSON = REST + ".jackson"; String REST_JSONB = REST + ".jsonb"; - String RESTEASY = QUARKUS_PREFIX + "resteasy"; + String RESTEASY = QUARKUS_PREFIX + ".resteasy"; String RESTEASY_JSON = RESTEASY + ".json"; String RESTEASY_JSON_JACKSON = RESTEASY_JSON + ".jackson"; @@ -60,86 +60,86 @@ public interface Capability { String RESTEASY_REACTIVE_JSON_JACKSON = RESTEASY_REACTIVE_JSON + ".jackson"; String RESTEASY_REACTIVE_JSON_JSONB = RESTEASY_REACTIVE_JSON + ".jsonb"; - String JWT = QUARKUS_PREFIX + "jwt"; + String JWT = QUARKUS_PREFIX + ".jwt"; /** * @deprecated Tika has been moved to the Quarkiverse */ @Deprecated - String TIKA = QUARKUS_PREFIX + "tika"; + String TIKA = QUARKUS_PREFIX + ".tika"; - String MONGODB_CLIENT = QUARKUS_PREFIX + "mongodb-client"; - String MONGODB_PANACHE = QUARKUS_PREFIX + "mongodb.panache"; + String MONGODB_CLIENT = QUARKUS_PREFIX + ".mongodb-client"; + String MONGODB_PANACHE = QUARKUS_PREFIX + ".mongodb.panache"; String MONGODB_PANACHE_KOTLIN = MONGODB_PANACHE + ".kotlin"; - String ELASTICSEARCH_REST_HIGH_LEVEL_CLIENT = QUARKUS_PREFIX + "elasticsearch-rest-high-level-client"; + String ELASTICSEARCH_REST_HIGH_LEVEL_CLIENT = QUARKUS_PREFIX + ".elasticsearch-rest-high-level-client"; - String FLYWAY = QUARKUS_PREFIX + "flyway"; - String LIQUIBASE = QUARKUS_PREFIX + "liquibase"; + String FLYWAY = QUARKUS_PREFIX + ".flyway"; + String LIQUIBASE = QUARKUS_PREFIX + ".liquibase"; - String SECURITY = QUARKUS_PREFIX + "security"; + String SECURITY = QUARKUS_PREFIX + ".security"; String SECURITY_ELYTRON_OAUTH2 = SECURITY + ".elytron.oauth2"; String SECURITY_ELYTRON_JDBC = SECURITY + ".elytron.jdbc"; String SECURITY_ELYTRON_LDAP = SECURITY + ".elytron.ldap"; String SECURITY_JPA = SECURITY + ".jpa"; - String QUARTZ = QUARKUS_PREFIX + "quartz"; - String KUBERNETES_SERVICE_BINDING = QUARKUS_PREFIX + "kubernetes.service.binding"; - String KUBERNETES_CLIENT = QUARKUS_PREFIX + "kubernetes.client"; + String QUARTZ = QUARKUS_PREFIX + ".quartz"; + String KUBERNETES_SERVICE_BINDING = QUARKUS_PREFIX + ".kubernetes.service.binding"; + String KUBERNETES_CLIENT = QUARKUS_PREFIX + ".kubernetes.client"; /** * @deprecated * @see io.quarkus.deployment.metrics.MetricsCapabilityBuildItem */ - String METRICS = QUARKUS_PREFIX + "metrics"; - String CONTAINER_IMAGE_JIB = QUARKUS_PREFIX + "container.image.jib"; - String CONTAINER_IMAGE_DOCKER = QUARKUS_PREFIX + "container.image.docker"; - String CONTAINER_IMAGE_S2I = QUARKUS_PREFIX + "container.image.s2i"; - String CONTAINER_IMAGE_OPENSHIFT = QUARKUS_PREFIX + "container.image.openshift"; - String CONTAINER_IMAGE_BUILDPACK = QUARKUS_PREFIX + "container.image.buildpack"; - String HIBERNATE_ORM = QUARKUS_PREFIX + "hibernate.orm"; - String HIBERNATE_ENVERS = QUARKUS_PREFIX + "hibernate.envers"; - String HIBERNATE_REACTIVE = QUARKUS_PREFIX + "hibernate.reactive"; - String HIBERNATE_VALIDATOR = QUARKUS_PREFIX + "hibernate.validator"; - String OPENTELEMETRY_TRACER = QUARKUS_PREFIX + "opentelemetry.tracer"; - - String OPENSHIFT = QUARKUS_PREFIX + "openshift"; + String METRICS = QUARKUS_PREFIX + ".metrics"; + String CONTAINER_IMAGE_JIB = QUARKUS_PREFIX + ".container.image.jib"; + String CONTAINER_IMAGE_DOCKER = QUARKUS_PREFIX + ".container.image.docker"; + String CONTAINER_IMAGE_S2I = QUARKUS_PREFIX + ".container.image.s2i"; + String CONTAINER_IMAGE_OPENSHIFT = QUARKUS_PREFIX + ".container.image.openshift"; + String CONTAINER_IMAGE_BUILDPACK = QUARKUS_PREFIX + ".container.image.buildpack"; + String HIBERNATE_ORM = QUARKUS_PREFIX + ".hibernate.orm"; + String HIBERNATE_ENVERS = QUARKUS_PREFIX + ".hibernate.envers"; + String HIBERNATE_REACTIVE = QUARKUS_PREFIX + ".hibernate.reactive"; + String HIBERNATE_VALIDATOR = QUARKUS_PREFIX + ".hibernate.validator"; + String OPENTELEMETRY_TRACER = QUARKUS_PREFIX + ".opentelemetry.tracer"; + + String OPENSHIFT = QUARKUS_PREFIX + ".openshift"; String OPENSHIFT_CLIENT = OPENSHIFT + ".client"; - String OIDC = QUARKUS_PREFIX + "oidc"; + String OIDC = QUARKUS_PREFIX + ".oidc"; /** * Presence of an io.opentracing tracer (for example, Jaeger). */ - String OPENTRACING = QUARKUS_PREFIX + "opentracing"; + String OPENTRACING = QUARKUS_PREFIX + ".opentracing"; /** * Presence of SmallRye OpenTracing. */ - String SMALLRYE_OPENTRACING = QUARKUS_PREFIX + "smallrye.opentracing"; - String SMALLRYE_HEALTH = QUARKUS_PREFIX + "smallrye.health"; - String SMALLRYE_OPENAPI = QUARKUS_PREFIX + "smallrye.openapi"; - String SMALLRYE_GRAPHQL = QUARKUS_PREFIX + "smallrye.graphql"; - String SMALLRYE_FAULT_TOLERANCE = QUARKUS_PREFIX + "smallrye.faulttolerance"; + String SMALLRYE_OPENTRACING = QUARKUS_PREFIX + ".smallrye.opentracing"; + String SMALLRYE_HEALTH = QUARKUS_PREFIX + ".smallrye.health"; + String SMALLRYE_OPENAPI = QUARKUS_PREFIX + ".smallrye.openapi"; + String SMALLRYE_GRAPHQL = QUARKUS_PREFIX + ".smallrye.graphql"; + String SMALLRYE_FAULT_TOLERANCE = QUARKUS_PREFIX + ".smallrye.faulttolerance"; - String SPRING_WEB = QUARKUS_PREFIX + "spring.web"; + String SPRING_WEB = QUARKUS_PREFIX + ".spring.web"; - String VERTX = QUARKUS_PREFIX + "vertx"; + String VERTX = QUARKUS_PREFIX + ".vertx"; String VERTX_CORE = VERTX + ".core"; String VERTX_HTTP = VERTX + ".http"; - String APICURIO_REGISTRY = QUARKUS_PREFIX + "apicurio.registry"; + String APICURIO_REGISTRY = QUARKUS_PREFIX + ".apicurio.registry"; String APICURIO_REGISTRY_AVRO = APICURIO_REGISTRY + ".avro"; - String CONFLUENT_REGISTRY = QUARKUS_PREFIX + "confluent.registry"; + String CONFLUENT_REGISTRY = QUARKUS_PREFIX + ".confluent.registry"; String CONFLUENT_REGISTRY_AVRO = CONFLUENT_REGISTRY + ".avro"; - String PICOCLI = QUARKUS_PREFIX + "picocli"; + String PICOCLI = QUARKUS_PREFIX + ".picocli"; - String KAFKA = QUARKUS_PREFIX + "kafka"; + String KAFKA = QUARKUS_PREFIX + ".kafka"; - String SMALLRYE_REACTIVE_MESSAGING = QUARKUS_PREFIX + "smallrye.reactive.messaging"; - String REDIS_CLIENT = QUARKUS_PREFIX + "redis"; + String SMALLRYE_REACTIVE_MESSAGING = QUARKUS_PREFIX + ".smallrye.reactive.messaging"; + String REDIS_CLIENT = QUARKUS_PREFIX + ".redis"; - String CACHE = QUARKUS_PREFIX + "cache"; - String JDBC_ORACLE = QUARKUS_PREFIX + "jdbc.oracle"; + String CACHE = QUARKUS_PREFIX + ".cache"; + String JDBC_ORACLE = QUARKUS_PREFIX + ".jdbc.oracle"; } diff --git a/core/deployment/src/test/java/io/quarkus/deployment/CapabilityTest.java b/core/deployment/src/test/java/io/quarkus/deployment/CapabilityTest.java new file mode 100644 index 0000000000000..5d1b43d950ebf --- /dev/null +++ b/core/deployment/src/test/java/io/quarkus/deployment/CapabilityTest.java @@ -0,0 +1,41 @@ +package io.quarkus.deployment; + +import static java.util.function.Predicate.not; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.stream.Stream; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class CapabilityTest { + private static Stream capabilityFields() { + Field[] declaredFields = Capability.class.getDeclaredFields(); + return Stream.of(declaredFields) + .filter(field -> Modifier.isStatic(field.getModifiers())) + .filter(field -> field.getType().equals(String.class)) + .map(CapabilityTest::getString) + .filter(not(Capability.QUARKUS_PREFIX::equals)) + .map(value -> Arguments.of(value)); + } + + @ParameterizedTest + @MethodSource("capabilityFields") + void validateCapabilityString(String capabilityName) { + assertThat(capabilityName).startsWith(Capability.QUARKUS_PREFIX + "."); + assertThat(capabilityName).doesNotContain(".."); + } + + private static String getString(Field field) { + try { + return (String) field.get(null); + } catch (IllegalArgumentException | IllegalAccessException e) { + fail(e); + return ""; + } + } +}