From a1045b998fb5b309304ccbf97e441bdc43d87adc Mon Sep 17 00:00:00 2001 From: Koen Aers Date: Thu, 21 May 2026 10:28:45 +0200 Subject: [PATCH 1/5] Replace self-contained Gradle task with exporter-based schema annotation generation --- .../reveng/GenerateSchemaAnnotationsTask.java | 1001 ++--------------- .../tool/reveng/api/export/ExporterType.java | 3 +- .../schema/SchemaAnnotationExporter.java | 56 + .../export/schema/SchemaAnnotationHelper.java | 74 ++ .../resources/schema/SchemaAnnotation.ftl | 39 + 5 files changed, 264 insertions(+), 909 deletions(-) create mode 100644 tooling/hibernate-reveng/src/main/java/org/hibernate/tool/reveng/internal/export/schema/SchemaAnnotationExporter.java create mode 100644 tooling/hibernate-reveng/src/main/java/org/hibernate/tool/reveng/internal/export/schema/SchemaAnnotationHelper.java create mode 100644 tooling/hibernate-reveng/src/main/resources/schema/SchemaAnnotation.ftl diff --git a/tooling/hibernate-gradle-plugin/src/main/java/org/hibernate/orm/tooling/gradle/reveng/GenerateSchemaAnnotationsTask.java b/tooling/hibernate-gradle-plugin/src/main/java/org/hibernate/orm/tooling/gradle/reveng/GenerateSchemaAnnotationsTask.java index 68a1ce438592..4e1a48cd0b2e 100644 --- a/tooling/hibernate-gradle-plugin/src/main/java/org/hibernate/orm/tooling/gradle/reveng/GenerateSchemaAnnotationsTask.java +++ b/tooling/hibernate-gradle-plugin/src/main/java/org/hibernate/orm/tooling/gradle/reveng/GenerateSchemaAnnotationsTask.java @@ -4,6 +4,13 @@ */ package org.hibernate.orm.tooling.gradle.reveng; +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Properties; + import org.apache.tools.ant.BuildException; import org.gradle.api.DefaultTask; import org.gradle.api.GradleException; @@ -11,48 +18,22 @@ import org.gradle.api.file.DirectoryProperty; import org.gradle.api.provider.Property; import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.OutputDirectory; import org.gradle.api.tasks.TaskAction; import org.gradle.work.DisableCachingByDefault; -import org.hibernate.mapping.ForeignKey; import org.hibernate.tool.reveng.api.core.RevengSettings; import org.hibernate.tool.reveng.api.core.RevengStrategy; import org.hibernate.tool.reveng.api.core.RevengStrategyFactory; -import org.hibernate.tool.reveng.api.core.TableIdentifier; +import org.hibernate.tool.reveng.api.export.Exporter; +import org.hibernate.tool.reveng.api.export.ExporterConstants; +import org.hibernate.tool.reveng.api.export.ExporterFactory; +import org.hibernate.tool.reveng.api.export.ExporterType; +import org.hibernate.tool.reveng.api.metadata.MetadataConstants; +import org.hibernate.tool.reveng.api.metadata.MetadataDescriptor; +import org.hibernate.tool.reveng.api.metadata.MetadataDescriptorFactory; +import org.hibernate.tool.reveng.internal.core.strategy.TableSelectorStrategy; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Proxy; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.nio.file.Files; -import java.nio.file.Path; -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.Driver; -import java.sql.DriverManager; -import java.sql.JDBCType; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; -import java.util.Properties; -import java.util.Set; - -import static java.lang.Character.isJavaIdentifierPart; -import static java.lang.Character.isJavaIdentifierStart; -import static java.lang.System.lineSeparator; -import static java.nio.charset.StandardCharsets.UTF_8; -import static java.util.Comparator.comparingInt; import static org.hibernate.orm.tooling.gradle.reveng.RevengFileHelper.findRequiredResourceFile; import static org.hibernate.orm.tooling.gradle.reveng.RevengFileHelper.loadPropertiesFile; @@ -85,8 +66,7 @@ * {@code build/generated/sources/schemaAnnotations/org/example/schema/BOOK.java}. *

* The task can read JDBC configuration from a {@code hibernate.properties} file in the main resource - * set. Direct task properties override values read from {@code hibernate.properties}. - * A Hibernate Tools reverse-engineering file can be used for schema selection, table filters, + * set. A Hibernate Tools reverse-engineering file can be used for schema selection, table filters, * table exclusions, column exclusions, and user-defined foreign keys. *