From b3dec8bdc9c73000d822411c07e263f12ec281b8 Mon Sep 17 00:00:00 2001 From: Nanne Baars Date: Mon, 31 Mar 2025 22:49:26 +0200 Subject: [PATCH] fix: challenge introduction page loads (#2095) --- .../container/LessonTemplateResolver.java | 29 ++++++++++++------- .../lessons/challenges/html/Challenge1.html | 3 -- .../{Challenge.html => ChallengeIntro.html} | 2 +- 3 files changed, 20 insertions(+), 14 deletions(-) rename src/main/resources/lessons/challenges/html/{Challenge.html => ChallengeIntro.html} (91%) diff --git a/src/main/java/org/owasp/webgoat/container/LessonTemplateResolver.java b/src/main/java/org/owasp/webgoat/container/LessonTemplateResolver.java index 0be83492b..a657a4dc2 100644 --- a/src/main/java/org/owasp/webgoat/container/LessonTemplateResolver.java +++ b/src/main/java/org/owasp/webgoat/container/LessonTemplateResolver.java @@ -47,17 +47,26 @@ public class LessonTemplateResolver extends FileTemplateResolver { var templateName = resourceName.substring(PREFIX.length()); byte[] resource = resources.get(templateName); if (resource == null) { - try { - resource = - resourceLoader - .getResource("classpath:/" + templateName) - .getInputStream() - .readAllBytes(); - } catch (IOException e) { - log.error("Unable to find lesson HTML: {}", template); - } - resources.put(templateName, resource); + resource = loadAndCache(templateName); + } + + if (resource == null) { + return new StringTemplateResource("Unable to find lesson HTML: %s".formatted(templateName)); } return new StringTemplateResource(new String(resource, StandardCharsets.UTF_8)); } + + private byte[] loadAndCache(String templateName) { + try { + var resource = + resourceLoader.getResource("classpath:/" + templateName).getInputStream().readAllBytes(); + resources.put(templateName, resource); + return resource; + } catch (IOException e) { + log.error( + "Unable to find lesson HTML: '{}', does the name of HTML file name match the lesson class name?", + templateName); + return null; + } + } } diff --git a/src/main/resources/lessons/challenges/html/Challenge1.html b/src/main/resources/lessons/challenges/html/Challenge1.html index 03f5f05cf..eb0a2359c 100644 --- a/src/main/resources/lessons/challenges/html/Challenge1.html +++ b/src/main/resources/lessons/challenges/html/Challenge1.html @@ -2,9 +2,6 @@ -
-
-
diff --git a/src/main/resources/lessons/challenges/html/Challenge.html b/src/main/resources/lessons/challenges/html/ChallengeIntro.html similarity index 91% rename from src/main/resources/lessons/challenges/html/Challenge.html rename to src/main/resources/lessons/challenges/html/ChallengeIntro.html index 5a03f3da8..3e306bbe4 100644 --- a/src/main/resources/lessons/challenges/html/Challenge.html +++ b/src/main/resources/lessons/challenges/html/ChallengeIntro.html @@ -1,4 +1,4 @@ - +