From 3525226e686040c933abec27ea7e8ad5de6d5df1 Mon Sep 17 00:00:00 2001 From: nbaars Date: Mon, 5 Jan 2015 19:10:36 +0100 Subject: [PATCH] Adding possibility to reload the plugins --- .../plugins/PluginBackgroundLoader.java | 27 +++++++++++++++++++ .../owasp/webgoat/plugins/PluginsLoader.java | 6 ++++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/owasp/webgoat/plugins/PluginBackgroundLoader.java diff --git a/src/main/java/org/owasp/webgoat/plugins/PluginBackgroundLoader.java b/src/main/java/org/owasp/webgoat/plugins/PluginBackgroundLoader.java new file mode 100644 index 000000000..1c9115d50 --- /dev/null +++ b/src/main/java/org/owasp/webgoat/plugins/PluginBackgroundLoader.java @@ -0,0 +1,27 @@ +package org.owasp.webgoat.plugins; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.servlet.annotation.WebListener; +import java.nio.file.Paths; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +@WebListener +public class PluginBackgroundLoader implements ServletContextListener { + + private ScheduledExecutorService scheduler; + + @Override + public void contextInitialized(ServletContextEvent event) { + String pluginPath = event.getServletContext().getRealPath("plugin_lessons"); + scheduler = Executors.newSingleThreadScheduledExecutor(); + scheduler.scheduleAtFixedRate(new PluginsLoader(Paths.get(pluginPath)), 0, 5, TimeUnit.SECONDS); + } + + @Override + public void contextDestroyed(ServletContextEvent event) { + scheduler.shutdownNow(); + } +} diff --git a/src/main/java/org/owasp/webgoat/plugins/PluginsLoader.java b/src/main/java/org/owasp/webgoat/plugins/PluginsLoader.java index 3c80d4a8c..c6d6b846b 100644 --- a/src/main/java/org/owasp/webgoat/plugins/PluginsLoader.java +++ b/src/main/java/org/owasp/webgoat/plugins/PluginsLoader.java @@ -12,7 +12,7 @@ import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.List; -public class PluginsLoader { +public class PluginsLoader implements Runnable { private final Logger logger = LoggerFactory.getLogger(this.getClass()); private final Path path; @@ -49,4 +49,8 @@ public class PluginsLoader { } + @Override + public void run() { + loadPlugins(); + } }