From 4865a4b6065606cbce8dcc207b9ecd0677106199 Mon Sep 17 00:00:00 2001 From: nbaars Date: Sun, 1 Mar 2015 15:49:27 +0100 Subject: [PATCH] Solution and Java source are optional they don't need to be presnt in a plugin --- src/main/java/org/owasp/webgoat/plugins/Plugin.java | 11 ++++++++--- src/main/java/org/owasp/webgoat/session/Course.java | 10 +++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/owasp/webgoat/plugins/Plugin.java b/src/main/java/org/owasp/webgoat/plugins/Plugin.java index 7018d697e..0e5fea5ff 100644 --- a/src/main/java/org/owasp/webgoat/plugins/Plugin.java +++ b/src/main/java/org/owasp/webgoat/plugins/Plugin.java @@ -1,5 +1,6 @@ package org.owasp.webgoat.plugins; +import com.google.common.base.Optional; import org.owasp.webgoat.lessons.AbstractLesson; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,7 +62,7 @@ public class Plugin { private void loadClass(String name, byte[] classFile) { ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); - PluginClassLoader pluginClassLoader = new PluginClassLoader(contextClassLoader, classFile); + PluginClassLoader pluginClassLoader = new PluginClassLoader(contextClassLoader, name, classFile); try { String realClassName = name.replaceFirst("/", "").replaceAll("/", ".").replaceAll(".class", ""); Class clazz = pluginClassLoader.loadClass(realClassName); @@ -128,12 +129,16 @@ public class Plugin { return lesson; } + public Optional getLessonSolution(String language) { + return Optional.fromNullable(this.solutionLanguageFiles.get(language)); + } + public Map getLessonSolutions() { return this.solutionLanguageFiles; } - public File getLessonSource() { - return lessonSourceFile; + public Optional getLessonSource() { + return Optional.fromNullable(lessonSourceFile); } public Map getLessonPlans() { diff --git a/src/main/java/org/owasp/webgoat/session/Course.java b/src/main/java/org/owasp/webgoat/session/Course.java index 0b792b866..99e37742f 100644 --- a/src/main/java/org/owasp/webgoat/session/Course.java +++ b/src/main/java/org/owasp/webgoat/session/Course.java @@ -18,7 +18,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import java.util.Map +import java.util.Map; import javax.servlet.ServletContext; import org.owasp.webgoat.HammerHead; @@ -318,8 +318,12 @@ public class Course { for(Map.Entry lessonPlan : plugin.getLessonPlans().entrySet()) { lesson.setLessonPlanFileName(lessonPlan.getKey(), lessonPlan.getValue().toString()); } - lesson.setLessonSolutionFileName(plugin.getLessonSolutions().get("en").toString()); - lesson.setSourceFileName(plugin.getLessonSource().toString()); + if (plugin.getLessonSolution("en").isPresent()) { + lesson.setLessonSolutionFileName(plugin.getLessonSolution("en").toString()); + } + if (plugin.getLessonSource().isPresent()) { + lesson.setSourceFileName(plugin.getLessonSource().get().toString()); + } } catch (Exception e) { logger.error("Error in loadLessons: ", e); }