Details
diff --git a/src/java/azkaban/webapp/AzkabanWebServer.java b/src/java/azkaban/webapp/AzkabanWebServer.java
index 2133db8..ebb0aa0 100644
--- a/src/java/azkaban/webapp/AzkabanWebServer.java
+++ b/src/java/azkaban/webapp/AzkabanWebServer.java
@@ -999,7 +999,7 @@ public class AzkabanWebServer extends AzkabanServer {
String pluginName = pluginProps.getString("viewer.name");
String pluginWebPath = pluginProps.getString("viewer.path");
- String pluginJobType = pluginProps.getString("viewer.jobtype", null);
+ String pluginJobTypes = pluginProps.getString("viewer.jobtypes", null);
int pluginOrder = pluginProps.getInt("viewer.order", 0);
boolean pluginHidden = pluginProps.getBoolean("viewer.hidden", false);
List<String> extLibClasspath = pluginProps.getStringList("viewer.external.classpaths", (List<String>)null);
@@ -1108,7 +1108,7 @@ public class AzkabanWebServer extends AzkabanServer {
pluginWebPath,
pluginOrder,
pluginHidden,
- pluginJobType));
+ pluginJobTypes));
}
// Velocity needs the jar resource paths to be set.
diff --git a/src/java/azkaban/webapp/plugin/PluginRegistry.java b/src/java/azkaban/webapp/plugin/PluginRegistry.java
index b9382b6..a6f74d2 100644
--- a/src/java/azkaban/webapp/plugin/PluginRegistry.java
+++ b/src/java/azkaban/webapp/plugin/PluginRegistry.java
@@ -24,34 +24,37 @@ import java.util.TreeSet;
public class PluginRegistry {
- private static PluginRegistry registry;
+ private static PluginRegistry registry;
- public TreeSet<ViewerPlugin> viewerPlugins;
+ public TreeSet<ViewerPlugin> viewerPlugins;
public Map<String, TreeSet<ViewerPlugin>> jobTypeViewerPlugins;
- private PluginRegistry() {
+ private PluginRegistry() {
viewerPlugins = new TreeSet<ViewerPlugin>(ViewerPlugin.COMPARATOR);
jobTypeViewerPlugins = new HashMap<String, TreeSet<ViewerPlugin>>();
- }
+ }
- public void register(ViewerPlugin plugin) {
+ public void register(ViewerPlugin plugin) {
viewerPlugins.add(plugin);
- String jobType = plugin.getJobType();
- if (jobType == null) {
+ List<String> jobTypes = plugin.getJobTypes();
+ if (jobTypes == null) {
return;
}
- TreeSet<ViewerPlugin> plugins = null;
- if (!jobTypeViewerPlugins.containsKey(jobType)) {
- plugins = new TreeSet<ViewerPlugin>(ViewerPlugin.COMPARATOR);
- plugins.add(plugin);
- jobTypeViewerPlugins.put(jobType, plugins);
- }
- else {
- plugins = jobTypeViewerPlugins.get(jobType);
- plugins.add(plugin);
+
+ for (String jobType : jobTypes) {
+ TreeSet<ViewerPlugin> plugins = null;
+ if (!jobTypeViewerPlugins.containsKey(jobType)) {
+ plugins = new TreeSet<ViewerPlugin>(ViewerPlugin.COMPARATOR);
+ plugins.add(plugin);
+ jobTypeViewerPlugins.put(jobType, plugins);
+ }
+ else {
+ plugins = jobTypeViewerPlugins.get(jobType);
+ plugins.add(plugin);
+ }
}
- }
+ }
public List<ViewerPlugin> getViewerPlugins() {
return new ArrayList<ViewerPlugin>(viewerPlugins);
@@ -65,10 +68,10 @@ public class PluginRegistry {
return new ArrayList<ViewerPlugin>(plugins);
}
- public static PluginRegistry getRegistry() {
- if (registry == null) {
- registry = new PluginRegistry();
- }
- return registry;
- }
+ public static PluginRegistry getRegistry() {
+ if (registry == null) {
+ registry = new PluginRegistry();
+ }
+ return registry;
+ }
}
diff --git a/src/java/azkaban/webapp/plugin/ViewerPlugin.java b/src/java/azkaban/webapp/plugin/ViewerPlugin.java
index 9e167ff..b2bb851 100644
--- a/src/java/azkaban/webapp/plugin/ViewerPlugin.java
+++ b/src/java/azkaban/webapp/plugin/ViewerPlugin.java
@@ -16,14 +16,16 @@
package azkaban.webapp.plugin;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Comparator;
public class ViewerPlugin {
private final String pluginName;
private final String pluginPath;
- private final String jobType;
private final int order;
private boolean hidden;
+ private final List<String> jobTypes;
public static final Comparator<ViewerPlugin> COMPARATOR =
new Comparator<ViewerPlugin>() {
@@ -41,12 +43,12 @@ public class ViewerPlugin {
String pluginPath,
int order,
boolean hidden,
- String jobType) {
+ String jobTypes) {
this.pluginName = pluginName;
this.pluginPath = pluginPath;
this.order = order;
this.setHidden(hidden);
- this.jobType = jobType;
+ this.jobTypes = parseJobTypes(jobTypes);
}
public String getPluginName() {
@@ -69,7 +71,19 @@ public class ViewerPlugin {
this.hidden = hidden;
}
- public String getJobType() {
- return jobType;
+ protected List<String> parseJobTypes(String jobTypesStr) {
+ if (jobTypesStr == null) {
+ return null;
+ }
+ String[] parts = jobTypesStr.split(",");
+ List<String> jobTypes = new ArrayList<String>();
+ for (int i = 0; i < parts.length; ++i) {
+ jobTypes.add(parts[i].trim());
+ }
+ return jobTypes;
+ }
+
+ public List<String> getJobTypes() {
+ return jobTypes;
}
}