azkaban-uncached

Added possibility of changing default page ("/") to redirect

8/21/2013 8:16:43 PM

Details

diff --git a/conf/azkaban.properties b/conf/azkaban.properties
index 72ef395..fc96c71 100644
--- a/conf/azkaban.properties
+++ b/conf/azkaban.properties
@@ -1,7 +1,8 @@
 #Azkaban Personalization Settings
-azkaban.name=Local
+azkaban.name=Test
 azkaban.label=My Local Azkaban
 azkaban.color=#FF3601
+azkaban.default.servlet.path=/index
 web.resource.dir=web/
 default.timezone.id=America/Los_Angeles
 
@@ -48,4 +49,4 @@ job.success.email=
 
 lockdown.create.projects=false
 
-cache.directory=cache
\ No newline at end of file
+cache.directory=cache
diff --git a/src/java/azkaban/webapp/AzkabanWebServer.java b/src/java/azkaban/webapp/AzkabanWebServer.java
index c8f6244..b41ddcb 100644
--- a/src/java/azkaban/webapp/AzkabanWebServer.java
+++ b/src/java/azkaban/webapp/AzkabanWebServer.java
@@ -76,10 +76,11 @@ import azkaban.webapp.servlet.AzkabanServletContextListener;
 
 import azkaban.webapp.servlet.AbstractAzkabanServlet;
 import azkaban.webapp.servlet.ExecutorServlet;
+import azkaban.webapp.servlet.IndexRedirectServlet;
 import azkaban.webapp.servlet.JMXHttpServlet;
 import azkaban.webapp.servlet.ScheduleServlet;
 import azkaban.webapp.servlet.HistoryServlet;
-import azkaban.webapp.servlet.IndexServlet;
+import azkaban.webapp.servlet.ProjectServlet;
 import azkaban.webapp.servlet.ProjectManagerServlet;
 import azkaban.webapp.servlet.ViewerPlugin;
 import azkaban.webapp.session.SessionCache;
@@ -436,11 +437,13 @@ public class AzkabanWebServer implements AzkabanServer {
 		logger.info("Setting up web resource dir " + staticDir);
 		Context root = new Context(server, "/", Context.SESSIONS);
 		root.setMaxFormContentSize(MAX_FORM_CONTENT_SIZE);
-		
+
+		String defaultServletPath = azkabanSettings.getString("azkaban.default.servlet.path", "/index");
 		root.setResourceBase(staticDir);
-		ServletHolder index = new ServletHolder(new IndexServlet());
+		ServletHolder indexRedirect = new ServletHolder(new IndexRedirectServlet(defaultServletPath));
+		root.addServlet(indexRedirect, "/");
+		ServletHolder index = new ServletHolder(new ProjectServlet());
 		root.addServlet(index, "/index");
-		root.addServlet(index, "/");
 
 		ServletHolder staticServlet = new ServletHolder(new DefaultServlet());
 		root.addServlet(staticServlet, "/css/*");
diff --git a/src/java/azkaban/webapp/servlet/IndexRedirectServlet.java b/src/java/azkaban/webapp/servlet/IndexRedirectServlet.java
new file mode 100644
index 0000000..d02f759
--- /dev/null
+++ b/src/java/azkaban/webapp/servlet/IndexRedirectServlet.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2012 LinkedIn, Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package azkaban.webapp.servlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import azkaban.webapp.session.Session;
+
+/**
+ * The main page
+ */
+public class IndexRedirectServlet extends LoginAbstractAzkabanServlet {
+	private static final long serialVersionUID = -1;
+	private String defaultServletPath;
+
+	public IndexRedirectServlet(String defaultServletPath) {
+		this.defaultServletPath = defaultServletPath;
+		if (this.defaultServletPath.isEmpty() || this.defaultServletPath.equals("/")) {
+			this.defaultServletPath = "/index";
+		}
+	}
+
+	@Override
+	protected void handleGet(HttpServletRequest req, HttpServletResponse resp, Session session) throws ServletException, IOException {
+		resp.sendRedirect(defaultServletPath);
+	}
+
+	@Override
+	protected void handlePost(HttpServletRequest req, HttpServletResponse resp, Session session) throws ServletException, IOException {
+		resp.sendRedirect(defaultServletPath);
+	}
+}
diff --git a/src/java/azkaban/webapp/servlet/velocity/index.vm b/src/java/azkaban/webapp/servlet/velocity/index.vm
index 46e2ed0..73760bd 100644
--- a/src/java/azkaban/webapp/servlet/velocity/index.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/index.vm
@@ -50,12 +50,12 @@
 #if ($allProjects)
 					<h2>All Projects</h2>
 					<div class="section-sub-hd">
-						<h4><a href="${context}/">My Projects</a></h4>
+						<h4><a href="${context}/index">My Projects</a></h4>
 					</div>
 #else
 					<h2>My Projects</h2>
 					<div class="section-sub-hd">
-						<h4><a href="${context}/?all">All Projects</a></h4>
+						<h4><a href="${context}/index?all">All Projects</a></h4>
 					</div>
 #end
 					<form id="search-form" method="get">
diff --git a/src/java/azkaban/webapp/servlet/velocity/nav.vm b/src/java/azkaban/webapp/servlet/velocity/nav.vm
index 8019467..f4d4d6d 100644
--- a/src/java/azkaban/webapp/servlet/velocity/nav.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/nav.vm
@@ -23,7 +23,7 @@
 			</script>
 
 			<ul id="nav" class="nav">
-				<li id="all-jobs-tab" #if($current_page == 'all')class="selected"#end onClick="navMenuClick('$!context/')"><a href="$!context/">Projects</a></li>
+				<li id="all-jobs-tab" #if($current_page == 'all')class="selected"#end onClick="navMenuClick('$!context/index')"><a href="$!context/index">Projects</a></li>
 				<li id="scheduled-jobs-tab" #if($current_page == 'schedule')class="selected"#end onClick="navMenuClick('$!context/schedule')"><a href="$!context/schedule">Scheduled</a></li>
 				<li id="executing-jobs-tab" #if($current_page == 'executing')class="selected"#end onClick="navMenuClick('$!context/executor')"><a href="$!context/executor">Executing</a></li>
 				<li id="history-jobs-tab" #if($current_page == 'history')class="selected"#end onClick="navMenuClick('$!context/history')"><a href="$!context/history">History</a></li>