Skip to content

Commit 77fd291

Browse files
committed
HHH-19869 List community dialects in dialect guide
1 parent 7dca07a commit 77fd291

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
@@ -133,6 +133,7 @@ dependencies {
133133
reportAggregation project(':hibernate-ant')
134134
reportAggregation project(':hibernate-maven-plugin')
135135
reportAggregation project(':hibernate-processor')
136+
reportAggregation project(':hibernate-community-dialects')
136137

137138
core project( ':hibernate-core' )
138139
javadocSources project( path: ':hibernate-core', configuration: 'javadocSources' )
@@ -887,7 +888,7 @@ def renderDialectGuideTask = tasks.register( 'renderDialectGuide', AsciidoctorTa
887888
group = "Documentation"
888889
description = 'Renders the Dialect guide in HTML format using Asciidoctor.'
889890
inputs.property "hibernate-version", hibernateVersion
890-
dependsOn generateDialectTableReport
891+
dependsOn generateDialectTableReport, generateCommunityDialectTableReport
891892

892893
sourceDir = file( 'src/main/asciidoc/dialect' )
893894
sources 'index.adoc'

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

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

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

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

4343
[NOTE]
4444
====

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
@@ -20,6 +20,7 @@
2020
import org.gradle.api.file.RegularFile;
2121
import org.gradle.api.provider.Property;
2222
import org.gradle.api.provider.Provider;
23+
import org.gradle.api.tasks.Input;
2324
import org.gradle.api.tasks.OutputFile;
2425
import org.gradle.api.tasks.SourceSet;
2526
import org.gradle.api.tasks.SourceSetContainer;
@@ -34,13 +35,27 @@
3435
* @author Steve Ebersole
3536
*/
3637
public abstract class DialectReportTask extends AbstractJandexAwareTask {
38+
private final Property<String> sourceProject;
39+
private final Property<String> sourcePackage;
3740
private final Property<RegularFile> reportFile;
3841

3942
public DialectReportTask() {
40-
setDescription( "Generates a report of the supported Dialects" );
43+
setDescription( "Generates a report of Dialects" );
44+
sourceProject = getProject().getObjects().property(String.class);
45+
sourcePackage = getProject().getObjects().property(String.class);
4146
reportFile = getProject().getObjects().fileProperty();
4247
}
4348

49+
@Input
50+
public Property<String> getSourceProject() {
51+
return sourceProject;
52+
}
53+
54+
@Input
55+
public Property<String> getSourcePackage() {
56+
return sourcePackage;
57+
}
58+
4459
@OutputFile
4560
public Property<RegularFile> getReportFile() {
4661
return reportFile;
@@ -53,16 +68,19 @@ protected Provider<RegularFile> getTaskReportFileReference() {
5368

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

6278
final DialectClassDelegate dialectClassDelegate = new DialectClassDelegate( classLoader );
6379

6480
final Index index = getIndexManager().getIndex();
6581
final Collection<ClassInfo> allDialectClasses = index.getAllKnownSubclasses( DialectClassDelegate.DIALECT_CLASS_NAME );
82+
String sourcePackagePrefix = this.sourcePackage.get() + ".";
83+
allDialectClasses.removeIf( c -> !c.name().toString().startsWith( sourcePackagePrefix ) );
6684
if ( allDialectClasses.isEmpty() ) {
6785
throw new RuntimeException( "Unable to find Dialects" );
6886
}

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
@@ -60,10 +60,23 @@ public void apply(Project project) {
6060
DialectReportTask.class,
6161
(task) -> {
6262
task.dependsOn( indexerTask );
63+
task.setProperty( "sourceProject", "hibernate-core" );
64+
task.setProperty( "sourcePackage", "org.hibernate.dialect" );
6365
task.setProperty( "reportFile", project.getLayout().getBuildDirectory().file( "orm/generated/dialect/dialect-table.adoc" ) );
6466
}
6567
);
6668

69+
final TaskProvider<DialectReportTask> communityDialectTableTask = project.getTasks().register(
70+
"generateCommunityDialectTableReport",
71+
DialectReportTask.class,
72+
(task) -> {
73+
task.dependsOn( indexerTask );
74+
task.setProperty( "sourceProject", "hibernate-community-dialects" );
75+
task.setProperty( "sourcePackage", "org.hibernate.community.dialect" );
76+
task.setProperty( "reportFile", project.getLayout().getBuildDirectory().file( "orm/generated/dialect/dialect-table-community.adoc" ) );
77+
}
78+
);
79+
6780
final Task groupingTask = project.getTasks().maybeCreate( "generateReports" );
6881
groupingTask.setGroup( TASK_GROUP_NAME );
6982
groupingTask.dependsOn( indexerTask );
@@ -72,5 +85,6 @@ public void apply(Project project) {
7285
groupingTask.dependsOn( internalsTask );
7386
groupingTask.dependsOn( loggingTask );
7487
groupingTask.dependsOn( dialectTableTask );
88+
groupingTask.dependsOn( communityDialectTableTask );
7589
}
7690
}

0 commit comments

Comments
 (0)