aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author zaaarf <zaaarf@proton.me>2023-04-13 11:09:02 +0200
committer zaaarf <zaaarf@proton.me>2023-04-13 11:09:02 +0200
commitf1c413eb2dbbe898ef5faacb8078c0c64d9d0b81 (patch)
tree128124880cd9ce6bfe005b62264f4ddb45817c44
parentfe9a6c8d4ab3665008eec289c59eebbf06dd43f7 (diff)
fix: attempting to write the service provider multiple times
-rw-r--r--src/main/java/ftbsc/lll/processor/LilleroProcessor.java24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/main/java/ftbsc/lll/processor/LilleroProcessor.java b/src/main/java/ftbsc/lll/processor/LilleroProcessor.java
index 04dcad7..2dc2527 100644
--- a/src/main/java/ftbsc/lll/processor/LilleroProcessor.java
+++ b/src/main/java/ftbsc/lll/processor/LilleroProcessor.java
@@ -44,7 +44,7 @@ public class LilleroProcessor extends AbstractProcessor {
* A {@link Set} of {@link String}s that will contain the fully qualified names
* of the generated injector files.
*/
- private final Set<String> generatedInjectors = new HashSet<>();
+ private final Set<String> injectors = new HashSet<>();
/**
* The {@link ObfuscationMapper} used to convert classes and variables
@@ -136,19 +136,16 @@ public class LilleroProcessor extends AbstractProcessor {
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for(TypeElement annotation : annotations) {
if(annotation.getQualifiedName().contentEquals(Patch.class.getName())) {
- Set<TypeElement> validInjectors =
- roundEnv.getElementsAnnotatedWith(annotation)
- .stream()
- .map(e -> (TypeElement) e)
- .filter(this::isValidInjector)
- .collect(Collectors.toSet());
- if(!validInjectors.isEmpty())
- validInjectors.forEach(this::generateClasses);
+ roundEnv.getElementsAnnotatedWith(annotation)
+ .stream()
+ .map(e -> (TypeElement) e)
+ .filter(this::isValidInjector)
+ .forEach(this::generateClasses);
} else if(annotation.getQualifiedName().contentEquals(RegisterBareInjector.class.getName())) {
TypeMirror injectorType = this.processingEnv.getElementUtils().getTypeElement("ftbsc.lll.IInjector").asType();
for(Element e : roundEnv.getElementsAnnotatedWith(annotation)) {
if(this.processingEnv.getTypeUtils().isAssignable(e.asType(), injectorType))
- this.generatedInjectors.add(((TypeElement) e).getQualifiedName().toString());
+ this.injectors.add(((TypeElement) e).getQualifiedName().toString());
else this.processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING, String.format(
"Class %s annotated with @RegisterBareInjector is not an instance of IInjector, skipping...",
((TypeElement) e).getQualifiedName().toString()
@@ -156,7 +153,7 @@ public class LilleroProcessor extends AbstractProcessor {
}
}
}
- if (!this.generatedInjectors.isEmpty()) {
+ if (!this.injectors.isEmpty()) {
generateServiceProvider();
return true;
} else return false;
@@ -372,7 +369,7 @@ public class LilleroProcessor extends AbstractProcessor {
throw new RuntimeException(e);
}
- this.generatedInjectors.add(injectorClassName);
+ this.injectors.add(injectorClassName);
}
}
@@ -386,7 +383,8 @@ public class LilleroProcessor extends AbstractProcessor {
StandardLocation.CLASS_OUTPUT, "", "META-INF/services/ftbsc.lll.IInjector"
);
PrintWriter out = new PrintWriter(serviceProvider.openWriter());
- this.generatedInjectors.forEach(out::println);
+ this.injectors.forEach(out::println);
+ this.injectors.clear();
out.close();
} catch(IOException e) {
throw new RuntimeException(e);