Skip to content

Commit c6549b8

Browse files
cushonError Prone Team
authored and
Error Prone Team
committed
Simplify cleanup in DocGenProcessor
PiperOrigin-RevId: 551303866
1 parent 77ba705 commit c6549b8

File tree

1 file changed

+28
-21
lines changed

1 file changed

+28
-21
lines changed

docgen_processor/src/main/java/com/google/errorprone/DocGenProcessor.java

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,14 @@
2020

2121
import com.google.auto.service.AutoService;
2222
import com.google.gson.Gson;
23+
import java.io.BufferedWriter;
2324
import java.io.IOException;
25+
import java.io.OutputStream;
2426
import java.io.OutputStreamWriter;
2527
import java.io.PrintWriter;
28+
import java.io.UncheckedIOException;
29+
import java.util.HashMap;
30+
import java.util.Map;
2631
import java.util.Set;
2732
import javax.annotation.processing.AbstractProcessor;
2833
import javax.annotation.processing.ProcessingEnvironment;
@@ -51,42 +56,44 @@ public SourceVersion getSupportedSourceVersion() {
5156
return SourceVersion.latest();
5257
}
5358

54-
private final Gson gson = new Gson();
55-
56-
private PrintWriter pw;
59+
private final Map<String, BugPatternInstance> bugPatterns = new HashMap<>();
5760

5861
/** {@inheritDoc} */
5962
@Override
6063
public synchronized void init(ProcessingEnvironment processingEnv) {
6164
super.init(processingEnv);
62-
try {
63-
FileObject manifest =
64-
processingEnv
65-
.getFiler()
66-
.createResource(StandardLocation.SOURCE_OUTPUT, "", "bugPatterns.txt");
67-
pw = new PrintWriter(new OutputStreamWriter(manifest.openOutputStream(), UTF_8), true);
68-
} catch (IOException e) {
69-
throw new RuntimeException(e);
70-
}
7165
}
7266

7367
/** {@inheritDoc} */
7468
@Override
7569
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
7670
for (Element element : roundEnv.getElementsAnnotatedWith(BugPattern.class)) {
77-
gson.toJson(BugPatternInstance.fromElement(element), pw);
78-
pw.println();
71+
BugPatternInstance bugPattern = BugPatternInstance.fromElement(element);
72+
bugPatterns.put(bugPattern.name, bugPattern);
7973
}
8074

8175
if (roundEnv.processingOver()) {
82-
// this was the last round, do cleanup
83-
cleanup();
76+
try {
77+
FileObject manifest =
78+
processingEnv
79+
.getFiler()
80+
.createResource(StandardLocation.SOURCE_OUTPUT, "", "bugPatterns.txt");
81+
try (OutputStream os = manifest.openOutputStream();
82+
PrintWriter pw =
83+
new PrintWriter(new BufferedWriter(new OutputStreamWriter(os, UTF_8)))) {
84+
Gson gson = new Gson();
85+
bugPatterns.entrySet().stream()
86+
.sorted(Map.Entry.comparingByKey())
87+
.forEachOrdered(
88+
e -> {
89+
gson.toJson(e.getValue(), pw);
90+
pw.println();
91+
});
92+
}
93+
} catch (IOException e) {
94+
throw new UncheckedIOException(e);
95+
}
8496
}
8597
return false;
8698
}
87-
88-
/** Perform cleanup after last round of annotation processing. */
89-
private void cleanup() {
90-
pw.close();
91-
}
9299
}

0 commit comments

Comments
 (0)