Skip to content

Commit 927324f

Browse files
authored
Merge pull request #337 from groovy/fix-groovydoc-constructor
Fix GroovydocTool constructor for Groovy >= 4.0.27 (closes #335)
2 parents 70a5c84 + 3e34b53 commit 927324f

File tree

3 files changed

+83
-2
lines changed

3 files changed

+83
-2
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<groupId>org.codehaus.gmavenplus</groupId>
66
<artifactId>gmavenplus-plugin</artifactId>
77
<packaging>maven-plugin</packaging>
8-
<version>4.3.0-SNAPSHOT</version>
8+
<version>4.2.1-SNAPSHOT</version>
99

1010
<properties>
1111
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package org.codehaus.gmavenplus.javaparser;
2+
3+
import java.util.Arrays;
4+
5+
public enum LanguageLevel {
6+
JAVA_1_0,
7+
JAVA_1_1,
8+
JAVA_1_2,
9+
JAVA_1_3,
10+
JAVA_1_4,
11+
JAVA_5,
12+
JAVA_6,
13+
JAVA_7,
14+
JAVA_8,
15+
JAVA_9,
16+
JAVA_10,
17+
JAVA_10_PREVIEW,
18+
JAVA_11,
19+
JAVA_11_PREVIEW,
20+
JAVA_12,
21+
JAVA_12_PREVIEW,
22+
JAVA_13,
23+
JAVA_13_PREVIEW,
24+
JAVA_14,
25+
JAVA_14_PREVIEW,
26+
JAVA_15,
27+
JAVA_15_PREVIEW,
28+
JAVA_16,
29+
JAVA_16_PREVIEW,
30+
JAVA_17,
31+
JAVA_17_PREVIEW,
32+
JAVA_18,
33+
JAVA_19,
34+
JAVA_20,
35+
JAVA_21;
36+
37+
public static final LanguageLevel RAW = null;
38+
public static final LanguageLevel POPULAR = JAVA_11;
39+
public static final LanguageLevel CURRENT = JAVA_18;
40+
public static final LanguageLevel BLEEDING_EDGE = JAVA_21;
41+
private static final LanguageLevel[] yieldSupport = new LanguageLevel[]{
42+
JAVA_1_0, JAVA_13, JAVA_13_PREVIEW, JAVA_14, JAVA_14_PREVIEW, JAVA_15, JAVA_15_PREVIEW, JAVA_16,
43+
JAVA_16_PREVIEW, JAVA_17, JAVA_17_PREVIEW, JAVA_18, JAVA_19, JAVA_20, JAVA_21};
44+
45+
public boolean isYieldSupported() {
46+
return Arrays.stream(yieldSupport).anyMatch((level) -> level == this);
47+
}
48+
}

src/main/java/org/codehaus/gmavenplus/mojo/AbstractGroovyDocMojo.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.maven.shared.model.fileset.FileSet;
2121
import org.apache.maven.shared.model.fileset.util.FileSetManager;
2222
import org.codehaus.gmavenplus.groovyworkarounds.GroovyDocTemplateInfo;
23+
import org.codehaus.gmavenplus.javaparser.LanguageLevel;
2324
import org.codehaus.gmavenplus.model.IncludeClasspath;
2425
import org.codehaus.gmavenplus.model.Link;
2526
import org.codehaus.gmavenplus.model.Scopes;
@@ -54,6 +55,21 @@
5455
*/
5556
public abstract class AbstractGroovyDocMojo extends AbstractGroovySourcesMojo {
5657

58+
/**
59+
* Groovy 5.0.0-beta-1 version.
60+
*/
61+
protected static final Version GROOVY_5_0_0_BETA_1 = new Version(5, 0, 0, "beta-1");
62+
63+
/**
64+
* Groovy 5.0.0-alpha-1 version.
65+
*/
66+
protected static final Version GROOVY_5_0_0_ALPHA_1 = new Version(5, 0, 0, "alpha-1");
67+
68+
/**
69+
* Groovy 4.0.27 version.
70+
*/
71+
protected static final Version GROOVY_4_0_27 = new Version(4, 0, 27);
72+
5773
/**
5874
* Groovy 3.0.0 alpha-4 version.
5975
*/
@@ -97,6 +113,12 @@ public abstract class AbstractGroovyDocMojo extends AbstractGroovySourcesMojo {
97113
@Parameter(defaultValue = "Groovy Documentation")
98114
protected String footer;
99115

116+
/**
117+
* The Java language level to use for GroovyDoc generation.
118+
*/
119+
@Parameter
120+
protected LanguageLevel languageLevel;
121+
100122
/**
101123
* The page header.
102124
*/
@@ -426,7 +448,18 @@ protected List<?> setupLinks() throws ClassNotFoundException, InvocationTargetEx
426448
*/
427449
protected Object createGroovyDocTool(final Class<?> groovyDocToolClass, final Class<?> resourceManagerClass, final Properties docProperties, final Object classpathResourceManager, final List<String> sourceDirectories, final GroovyDocTemplateInfo groovyDocTemplateInfo, final List<?> groovyDocLinks) throws InvocationTargetException, IllegalAccessException, InstantiationException {
428450
Object groovyDocTool;
429-
if (groovyAtLeast(GROOVY_1_6_0_RC2)) {
451+
if ((groovyAtLeast(GROOVY_4_0_27) && groovyOlderThan(GROOVY_5_0_0_ALPHA_1)) || groovyAtLeast(GROOVY_5_0_0_BETA_1)) {
452+
groovyDocTool = invokeConstructor(findConstructor(groovyDocToolClass, resourceManagerClass, String[].class, String[].class, String[].class, String[].class, List.class, String.class, Properties.class),
453+
classpathResourceManager,
454+
sourceDirectories.toArray(new String[0]),
455+
defaultDocTemplates == null ? groovyDocTemplateInfo.defaultDocTemplates() : defaultDocTemplates,
456+
defaultPackageTemplates == null ? groovyDocTemplateInfo.defaultPackageTemplates() : defaultPackageTemplates,
457+
defaultClassTemplates == null ? groovyDocTemplateInfo.defaultClassTemplates() : defaultClassTemplates,
458+
groovyDocLinks,
459+
languageLevel,
460+
docProperties
461+
);
462+
} else if (groovyAtLeast(GROOVY_1_6_0_RC2)) {
430463
groovyDocTool = invokeConstructor(findConstructor(groovyDocToolClass, resourceManagerClass, String[].class, String[].class, String[].class, String[].class, List.class, Properties.class),
431464
classpathResourceManager,
432465
sourceDirectories.toArray(new String[0]),

0 commit comments

Comments
 (0)