From ad9b856cf3fad91bf6c9a479790ff8be8a50780d Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Mon, 5 Aug 2024 15:22:37 +0200 Subject: [PATCH] Simplify LinkageProcessor --- BauSystem/BauSystem_Main/build.gradle.kts | 1 + .../de/steamwar/linkage/LinkageProcessor.java | 35 +++++++------------ 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/BauSystem/BauSystem_Main/build.gradle.kts b/BauSystem/BauSystem_Main/build.gradle.kts index b1834ce8..fcb3ee1f 100644 --- a/BauSystem/BauSystem_Main/build.gradle.kts +++ b/BauSystem/BauSystem_Main/build.gradle.kts @@ -28,6 +28,7 @@ version = "" tasks.compileJava { options.encoding = "UTF-8" options.isWarnings = false + options.compilerArgs.add("-AprojectDir=$projectDir") } java { diff --git a/CommonCore/Linkage/src/de/steamwar/linkage/LinkageProcessor.java b/CommonCore/Linkage/src/de/steamwar/linkage/LinkageProcessor.java index 06c76bc5..e6b70418 100644 --- a/CommonCore/Linkage/src/de/steamwar/linkage/LinkageProcessor.java +++ b/CommonCore/Linkage/src/de/steamwar/linkage/LinkageProcessor.java @@ -36,22 +36,20 @@ import javax.lang.model.element.VariableElement; import javax.lang.model.type.DeclaredType; import javax.lang.model.type.TypeMirror; import javax.tools.Diagnostic; -import javax.tools.FileObject; -import javax.tools.StandardLocation; import java.io.*; import java.lang.annotation.Annotation; -import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; import java.util.function.Consumer; -import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @SupportedAnnotationTypes("de.steamwar.linkage.Linked") public class LinkageProcessor extends AbstractProcessor { + private File projectDir; + private static Context context; @Getter @@ -76,7 +74,16 @@ public class LinkageProcessor extends AbstractProcessor { super.init(processingEnv); messager = processingEnv.getMessager(); className = "LinkageUtils"; + + projectDir = new File(processingEnv.getOptions().get("projectDir")); + mainClass(projectDir); disabledFeatures(); + + String name = projectDir.getName(); + if (name.contains("_")) { + name = name.substring(0, name.indexOf("_")); + } + this.name = name.replaceAll("[^a-zA-Z]", "").toLowerCase(); } @SneakyThrows @@ -115,31 +122,13 @@ public class LinkageProcessor extends AbstractProcessor { .forEach(disabledFeatures::add); } - private File getFile(File file, Predicate predicate) { - while (file != null) { - if (predicate.test(file)) return file; - file = file.getParentFile(); - } - return null; - } - @SneakyThrows @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { if (processed) return false; processed = true; - URI uri = processingEnv.getFiler().createResource(StandardLocation.SOURCE_OUTPUT, "", ".ignore").toUri(); - File file = getFile(new File(uri.toString().substring(7)), f -> { - return !f.getName().contains("_") && new File(f, "build.gradle.kts").exists(); - }); - - name = file.getName().replaceAll("[^a-zA-Z]", "").toLowerCase(); - mainClass(file); - - FileObject fileObject = processingEnv.getFiler().createSourceFile("de.steamwar." + name + ".linkage.LinkageUtils"); - - Writer writer = fileObject.openWriter(); + Writer writer = processingEnv.getFiler().createSourceFile("de.steamwar." + name + ".linkage.LinkageUtils").openWriter(); BuildPlan buildPlan = new BuildPlan("de.steamwar." + name + ".linkage", className); Set disabledElements = new HashSet<>();