Skip to content

Commit 45c4ff5

Browse files
committed
adding back java8 compatibility
1 parent 14fbfbf commit 45c4ff5

File tree

11 files changed

+147
-60
lines changed

11 files changed

+147
-60
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313

1414
strategy:
1515
matrix:
16-
java-version: ["17", "11", "8"]
16+
java-version: ["21", "17", "11", "8"]
1717

1818
steps:
1919
- uses: "actions/checkout@v3"

pom.xml

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@
7373
<properties>
7474
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
7575
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
76-
<maven.compiler.source>21</maven.compiler.source>
77-
<maven.compiler.target>21</maven.compiler.target>
76+
<maven.compiler.source>1.8</maven.compiler.source>
77+
<maven.compiler.target>1.8</maven.compiler.target>
7878
<maven.site.deploy.skip>true</maven.site.deploy.skip>
7979
<slf4j.version>2.0.17</slf4j.version>
8080
<jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
@@ -325,15 +325,6 @@
325325
<groupId>org.eluder.coveralls</groupId>
326326
<artifactId>coveralls-maven-plugin</artifactId>
327327
</plugin>
328-
<plugin>
329-
<groupId>org.apache.maven.plugins</groupId>
330-
<artifactId>maven-compiler-plugin</artifactId>
331-
<configuration>
332-
<source>21</source>
333-
<target>21</target>
334-
<compilerArgs>--enable-preview</compilerArgs>
335-
</configuration>
336-
</plugin>
337328
</plugins>
338329
</build>
339330

src/main/java/com/github/joschi/jadconfig/documentation/ConfigurationDocsGenerator.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,13 @@ public void generateDocumentation(DocumentationFormat format, Supplier<List<Obje
4646
private DocsPrinter createWriter(DocumentationFormat format) throws IOException {
4747
final FileWriter fileWriter = new FileWriter(format.outputFile(), StandardCharsets.UTF_8);
4848
// TODO: if the format list expands, introduce DI and factories for printers
49-
return switch (format.format()) {
50-
case "csv" -> new CsvDocsPrinter(fileWriter);
51-
case "conf" -> new ConfigFileDocsPrinter(fileWriter);
52-
default -> throw new IllegalArgumentException("Unsupported format " + format.format());
53-
};
49+
if ("csv".equals(format.format())) {
50+
return new CsvDocsPrinter(fileWriter);
51+
} else if("conf".equals(format.format())) {
52+
return new ConfigFileDocsPrinter(fileWriter);
53+
} else {
54+
throw new IllegalArgumentException("Unsupported format " + format.format());
55+
}
5456
}
5557

5658
/**

src/main/java/com/github/joschi/jadconfig/documentation/ConfigurationEntry.java

Lines changed: 56 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,62 @@
22

33
import jakarta.annotation.Nullable;
44

5-
/**
6-
* @param configurationBean Class that defines this configuration entry
7-
* @param fieldName java field name
8-
* @param type Java type name, e.g. String or Integer.
9-
* @param configName configuration property name, as written in the config file
10-
* @param defaultValue default value declared in the java field, null if not defined
11-
* @param required if the configuration property is mandatory (needs default or entry in the config file)
12-
* @param documentation textual documentation of this configuration propery
13-
*/
14-
public record ConfigurationEntry(
15-
Class<?> configurationBean,
16-
String fieldName,
17-
String type,
18-
String configName,
19-
@Nullable Object defaultValue,
20-
boolean required,
21-
String documentation
22-
) {
5+
public class ConfigurationEntry {
6+
private final Class<?> configurationBean;
7+
private final String fieldName;
8+
private final String type;
9+
private final String configName;
10+
private final @Nullable Object defaultValue;
11+
private final boolean required;
12+
private final String documentation;
13+
14+
/**
15+
* @param configurationBean Class that defines this configuration entry
16+
* @param fieldName java field name
17+
* @param type Java type name, e.g. String or Integer.
18+
* @param configName configuration property name, as written in the config file
19+
* @param defaultValue default value declared in the java field, null if not defined
20+
* @param required if the configuration property is mandatory (needs default or entry in the config file)
21+
* @param documentation textual documentation of this configuration propery
22+
*/
23+
public ConfigurationEntry(Class<?> configurationBean, String fieldName, String type, String configName, @Nullable Object defaultValue, boolean required, String documentation) {
24+
this.configurationBean = configurationBean;
25+
this.fieldName = fieldName;
26+
this.type = type;
27+
this.configName = configName;
28+
this.defaultValue = defaultValue;
29+
this.required = required;
30+
this.documentation = documentation;
31+
}
32+
33+
public Class<?> configurationBean() {
34+
return configurationBean;
35+
}
36+
37+
public String fieldName() {
38+
return fieldName;
39+
}
40+
41+
public String type() {
42+
return type;
43+
}
44+
45+
public String configName() {
46+
return configName;
47+
}
48+
49+
@Nullable
50+
public Object defaultValue() {
51+
return defaultValue;
52+
}
53+
54+
public boolean required() {
55+
return required;
56+
}
57+
58+
public String documentation() {
59+
return documentation;
60+
}
2361

2462
public boolean hasPriority() {
2563
return required && defaultValue == null;

src/main/java/com/github/joschi/jadconfig/documentation/ConfigurationEntryWithSection.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,28 @@
11
package com.github.joschi.jadconfig.documentation;
22

3-
public record ConfigurationEntryWithSection(ConfigurationEntry entry, String sectionHeading, String sectionDescription) {
3+
public class ConfigurationEntryWithSection {
4+
private final ConfigurationEntry entry;
5+
private final String sectionHeading;
6+
private final String sectionDescription;
7+
8+
public ConfigurationEntryWithSection(ConfigurationEntry entry, String sectionHeading, String sectionDescription) {
9+
this.entry = entry;
10+
this.sectionHeading = sectionHeading;
11+
this.sectionDescription = sectionDescription;
12+
}
13+
14+
public ConfigurationEntry entry() {
15+
return entry;
16+
}
17+
18+
public String sectionHeading() {
19+
return sectionHeading;
20+
}
21+
22+
public String sectionDescription() {
23+
return sectionDescription;
24+
}
25+
426
public boolean hasSection() {
527
return sectionHeading != null && !sectionHeading.isBlank();
628
}
Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,19 @@
11
package com.github.joschi.jadconfig.documentation;
22

3-
public record DocumentationFormat(String format, String outputFile) {
3+
public class DocumentationFormat {
4+
private final String format;
5+
private final String outputFile;
6+
7+
public DocumentationFormat(String format, String outputFile) {
8+
this.format = format;
9+
this.outputFile = outputFile;
10+
}
11+
12+
public String format() {
13+
return format;
14+
}
15+
16+
public String outputFile() {
17+
return outputFile;
18+
}
419
}

src/main/java/com/github/joschi/jadconfig/documentation/printers/ConfigFileDocsPrinter.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,9 @@ private Optional<String> heading(String heading, int level) {
6565

6666
private static String headingTemplate(int level) {
6767
if(level == 1) {
68-
return """
69-
#####################################
70-
# %s
71-
#####################################
72-
""";
68+
return "#####################################\n" +
69+
"# %s\n" +
70+
"#####################################\n";
7371
} else {
7472
return "#### %s\n";
7573
}
@@ -80,11 +78,8 @@ private String fieldToString(ConfigurationEntry field) {
8078
final boolean forceFillIn = field.required() && field.defaultValue() == null;
8179

8280

83-
String template = """
84-
%s
85-
%s%s = %s
86-
87-
""";
81+
String template = "%s\n" +
82+
"%s%s = %s\n\n";
8883

8984
return String.format(Locale.ROOT, template, formatDocumentation(field), forceFillIn ? "" : "#", field.configName(), wrapValue(field.defaultValue()));
9085
}

src/main/java/com/github/joschi/jadconfig/documentation/printers/ConfigurationSection.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,35 @@
44

55
import java.util.List;
66

7-
public record ConfigurationSection(String heading, String description, List<ConfigurationSection> sections, List<ConfigurationEntry> entries) {
7+
public class ConfigurationSection {
8+
private final String heading;
9+
private final String description;
10+
private final List<ConfigurationSection> sections;
11+
private final List<ConfigurationEntry> entries;
12+
13+
public ConfigurationSection(String heading, String description, List<ConfigurationSection> sections, List<ConfigurationEntry> entries) {
14+
this.heading = heading;
15+
this.description = description;
16+
this.sections = sections;
17+
this.entries = entries;
18+
}
19+
20+
public String heading() {
21+
return heading;
22+
}
23+
24+
public String description() {
25+
return description;
26+
}
27+
28+
public List<ConfigurationSection> sections() {
29+
return sections;
30+
}
31+
32+
public List<ConfigurationEntry> entries() {
33+
return entries;
34+
}
35+
836
public boolean hasPriority() {
937
return entries.stream().anyMatch(ConfigurationEntry::hasPriority);
1038
}

src/test/java/com/github/joschi/jadconfig/documentation/GenerateConfigDocumentationTest.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,20 +88,16 @@ private static class DummyConfiguration {
8888
@Parameter(value = "timeout_sec", validators = PositiveIntegerValidator.class)
8989
private Integer timeoutSec;
9090

91-
@Documentation("""
92-
You MUST set a secret to secure/pepper the stored user passwords here. Use at least 64 characters.
93-
Generate one by using for example: pwgen -N 1 -s 96
94-
ATTENTION: This value must be the same on all Graylog and Datanode nodes in the cluster.
95-
Changing this value after installation will render all user sessions and encrypted values
96-
in the database invalid. (e.g. encrypted access tokens)
97-
""")
91+
@Documentation("You MUST set a secret to secure/pepper the stored user passwords here. Use at least 64 characters.\n" +
92+
"Generate one by using for example: pwgen -N 1 -s 96\n" +
93+
"ATTENTION: This value must be the same on all Graylog and Datanode nodes in the cluster.\n" +
94+
"Changing this value after installation will render all user sessions and encrypted values\n" +
95+
"in the database invalid. (e.g. encrypted access tokens)")
9896
@Parameter(value = "password_secret", required = true, validators = StringNotBlankValidator.class)
9997
private String passwordSecret;
10098

10199
@DocumentationSection(heading = "OpenSearch JWT token usage", description = "Communication between Graylog and OpenSearch is secured by JWT.")
102-
@Documentation("""
103-
This configuration defines interval between token regenerations.
104-
""")
100+
@Documentation("This configuration defines interval between token regenerations.")
105101
@Parameter(value = "indexer_jwt_auth_token_caching_duration")
106102
Duration indexerJwtAuthTokenCachingDuration = Duration.seconds(60);
107103
}

src/test/java/com/github/joschi/jadconfig/validators/FilePathWritableValidatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public void setUp() {
3030

3131
@Test
3232
public void testExistingFile(@TempDir Path temp) throws ValidationException, IOException {
33-
var tempFile = Files.createFile(temp.resolve("test0.txt"));
33+
final Path tempFile = Files.createFile(temp.resolve("test0.txt"));
3434
validator.validate("Test", tempFile);
3535
}
3636

0 commit comments

Comments
 (0)