8
8
import edu .wpi .first .epilogue .Logged ;
9
9
import edu .wpi .first .epilogue .NotLogged ;
10
10
import java .io .IOException ;
11
- import java .util .ArrayList ;
12
- import java .util .Comparator ;
13
- import java .util .HashMap ;
14
- import java .util .List ;
15
- import java .util .Map ;
16
- import java .util .Set ;
11
+ import java .util .*;
17
12
import java .util .stream .Collectors ;
18
13
import java .util .stream .Stream ;
19
14
import javax .annotation .processing .AbstractProcessor ;
@@ -91,6 +86,8 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
91
86
"Custom logger classes should have a @CustomLoggerFor annotation" ,
92
87
e );
93
88
});
89
+
90
+ var loggedTypes = getLoggedTypes (roundEnv );
94
91
95
92
// Handlers are declared in order of priority. If an element could be logged in more than one
96
93
// way (eg a class implements both Sendable and StructSerializable), the order of the handlers
@@ -99,7 +96,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
99
96
List .of (
100
97
new LoggableHandler (
101
98
processingEnv ,
102
- getLoggedTypes ( roundEnv ) ), // prioritize epilogue logging over Sendable
99
+ loggedTypes ), // prioritize epilogue logging over Sendable
103
100
new ConfiguredLoggerHandler (
104
101
processingEnv , customLoggers ), // then customized logging configs
105
102
new ArrayHandler (processingEnv ),
@@ -119,7 +116,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
119
116
.findAny ()
120
117
.ifPresent (
121
118
epilogue -> {
122
- processEpilogue (roundEnv , epilogue );
119
+ processEpilogue (roundEnv , epilogue , loggedTypes );
123
120
});
124
121
125
122
return false ;
@@ -147,7 +144,8 @@ private Set<TypeElement> getLoggedTypes(RoundEnvironment roundEnv) {
147
144
.map (e -> e .getEnclosingElement ())
148
145
.filter (e -> e instanceof TypeElement )
149
146
.map (e -> (TypeElement ) e ))
150
- .collect (Collectors .toSet ()); // Collect to a set to avoid duplicates
147
+ .sorted (Comparator .comparing (e -> e .getSimpleName ().toString ()))
148
+ .collect (Collectors .toCollection (LinkedHashSet ::new )); // Collect to a set to avoid duplicates
151
149
}
152
150
153
151
private boolean validateFields (Set <? extends Element > annotatedElements ) {
@@ -356,7 +354,11 @@ private Map<DeclaredType, DeclaredType> processCustomLoggers(
356
354
return customLoggers ;
357
355
}
358
356
359
- private void processEpilogue (RoundEnvironment roundEnv , TypeElement epilogueAnnotation ) {
357
+ private void processEpilogue (
358
+ RoundEnvironment roundEnv ,
359
+ TypeElement epilogueAnnotation ,
360
+ Set <TypeElement > loggedTypes
361
+ ) {
360
362
var annotatedElements = roundEnv .getElementsAnnotatedWith (epilogueAnnotation );
361
363
362
364
List <String > loggerClassNames = new ArrayList <>();
@@ -374,9 +376,7 @@ private void processEpilogue(RoundEnvironment roundEnv, TypeElement epilogueAnno
374
376
return ;
375
377
}
376
378
377
- var classes = getLoggedTypes (roundEnv );
378
-
379
- for (TypeElement clazz : classes ) {
379
+ for (TypeElement clazz : loggedTypes ) {
380
380
try {
381
381
warnOfNonLoggableElements (clazz );
382
382
m_loggerGenerator .writeLoggerFile (clazz );
0 commit comments