azkaban-aplcache

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;
 	}
 }