Skip to content

Commit 1159677

Browse files
committed
Add a way to override how the @generated(date=?) is rendered
1 parent 2cb2a12 commit 1159677

File tree

3 files changed

+80
-1
lines changed

3 files changed

+80
-1
lines changed

processor/src/main/java/org/jboss/logging/processor/apt/LoggingToolsProcessor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,17 @@
8181
LoggingToolsProcessor.DEBUG_OPTION,
8282
LoggingToolsProcessor.EXPRESSION_PROPERTIES,
8383
LoggingToolsProcessor.ADD_GENERATED_ANNOTATION,
84+
LoggingToolsProcessor.GENERATED_DATE_VALUE_PROVIDER,
85+
LoggingToolsProcessor.GENERATED_DATE_VALUE_PROVIDER_DATE
8486
})
8587
public class LoggingToolsProcessor extends AbstractProcessor {
8688

8789
public static final String DEBUG_OPTION = "debug";
8890
static final String EXPRESSION_PROPERTIES = "org.jboss.logging.tools.expressionProperties";
8991
static final String ADD_GENERATED_ANNOTATION = "org.jboss.logging.tools.addGeneratedAnnotation";
92+
public static final String GENERATED_DATE_VALUE_PROVIDER = "org.jboss.logging.tools.generatedDateValueProvider";
93+
public static final String GENERATED_DATE_VALUE_PROVIDER_DATE = "org.jboss.logging.tools.generatedDateValueProvider.date";
94+
9095
private final List<String> interfaceAnnotations = Arrays.asList(MessageBundle.class.getName(),
9196
MessageLogger.class.getName());
9297
private final List<AbstractGenerator> generators;

processor/src/main/java/org/jboss/logging/processor/generator/model/ClassModel.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public abstract class ClassModel {
7878
private final String format;
7979

8080
private final Map<String, JMethodDef> messageMethods;
81+
private final GeneratedDateValueProvider generatedDateValueProvider;
8182

8283
final JSourceFile sourceFile;
8384
final ProcessingEnvironment processingEnv;
@@ -106,6 +107,7 @@ public abstract class ClassModel {
106107
format = "%s%d: %s";
107108
}
108109
messageMethods = new HashMap<>();
110+
generatedDateValueProvider = GeneratedDateValueProvider.of(processingEnv.getOptions());
109111
}
110112

111113
/**
@@ -144,7 +146,7 @@ JClassDef generateModel() throws IllegalStateException {
144146
sourceFile._import(generatedType);
145147
classDef.annotate(generatedType)
146148
.value("value", getClass().getName())
147-
.value("date", JExprs.str(ClassModelHelper.generatedDateValue()));
149+
.value("date", JExprs.str(generatedDateValueProvider.date()));
148150
}
149151

150152
// Create the default JavaDoc
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package org.jboss.logging.processor.generator.model;
2+
3+
import java.util.Locale;
4+
import java.util.Map;
5+
6+
import org.jboss.logging.processor.apt.LoggingToolsProcessor;
7+
8+
public abstract class GeneratedDateValueProvider {
9+
enum Type {
10+
DEFAULT,
11+
NONE,
12+
FIXED;
13+
}
14+
15+
abstract String date();
16+
17+
public static GeneratedDateValueProvider of(Map<String, String> options) {
18+
Type type = Type.valueOf(options.getOrDefault(LoggingToolsProcessor.GENERATED_DATE_VALUE_PROVIDER, Type.DEFAULT.name())
19+
.toUpperCase(Locale.ROOT));
20+
switch (type) {
21+
case DEFAULT:
22+
return DefaultGeneratedDateValueProvider.INSTANCE;
23+
case NONE:
24+
return NoneGeneratedDateValueProvider.INSTANCE;
25+
case FIXED:
26+
String date = options.get(LoggingToolsProcessor.GENERATED_DATE_VALUE_PROVIDER_DATE);
27+
if (date == null) {
28+
throw new IllegalArgumentException(
29+
"Fixed date generated date value provider is requested, but the date is not specified. "
30+
+ "Use " + LoggingToolsProcessor.GENERATED_DATE_VALUE_PROVIDER_DATE
31+
+ " annotation processor option to provide the date.");
32+
}
33+
return new FixedGeneratedDateValueProvider(date);
34+
default:
35+
throw new IllegalStateException("Unknown generated date value provider type: " + type);
36+
}
37+
}
38+
39+
private static class DefaultGeneratedDateValueProvider extends GeneratedDateValueProvider {
40+
41+
private static final DefaultGeneratedDateValueProvider INSTANCE = new DefaultGeneratedDateValueProvider();
42+
43+
@Override
44+
String date() {
45+
return ClassModelHelper.generatedDateValue();
46+
}
47+
}
48+
49+
private static class NoneGeneratedDateValueProvider extends GeneratedDateValueProvider {
50+
51+
private static final NoneGeneratedDateValueProvider INSTANCE = new NoneGeneratedDateValueProvider();
52+
53+
@Override
54+
String date() {
55+
return "";
56+
}
57+
}
58+
59+
private static class FixedGeneratedDateValueProvider extends GeneratedDateValueProvider {
60+
61+
private final String date;
62+
63+
private FixedGeneratedDateValueProvider(String date) {
64+
this.date = date;
65+
}
66+
67+
@Override
68+
String date() {
69+
return date;
70+
}
71+
}
72+
}

0 commit comments

Comments
 (0)