From 4cd1ea327752fad69c897e2114d182a6c910ded1 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Thu, 22 Jan 2026 23:46:20 +0100 Subject: [PATCH] now caching plantuml diagrams Signed-off-by: Stephan Richter --- .../main/java/de/srsoftware/umbrella/core/Util.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/de/srsoftware/umbrella/core/Util.java b/core/src/main/java/de/srsoftware/umbrella/core/Util.java index d869a805..39c1447a 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/Util.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/Util.java @@ -40,6 +40,7 @@ public class Util { private static final JParsedown MARKDOWN = new JParsedown(); public static final String SHA1 = "SHA-1"; private static final MessageDigest SHA1_DIGEST; + private static final Map umlCache = new HashMap<>(); static { try { @@ -84,6 +85,14 @@ public class Util { var start = matcher.start(0); var end = matcher.end(0); + var umlHash = uml.hashCode(); + var svg = umlCache.get(umlHash); + if (svg != null){ + source = source.substring(0, start) + svg + source.substring(end); + matcher = UML_PATTERN.matcher(source); + continue; + } + ProcessBuilder processBuilder = new ProcessBuilder("java", "-jar", plantumlJar.getAbsolutePath(), "-tsvg", "-pipe"); var ignored = processBuilder.redirectErrorStream(); var process = processBuilder.start(); @@ -94,7 +103,8 @@ public class Util { try (InputStream is = process.getInputStream()) { byte[] out = is.readAllBytes(); - var svg = new String(out, UTF_8); + svg = new String(out, UTF_8); + umlCache.put(umlHash,svg); source = source.substring(0, start) + svg + source.substring(end); matcher = UML_PATTERN.matcher(source); }