From cea4cede84ba0a9eb26012ab0738299a7c9b94d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yoann=20Rodi=C3=A8re?= Date: Mon, 16 Sep 2024 12:38:58 +0200 Subject: [PATCH] Make Hibernate ORM and jdbc-derby extensions work without any other required dependencies With Derby moving to hibernate-community-dialects, Quarkus will need to add this dependency automatically. --- bom/application/pom.xml | 10 +++ devtools/bom-descriptor-json/pom.xml | 13 ++++ docs/pom.xml | 13 ++++ .../hibernate-orm-derby/deployment/pom.xml | 60 ++++++++++++++++ .../main/java/HibernateOrmDerbyProcessor.java | 14 ++++ extensions/hibernate-orm-derby/pom.xml | 21 ++++++ .../hibernate-orm-derby/runtime/pom.xml | 69 +++++++++++++++++++ .../resources/META-INF/quarkus-extension.yaml | 6 ++ .../spi/DatabaseKindDialectBuildItem.java | 4 ++ .../orm/deployment/HibernateOrmProcessor.java | 2 - extensions/jdbc/jdbc-derby/deployment/pom.xml | 5 ++ extensions/jdbc/jdbc-derby/runtime/pom.xml | 5 ++ extensions/pom.xml | 1 + 13 files changed, 221 insertions(+), 2 deletions(-) create mode 100644 extensions/hibernate-orm-derby/deployment/pom.xml create mode 100644 extensions/hibernate-orm-derby/deployment/src/main/java/HibernateOrmDerbyProcessor.java create mode 100644 extensions/hibernate-orm-derby/pom.xml create mode 100644 extensions/hibernate-orm-derby/runtime/pom.xml create mode 100644 extensions/hibernate-orm-derby/runtime/src/main/resources/META-INF/quarkus-extension.yaml diff --git a/bom/application/pom.xml b/bom/application/pom.xml index 4e7eb316f6e47..78eab533a0303 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -1149,6 +1149,16 @@ quarkus-hibernate-orm-deployment ${project.version} + + io.quarkus + quarkus-hibernate-orm-derby + ${project.version} + + + io.quarkus + quarkus-hibernate-orm-derby-deployment + ${project.version} + io.quarkus quarkus-hibernate-envers diff --git a/devtools/bom-descriptor-json/pom.xml b/devtools/bom-descriptor-json/pom.xml index 59f92096d0541..cd67dd251cafa 100644 --- a/devtools/bom-descriptor-json/pom.xml +++ b/devtools/bom-descriptor-json/pom.xml @@ -837,6 +837,19 @@ + + io.quarkus + quarkus-hibernate-orm-derby + ${project.version} + pom + test + + + * + * + + + io.quarkus quarkus-hibernate-orm-panache diff --git a/docs/pom.xml b/docs/pom.xml index fe8a3b2c4e450..aa02d3a6b0a07 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -848,6 +848,19 @@ + + io.quarkus + quarkus-hibernate-orm-derby-deployment + ${project.version} + pom + test + + + * + * + + + io.quarkus quarkus-hibernate-orm-panache-deployment diff --git a/extensions/hibernate-orm-derby/deployment/pom.xml b/extensions/hibernate-orm-derby/deployment/pom.xml new file mode 100644 index 0000000000000..348387d604fc0 --- /dev/null +++ b/extensions/hibernate-orm-derby/deployment/pom.xml @@ -0,0 +1,60 @@ + + + + quarkus-hibernate-orm-derby-parent + io.quarkus + 999-SNAPSHOT + + 4.0.0 + + quarkus-hibernate-orm-derby-deployment + Quarkus - Hibernate ORM - Derby - Deployment + This extensions is added by Quarkus automatically when quarkus-hibernate-orm and quarkus-jdbc-derby are on the classpath + + + + io.quarkus + quarkus-core-deployment + + + + io.quarkus + quarkus-hibernate-orm-deployment-spi + + + io.quarkus + quarkus-datasource-common + + + + io.quarkus + quarkus-hibernate-orm-derby + + + + + + + maven-compiler-plugin + + + default-compile + + + + io.quarkus + quarkus-extension-processor + ${project.version} + + + + + + + + + + + diff --git a/extensions/hibernate-orm-derby/deployment/src/main/java/HibernateOrmDerbyProcessor.java b/extensions/hibernate-orm-derby/deployment/src/main/java/HibernateOrmDerbyProcessor.java new file mode 100644 index 0000000000000..96713e5cf2153 --- /dev/null +++ b/extensions/hibernate-orm-derby/deployment/src/main/java/HibernateOrmDerbyProcessor.java @@ -0,0 +1,14 @@ +import java.util.Set; + +import io.quarkus.datasource.common.runtime.DatabaseKind; +import io.quarkus.deployment.annotations.BuildProducer; +import io.quarkus.deployment.annotations.BuildStep; +import io.quarkus.hibernate.orm.deployment.spi.DatabaseKindDialectBuildItem; + +public final class HibernateOrmDerbyProcessor { + @BuildStep + void registerHibernateOrmMetadataForDerbyDialect(BuildProducer producer) { + producer.produce(DatabaseKindDialectBuildItem.forCoreDialect(DatabaseKind.DERBY, "Apache Derby", + Set.of("org.hibernate.community.dialect.DerbyDialect"))); + } +} diff --git a/extensions/hibernate-orm-derby/pom.xml b/extensions/hibernate-orm-derby/pom.xml new file mode 100644 index 0000000000000..a381ea0a21d8c --- /dev/null +++ b/extensions/hibernate-orm-derby/pom.xml @@ -0,0 +1,21 @@ + + + + + quarkus-extensions-parent + io.quarkus + 999-SNAPSHOT + ../pom.xml + + 4.0.0 + + quarkus-hibernate-orm-derby-parent + Quarkus - Hibernate ORM - Derby - Deployment + pom + + runtime + deployment + + diff --git a/extensions/hibernate-orm-derby/runtime/pom.xml b/extensions/hibernate-orm-derby/runtime/pom.xml new file mode 100644 index 0000000000000..5dcf5cf656c0c --- /dev/null +++ b/extensions/hibernate-orm-derby/runtime/pom.xml @@ -0,0 +1,69 @@ + + + + quarkus-hibernate-orm-derby-parent + io.quarkus + 999-SNAPSHOT + + 4.0.0 + + quarkus-hibernate-orm-derby + Quarkus - Hibernate ORM - Derby - Deployment + This extensions is added by Quarkus automatically when quarkus-hibernate-orm and quarkus-jdbc-derby are on the classpath + + + + io.quarkus + quarkus-core + + + org.hibernate.orm + hibernate-community-dialects + + + + + + + io.quarkus + quarkus-extension-maven-plugin + + + compile + + extension-descriptor + + + ${project.groupId}:${project.artifactId}-deployment:${project.version} + + io.quarkus:quarkus-hibernate-orm + io.quarkus:quarkus-jdbc-derby + + + + + + + maven-compiler-plugin + + + default-compile + + + + io.quarkus + quarkus-extension-processor + ${project.version} + + + + + + + + + + + diff --git a/extensions/hibernate-orm-derby/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/hibernate-orm-derby/runtime/src/main/resources/META-INF/quarkus-extension.yaml new file mode 100644 index 0000000000000..0ae1a6c04092e --- /dev/null +++ b/extensions/hibernate-orm-derby/runtime/src/main/resources/META-INF/quarkus-extension.yaml @@ -0,0 +1,6 @@ +name: Quarkus Hibernate ORM Derby +artifact: ${project.groupId}:${project.artifactId}:${project.version} +description: Conditional extension added when Hibernate ORM and the Derby JDBC driver are present +metadata: + unlisted: true + diff --git a/extensions/hibernate-orm/deployment-spi/src/main/java/io/quarkus/hibernate/orm/deployment/spi/DatabaseKindDialectBuildItem.java b/extensions/hibernate-orm/deployment-spi/src/main/java/io/quarkus/hibernate/orm/deployment/spi/DatabaseKindDialectBuildItem.java index 0087e4334b4f7..7e924ed3d8789 100644 --- a/extensions/hibernate-orm/deployment-spi/src/main/java/io/quarkus/hibernate/orm/deployment/spi/DatabaseKindDialectBuildItem.java +++ b/extensions/hibernate-orm/deployment-spi/src/main/java/io/quarkus/hibernate/orm/deployment/spi/DatabaseKindDialectBuildItem.java @@ -19,6 +19,8 @@ public final class DatabaseKindDialectBuildItem extends MultiBuildItem { * @param dbKind The DB Kind set through {@code quarkus.datasource.db-kind} * @param databaseProductName The corresponding database-product-name to set in Hibernate ORM. * See {@code org.hibernate.dialect.Database} for information on how this name is resolved to a dialect. + * Also works with {@code org.hibernate.community.dialect.CommunityDatabase} if + * {@code hibernate-community-dialects} is in the classpath. * @param dialects The corresponding dialects in Hibernate ORM, * to detect the dbKind when using database multi-tenancy. */ @@ -32,6 +34,8 @@ public static DatabaseKindDialectBuildItem forCoreDialect(String dbKind, String * @param dbKind The DB Kind set through {@code quarkus.datasource.db-kind} * @param databaseProductName The corresponding database-product-name to set in Hibernate ORM. * See {@code org.hibernate.dialect.Database} for information on how this name is resolved to a dialect. + * Also works with {@code org.hibernate.community.dialect.CommunityDatabase} if + * {@code hibernate-community-dialects} is in the classpath. * @param dialects The corresponding dialects in Hibernate ORM, * to detect the dbKind when using database multi-tenancy. * @param defaultDatabaseProductVersion The default database-product-version to set in Hibernate ORM. diff --git a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java index cf95d0070f311..a1b213404bcb5 100644 --- a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java +++ b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java @@ -165,8 +165,6 @@ void registerHibernateOrmMetadataForCoreDialects( BuildProducer producer) { producer.produce(DatabaseKindDialectBuildItem.forCoreDialect(DatabaseKind.DB2, "DB2", Set.of("org.hibernate.dialect.DB2Dialect"))); - producer.produce(DatabaseKindDialectBuildItem.forCoreDialect(DatabaseKind.DERBY, "Apache Derby", - Set.of("org.hibernate.dialect.DerbyDialect"))); producer.produce(DatabaseKindDialectBuildItem.forCoreDialect(DatabaseKind.H2, "H2", Set.of("org.hibernate.dialect.H2Dialect"), // Using our own default version is extra important for H2 diff --git a/extensions/jdbc/jdbc-derby/deployment/pom.xml b/extensions/jdbc/jdbc-derby/deployment/pom.xml index 65e40b59bf6a3..1c7b809af120d 100644 --- a/extensions/jdbc/jdbc-derby/deployment/pom.xml +++ b/extensions/jdbc/jdbc-derby/deployment/pom.xml @@ -34,6 +34,11 @@ quarkus-flyway-derby-deployment true + + io.quarkus + quarkus-hibernate-orm-derby-deployment + true + io.quarkus quarkus-devservices-derby diff --git a/extensions/jdbc/jdbc-derby/runtime/pom.xml b/extensions/jdbc/jdbc-derby/runtime/pom.xml index 172374f698b9c..b6fe4d62eda81 100644 --- a/extensions/jdbc/jdbc-derby/runtime/pom.xml +++ b/extensions/jdbc/jdbc-derby/runtime/pom.xml @@ -31,6 +31,11 @@ quarkus-flyway-derby true + + io.quarkus + quarkus-hibernate-orm-derby + true + diff --git a/extensions/pom.xml b/extensions/pom.xml index c11bbaa9679a1..6af7438fd00ce 100644 --- a/extensions/pom.xml +++ b/extensions/pom.xml @@ -95,6 +95,7 @@ agroal jdbc hibernate-orm + hibernate-orm-derby hibernate-envers hibernate-reactive hibernate-validator