diff --git a/src/java/azkaban/webapp/AzkabanWebServer.java b/src/java/azkaban/webapp/AzkabanWebServer.java
index 9b22f42..b6d961b 100644
--- a/src/java/azkaban/webapp/AzkabanWebServer.java
+++ b/src/java/azkaban/webapp/AzkabanWebServer.java
@@ -95,6 +95,7 @@ import azkaban.webapp.servlet.ProjectManagerServlet;
import azkaban.webapp.servlet.TriggerManagerServlet;
import azkaban.webapp.plugin.TriggerPlugin;
import azkaban.webapp.plugin.ViewerPlugin;
+import azkaban.webapp.plugin.PluginRegistry;
import azkaban.webapp.session.SessionCache;
/**
@@ -153,7 +154,6 @@ public class AzkabanWebServer extends AzkabanServer {
private Props props;
private SessionCache sessionCache;
private File tempDir;
- private List<ViewerPlugin> viewerPlugins;
private Map<String, TriggerPlugin> triggerPlugins;
private MBeanServer mbeanServer;
@@ -215,10 +215,6 @@ public class AzkabanWebServer extends AzkabanServer {
configureMBeanServer();
}
- private void setViewerPlugins(List<ViewerPlugin> viewerPlugins) {
- this.viewerPlugins = viewerPlugins;
- }
-
private void setTriggerPlugins(Map<String, TriggerPlugin> triggerPlugins) {
this.triggerPlugins = triggerPlugins;
}
@@ -775,7 +771,7 @@ public class AzkabanWebServer extends AzkabanServer {
root.addServlet(new ServletHolder(new TriggerManagerServlet()),"/triggers");
String viewerPluginDir = azkabanSettings.getString("viewer.plugin.dir", "plugins/viewer");
- app.setViewerPlugins(loadViewerPlugins(root, viewerPluginDir, app.getVelocityEngine()));
+ loadViewerPlugins(root, viewerPluginDir, app.getVelocityEngine());
// triggerplugin
String triggerPluginDir = azkabanSettings.getString("trigger.plugin.dir", "plugins/triggers");
@@ -963,13 +959,12 @@ public class AzkabanWebServer extends AzkabanServer {
return triggerPlugins;
}
- private static List<ViewerPlugin> loadViewerPlugins(Context root, String pluginPath, VelocityEngine ve) {
+ private static void loadViewerPlugins(Context root, String pluginPath, VelocityEngine ve) {
File viewerPluginPath = new File(pluginPath);
if (!viewerPluginPath.exists()) {
- return Collections.<ViewerPlugin>emptyList();
+ return;
}
- ArrayList<ViewerPlugin> installedViewerPlugins = new ArrayList<ViewerPlugin>();
ClassLoader parentLoader = AzkabanWebServer.class.getClassLoader();
File[] pluginDirs = viewerPluginPath.listFiles();
ArrayList<String> jarPaths = new ArrayList<String>();
@@ -1115,7 +1110,7 @@ public class AzkabanWebServer extends AzkabanServer {
AbstractAzkabanServlet avServlet = (AbstractAzkabanServlet)obj;
root.addServlet(new ServletHolder(avServlet), "/" + pluginWebPath + "/*");
- installedViewerPlugins.add(new ViewerPlugin(
+ PluginRegistry.getRegistry().register(new ViewerPlugin(
pluginName,
pluginWebPath,
pluginOrder,
@@ -1127,20 +1122,6 @@ public class AzkabanWebServer extends AzkabanServer {
String jarResourcePath = StringUtils.join(jarPaths, ", ");
logger.info("Setting jar resource path " + jarResourcePath);
ve.addProperty("jar.resource.loader.path", jarResourcePath);
-
- // Sort plugins based on order
- Collections.sort(installedViewerPlugins, new Comparator<ViewerPlugin>() {
- @Override
- public int compare(ViewerPlugin o1, ViewerPlugin o2) {
- return o1.getOrder() - o2.getOrder();
- }
- });
-
- return installedViewerPlugins;
- }
-
- public List<ViewerPlugin> getViewerPlugins() {
- return viewerPlugins;
}
/**
diff --git a/src/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java b/src/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java
index 3d41e2c..2fc6ecc 100644
--- a/src/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java
+++ b/src/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java
@@ -41,6 +41,7 @@ import azkaban.webapp.AzkabanWebServer;
import azkaban.webapp.session.Session;
import azkaban.webapp.plugin.ViewerPlugin;
import azkaban.webapp.plugin.TriggerPlugin;
+import azkaban.webapp.plugin.PluginRegistry;
/**
* Base Servlet for pages
@@ -93,7 +94,7 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
if (application instanceof AzkabanWebServer) {
AzkabanWebServer server = (AzkabanWebServer)application;
- viewerPlugins = server.getViewerPlugins();
+ viewerPlugins = PluginRegistry.getRegistry().getViewerPlugins();
triggerPlugins = new ArrayList<TriggerPlugin>(server.getTriggerPlugins().values());
}
}