Skip to content

Commit 67291a9

Browse files
committed
HHH-19869 List community dialects in dialect guide
1 parent a99d37c commit 67291a9

File tree

4 files changed

+42
-9
lines changed

4 files changed

+42
-9
lines changed

documentation/documentation.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ dependencies {
139139
reportAggregation project(':hibernate-ant')
140140
reportAggregation project(':hibernate-enhance-maven-plugin')
141141
reportAggregation project(':hibernate-jpamodelgen')
142+
reportAggregation project(':hibernate-community-dialects')
142143

143144
asciidoctorGems 'rubygems:rouge:4.1.1'
144145

@@ -813,7 +814,7 @@ def renderDialectGuideTask = tasks.register( 'renderDialectGuide', AsciidoctorTa
813814
group = "Documentation"
814815
description = 'Renders the Dialect guide in HTML format using Asciidoctor.'
815816
inputs.property "hibernate-version", project.ormVersion
816-
dependsOn generateDialectTableReport
817+
dependsOn generateDialectTableReport, generateCommunityDialectTableReport
817818

818819
sourceDir = file( 'src/main/asciidoc/dialect' )
819820
sources 'dialect.adoc'

documentation/src/main/asciidoc/dialect/dialect.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ These dialects are not directly supported by the Hibernate team:
3535

3636
Instead, the dialects are maintained on a best-effort basis by vendors or individuals.
3737

38-
// TODO:
39-
// Below is a list of community dialects and the minimum required version of the database.
40-
// include::{generated-report-dir}/dialect/dialect-table-community.adoc[]
38+
Below is a list of community dialects and the minimum required version of the database.
39+
40+
include::{generated-report-dir}/dialect/dialect-table-community.adoc[]
4141

4242
[NOTE]
4343
====

local-build-plugins/src/main/java/org/hibernate/orm/post/DialectReportTask.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.gradle.api.file.RegularFile;
2323
import org.gradle.api.provider.Property;
2424
import org.gradle.api.provider.Provider;
25+
import org.gradle.api.tasks.Input;
2526
import org.gradle.api.tasks.OutputFile;
2627
import org.gradle.api.tasks.SourceSet;
2728
import org.gradle.api.tasks.SourceSetContainer;
@@ -36,13 +37,27 @@
3637
* @author Steve Ebersole
3738
*/
3839
public abstract class DialectReportTask extends AbstractJandexAwareTask {
40+
private final Property<String> sourceProject;
41+
private final Property<String> sourcePackage;
3942
private final Property<RegularFile> reportFile;
4043

4144
public DialectReportTask() {
42-
setDescription( "Generates a report of the supported Dialects" );
45+
setDescription( "Generates a report of Dialects" );
46+
sourceProject = getProject().getObjects().property(String.class);
47+
sourcePackage = getProject().getObjects().property(String.class);
4348
reportFile = getProject().getObjects().fileProperty();
4449
}
4550

51+
@Input
52+
public Property<String> getSourceProject() {
53+
return sourceProject;
54+
}
55+
56+
@Input
57+
public Property<String> getSourcePackage() {
58+
return sourcePackage;
59+
}
60+
4661
@OutputFile
4762
public Property<RegularFile> getReportFile() {
4863
return reportFile;
@@ -55,16 +70,19 @@ protected Provider<RegularFile> getTaskReportFileReference() {
5570

5671
@TaskAction
5772
public void generateDialectReport() {
58-
// the ones we want are all in the hibernate-core project
59-
final Project coreProject = getProject().getRootProject().project( "hibernate-core" );
60-
final SourceSetContainer sourceSets = coreProject.getExtensions().getByType( SourceSetContainer.class );
73+
// TODO this probably messes up the cache since we don't declare an explicit dependency to a source set
74+
// but the problem is pre-existing and I don't have time to investigate.
75+
Project sourceProject = getProject().getRootProject().project( this.sourceProject.get() );
76+
final SourceSetContainer sourceSets = sourceProject.getExtensions().getByType( SourceSetContainer.class );
6177
final SourceSet sourceSet = sourceSets.getByName( SourceSet.MAIN_SOURCE_SET_NAME );
62-
final ClassLoader classLoader = Helper.asClassLoader( sourceSet, coreProject.getConfigurations().getByName( "testRuntimeClasspath" ) );
78+
final ClassLoader classLoader = Helper.asClassLoader( sourceSet, sourceProject.getConfigurations().getByName( "testRuntimeClasspath" ) );
6379

6480
final DialectClassDelegate dialectClassDelegate = new DialectClassDelegate( classLoader );
6581

6682
final Index index = getIndexManager().getIndex();
6783
final Collection<ClassInfo> allDialectClasses = index.getAllKnownSubclasses( DialectClassDelegate.DIALECT_CLASS_NAME );
84+
String sourcePackagePrefix = this.sourcePackage.get() + ".";
85+
allDialectClasses.removeIf( c -> !c.name().toString().startsWith( sourcePackagePrefix ) );
6886
if ( allDialectClasses.isEmpty() ) {
6987
throw new RuntimeException( "Unable to find Dialects" );
7088
}

local-build-plugins/src/main/java/org/hibernate/orm/post/ReportGenerationPlugin.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,23 @@ public void apply(Project project) {
6262
DialectReportTask.class,
6363
(task) -> {
6464
task.dependsOn( indexerTask );
65+
task.setProperty( "sourceProject", "hibernate-core" );
66+
task.setProperty( "sourcePackage", "org.hibernate.dialect" );
6567
task.setProperty( "reportFile", project.getLayout().getBuildDirectory().file( "orm/generated/dialect/dialect-table.adoc" ) );
6668
}
6769
);
6870

71+
final TaskProvider<DialectReportTask> communityDialectTableTask = project.getTasks().register(
72+
"generateCommunityDialectTableReport",
73+
DialectReportTask.class,
74+
(task) -> {
75+
task.dependsOn( indexerTask );
76+
task.setProperty( "sourceProject", "hibernate-community-dialects" );
77+
task.setProperty( "sourcePackage", "org.hibernate.community.dialect" );
78+
task.setProperty( "reportFile", project.getLayout().getBuildDirectory().file( "orm/generated/dialect/dialect-table-community.adoc" ) );
79+
}
80+
);
81+
6982
final Task groupingTask = project.getTasks().maybeCreate( "generateReports" );
7083
groupingTask.setGroup( TASK_GROUP_NAME );
7184
groupingTask.dependsOn( indexerTask );
@@ -74,5 +87,6 @@ public void apply(Project project) {
7487
groupingTask.dependsOn( internalsTask );
7588
groupingTask.dependsOn( loggingTask );
7689
groupingTask.dependsOn( dialectTableTask );
90+
groupingTask.dependsOn( communityDialectTableTask );
7791
}
7892
}

0 commit comments

Comments
 (0)