Skip to content

Commit 73f8c25

Browse files
committed
adds a new method for loading build resources
1 parent 90f56ed commit 73f8c25

File tree

2 files changed

+33
-20
lines changed

2 files changed

+33
-20
lines changed

prism-core/src/main/java/io/avaje/prism/internal/APContextWriter.java

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,10 @@ public static void write(PrintWriter out, String packageName) {
3131
+ "\n"
3232
+ "import static java.util.function.Predicate.not;\n"
3333
+ "\n"
34-
+ "import java.io.BufferedReader;\n"
35-
+ "import java.io.IOException;\n"
36-
+ "import java.io.InputStreamReader;\n"
37-
+ "import java.util.Collection;\n"
38-
+ "import java.util.Optional;\n"
39-
+ "import java.util.Set;\n"
34+
+ "import java.io.*;\n"
35+
+ "import java.net.URI;\n"
36+
+ "import java.nio.file.Path;\n"
37+
+ "import java.util.*;\n"
4038
+ "import java.util.stream.Stream;\n"
4139
+ "\n"
4240
+ "import javax.annotation.processing.Filer;\n"
@@ -384,7 +382,31 @@ public static void write(PrintWriter out, String packageName) {
384382
+ " .toURL()\n"
385383
+ " .openStream();\n"
386384
+ " return new BufferedReader(new InputStreamReader(inputStream));\n"
387-
+ " }\n"
385+
+ " }\n\n"
386+
+ " /**\n"
387+
+ " * Given the relative path, gets a {@link Path} from the Maven {@code target}/Gradle {@code build} folder.\n"
388+
+ " * @param path the relative path of the file in the target/build folder\n"
389+
+ " *\n"
390+
+ " * @return the file object\n"
391+
+ " * @throws IOException if unable to retrieve the file\n"
392+
+ " */\n"
393+
+ " public static Path getBuildResource(String path) throws IOException {\n"
394+
+ "\n"
395+
+ " var id = UUID.randomUUID().toString();\n"
396+
+ " final var uri =\n"
397+
+ " filer()\n"
398+
+ " .createResource(StandardLocation.CLASS_OUTPUT, \"\", path + id)\n"
399+
+ " .toUri()\n"
400+
+ " .toString()\n"
401+
+ " .replaceFirst(id, \"\")\n"
402+
+ " .replaceFirst(\"/classes\", \"\")\n"
403+
+ " .replaceFirst(\"/classes/java/main\", \"\");\n"
404+
+ " var updatedPath = Path.of(URI.create(uri));\n"
405+
+ " if (path.contains(\"/\")) {\n"
406+
+ " updatedPath.getParent().toFile().mkdirs();\n"
407+
+ " }\n"
408+
+ " return updatedPath;\n"
409+
+ " }"
388410
+ "}\n"
389411
+ "");
390412
}

prism-core/src/main/java/io/avaje/prism/internal/ModuleInfoReaderWriter.java

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -243,21 +243,12 @@ public static void write(PrintWriter out, String packageName) {
243243
+ " }\n"
244244
+ " }\n"
245245
+ "\n"
246-
+ " private static boolean buildPluginAvailable() {\n"
247-
+ " return resource(\"target/avaje-plugin-exists.txt\", \"/target/classes\")\n"
248-
+ " || resource(\"build/avaje-plugin-exists.txt\", \"/build/classes/java/main\");\n"
246+
+ " private static boolean buildPluginAvailable() {\n"
247+
+ " return isPresent(\"avaje-plugin-exists.txt\");\n"
249248
+ " }\n"
250249
+ "\n"
251-
+ " private static boolean resource(String relativeName, String replace) {\n"
252-
+ " try (var inputStream =\n"
253-
+ " new URI(\n"
254-
+ " APContext.filer()\n"
255-
+ " .getResource(StandardLocation.CLASS_OUTPUT, \"\", relativeName)\n"
256-
+ " .toUri()\n"
257-
+ " .toString()\n"
258-
+ " .replace(replace, \"\"))\n"
259-
+ " .toURL()\n"
260-
+ " .openStream()) {\n"
250+
+ " private static boolean isPresent(String path) {\n"
251+
+ " try (var inputStream = APContext.getBuildResource(path).toUri().toURL().openStream()) {\n"
261252
+ "\n"
262253
+ " return inputStream.available() > 0;\n"
263254
+ " } catch (Exception e) {\n"

0 commit comments

Comments
 (0)