Skip to content

Commit c246be9

Browse files
committed
tooling: also support singleton GenerateRefinment annotations
1 parent 7f9a8db commit c246be9

1 file changed

Lines changed: 22 additions & 7 deletions

File tree

build-tools/annotation-processor/src/main/java/de/learnlib/buildtool/refinement/processor/RefinementProcessor.java

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717

1818
import java.io.IOException;
1919
import java.util.ArrayList;
20-
import java.util.Collections;
20+
import java.util.Arrays;
21+
import java.util.HashSet;
2122
import java.util.List;
2223
import java.util.Set;
2324
import java.util.StringJoiner;
@@ -69,23 +70,32 @@ public class RefinementProcessor extends AbstractProcessor {
6970

7071
@Override
7172
public Set<String> getSupportedAnnotationTypes() {
72-
return Collections.singleton(GenerateRefinements.class.getName());
73+
return new HashSet<>(Arrays.asList(GenerateRefinement.class.getName(), GenerateRefinements.class.getName()));
7374
}
7475

7576
@Override
7677
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
7778

78-
final Set<? extends Element> elements = roundEnv.getElementsAnnotatedWith(GenerateRefinements.class);
79+
final Set<Element> elements = new HashSet<>();
80+
elements.addAll(roundEnv.getElementsAnnotatedWith(GenerateRefinements.class));
81+
elements.addAll(roundEnv.getElementsAnnotatedWith(GenerateRefinement.class));
7982

8083
for (Element elem : elements) {
8184

8285
validateAnnotation(elem);
8386

87+
final GenerateRefinement[] refinements;
8488
final GenerateRefinements generateRefinements = elem.getAnnotation(GenerateRefinements.class);
8589

90+
if (generateRefinements != null) {
91+
refinements = generateRefinements.value();
92+
} else {
93+
refinements = new GenerateRefinement[] {elem.getAnnotation(GenerateRefinement.class)};
94+
}
95+
8696
int idx = 0;
8797

88-
for (GenerateRefinement annotation : generateRefinements.value()) {
98+
for (GenerateRefinement annotation : refinements) {
8999

90100
final TypeElement annotatedClass = (TypeElement) elem;
91101

@@ -161,13 +171,18 @@ private void addConstructors(TypeSpec.Builder builder,
161171
GenerateRefinement annotation,
162172
int idx) {
163173

174+
final AnnotationMirror mirror;
164175
final AnnotationMirror generateRefinementsMirror =
165176
AnnotationUtils.findAnnotationMirror(annotatedClass, GenerateRefinements.class);
166177

167-
final List<? extends AnnotationValue> values = find(generateRefinementsMirror, "value");
168-
final AnnotationMirror generateRefinementMirror = (AnnotationMirror) values.get(idx).getValue();
178+
if (generateRefinementsMirror != null) {
179+
final List<? extends AnnotationValue> values = find(generateRefinementsMirror, "value");
180+
mirror = (AnnotationMirror) values.get(idx).getValue();
181+
} else {
182+
mirror = AnnotationUtils.findAnnotationMirror(annotatedClass, GenerateRefinement.class);
183+
}
169184

170-
final List<? extends AnnotationValue> parameterMapping = find(generateRefinementMirror, "parameterMapping");
185+
final List<? extends AnnotationValue> parameterMapping = find(mirror, "parameterMapping");
171186

172187
for (ExecutableElement constructor : TypeUtils.getConstructors(annotatedClass)) {
173188

0 commit comments

Comments
 (0)