diff --git a/refaster/src/main/java/com/google/errorprone/refaster/RefasterRuleCompilerAnalyzer.java b/refaster/src/main/java/com/google/errorprone/refaster/RefasterRuleCompilerAnalyzer.java index f71b9355e77..1c4e000799e 100644 --- a/refaster/src/main/java/com/google/errorprone/refaster/RefasterRuleCompilerAnalyzer.java +++ b/refaster/src/main/java/com/google/errorprone/refaster/RefasterRuleCompilerAnalyzer.java @@ -29,6 +29,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -36,6 +37,7 @@ * to the specified path. */ public class RefasterRuleCompilerAnalyzer implements TaskListener { + private final List allRules = Collections.synchronizedList(new ArrayList<>()); private final Context context; private final Path destinationPath; @@ -46,6 +48,10 @@ public class RefasterRuleCompilerAnalyzer implements TaskListener { @Override public void finished(TaskEvent taskEvent) { + if (taskEvent.getKind() == Kind.COMPILATION) { + persist(); + return; + } if (taskEvent.getKind() != Kind.ANALYZE) { return; } @@ -67,9 +73,13 @@ public Void visitClass(ClassTree node, Context context) { if (rules.isEmpty()) { throw new IllegalArgumentException("Did not find any Refaster templates"); } + allRules.addAll(rules); + } + + private void persist() { try (ObjectOutputStream output = new ObjectOutputStream(Files.newOutputStream(destinationPath))) { - output.writeObject(CompositeCodeTransformer.compose(rules)); + output.writeObject(CompositeCodeTransformer.compose(allRules)); } catch (IOException e) { throw new RuntimeException(e); }