azkaban-aplcache

Changes

Details

diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/AzkabanWebServer.java b/azkaban-web-server/src/main/java/azkaban/webapp/AzkabanWebServer.java
index 45d9925..963788e 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/AzkabanWebServer.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/AzkabanWebServer.java
@@ -98,22 +98,19 @@ import org.mortbay.thread.QueuedThreadPool;
 /**
  * The Azkaban Jetty server class
  *
- * Global azkaban properties for setup. All of them are optional unless
- * otherwise marked: azkaban.name - The displayed name of this instance.
- * azkaban.label - Short descriptor of this Azkaban instance. azkaban.color -
- * Theme color azkaban.temp.dir - Temp dir used by Azkaban for various file
- * uses. web.resource.dir - The directory that contains the static web files.
+ * Global azkaban properties for setup. All of them are optional unless otherwise marked:
+ * azkaban.name - The displayed name of this instance. azkaban.label - Short descriptor of this
+ * Azkaban instance. azkaban.color - Theme color azkaban.temp.dir - Temp dir used by Azkaban for
+ * various file uses. web.resource.dir - The directory that contains the static web files.
  * default.timezone.id - The timezone code. I.E. America/Los Angeles
  *
- * user.manager.class - The UserManager class used for the user manager. Default
- * is XmlUserManager. project.manager.class - The ProjectManager to load
- * projects project.global.properties - The base properties inherited by all
- * projects and jobs
+ * user.manager.class - The UserManager class used for the user manager. Default is XmlUserManager.
+ * project.manager.class - The ProjectManager to load projects project.global.properties - The base
+ * properties inherited by all projects and jobs
  *
- * jetty.maxThreads - # of threads for jetty jetty.ssl.port - The ssl port used
- * for sessionizing. jetty.keystore - Jetty keystore . jetty.keypassword - Jetty
- * keystore password jetty.truststore - Jetty truststore jetty.trustpassword -
- * Jetty truststore password
+ * jetty.maxThreads - # of threads for jetty jetty.ssl.port - The ssl port used for sessionizing.
+ * jetty.keystore - Jetty keystore . jetty.keypassword - Jetty keystore password jetty.truststore -
+ * Jetty truststore jetty.trustpassword - Jetty truststore password
  */
 public class AzkabanWebServer extends AzkabanServer {
 
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java
index 673abee..a9da66c 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/AbstractAzkabanServlet.java
@@ -123,8 +123,7 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
   }
 
   /**
-   * Retrieves the param from the http servlet request. Will throw an exception
-   * if not found
+   * Retrieves the param from the http servlet request. Will throw an exception if not found
    */
   public String getParam(final HttpServletRequest request, final String name)
       throws ServletException {
@@ -140,8 +139,8 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
   }
 
   /**
-   * Returns the param and parses it into an int. Will throw an exception if not
-   * found, or a parse error if the type is incorrect.
+   * Returns the param and parses it into an int. Will throw an exception if not found, or a parse
+   * error if the type is incorrect.
    */
   public int getIntParam(final HttpServletRequest request, final String name)
       throws ServletException {
@@ -190,8 +189,8 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
   }
 
   /**
-   * Sets an error message in azkaban.failure.message in the cookie. This will
-   * be used by the web client javascript to somehow display the message
+   * Sets an error message in azkaban.failure.message in the cookie. This will be used by the web
+   * client javascript to somehow display the message
    */
   protected void setErrorMessageInCookie(final HttpServletResponse response,
       final String errorMsg) {
@@ -201,8 +200,8 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
   }
 
   /**
-   * Sets a warning message in azkaban.warn.message in the cookie. This will
-   * be used by the web client javascript to somehow display the message
+   * Sets a warning message in azkaban.warn.message in the cookie. This will be used by the web
+   * client javascript to somehow display the message
    */
   protected void setWarnMessageInCookie(final HttpServletResponse response,
       final String errorMsg) {
@@ -212,8 +211,8 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
   }
 
   /**
-   * Sets a message in azkaban.success.message in the cookie. This will be used
-   * by the web client javascript to somehow display the message
+   * Sets a message in azkaban.success.message in the cookie. This will be used by the web client
+   * javascript to somehow display the message
    */
   protected void setSuccessMessageInCookie(final HttpServletResponse response,
       final String message) {
@@ -259,8 +258,8 @@ public abstract class AbstractAzkabanServlet extends HttpServlet {
   }
 
   /**
-   * Retrieves a cookie by name. Potential issue in performance if a lot of
-   * cookie variables are used.
+   * Retrieves a cookie by name. Potential issue in performance if a lot of cookie variables are
+   * used.
    */
   protected Cookie getCookieByName(final HttpServletRequest request, final String name) {
     final Cookie[] cookies = request.getCookies();
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/JMXHttpServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/JMXHttpServlet.java
index a172ab0..1ca04a2 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/JMXHttpServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/JMXHttpServlet.java
@@ -20,9 +20,6 @@ import azkaban.executor.ConnectorParams;
 import azkaban.executor.ExecutorManagerAdapter;
 import azkaban.server.session.Session;
 import azkaban.trigger.TriggerManager;
-import azkaban.user.Permission;
-import azkaban.user.Role;
-import azkaban.user.User;
 import azkaban.user.UserManager;
 import azkaban.webapp.AzkabanWebServer;
 import java.io.IOException;
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/LoginAbstractAzkabanServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/LoginAbstractAzkabanServlet.java
index 4fc1fe2..6b4b729 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/LoginAbstractAzkabanServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/LoginAbstractAzkabanServlet.java
@@ -47,8 +47,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.log4j.Logger;
 
 /**
- * Abstract Servlet that handles auto login when the session hasn't been
- * verified.
+ * Abstract Servlet that handles auto login when the session hasn't been verified.
  */
 public abstract class LoginAbstractAzkabanServlet extends
     AbstractAzkabanServlet {
@@ -346,16 +345,15 @@ public abstract class LoginAbstractAzkabanServlet extends
    * Disallows users from logging in by passing their username and password via the request header
    * where it'd be logged.
    *
-   * Example of illegal post request:
-   * curl -X POST http://localhost:8081/?action=login\&username=azkaban\&password=azkaban
+   * Example of illegal post request: curl -X POST http://localhost:8081/?action=login\&username=azkaban\&password=azkaban
    *
    * req.getParameterMap() or req.getParameterNames() cannot be used because they draw no
-   * distinction between the illegal request above and the following valid request:
-   * curl -X POST -d "action=login&username=azkaban&password=azkaban" http://localhost:8081/
+   * distinction between the illegal request above and the following valid request: curl -X POST -d
+   * "action=login&username=azkaban&password=azkaban" http://localhost:8081/
    *
    * "password=" is searched for because it leverages the query syntax to determine that the user is
-   * passing the password as a parameter name. There is no other ajax call that has a parameter
-   * that includes the string "password" at the end which could throw false positives.
+   * passing the password as a parameter name. There is no other ajax call that has a parameter that
+   * includes the string "password" at the end which could throw false positives.
    */
   private boolean isIllegalPostRequest(final HttpServletRequest req) {
     return (req.getQueryString() != null && req.getQueryString().contains("password="));
@@ -440,24 +438,21 @@ public abstract class LoginAbstractAzkabanServlet extends
   }
 
   /**
-   * The get request is handed off to the implementor after the user is logged
-   * in.
+   * The get request is handed off to the implementor after the user is logged in.
    */
   protected abstract void handleGet(HttpServletRequest req,
       HttpServletResponse resp, Session session) throws ServletException,
       IOException;
 
   /**
-   * The post request is handed off to the implementor after the user is logged
-   * in.
+   * The post request is handed off to the implementor after the user is logged in.
    */
   protected abstract void handlePost(HttpServletRequest req,
       HttpServletResponse resp, Session session) throws ServletException,
       IOException;
 
   /**
-   * The post request is handed off to the implementor after the user is logged
-   * in.
+   * The post request is handed off to the implementor after the user is logged in.
    */
   protected void handleMultiformPost(final HttpServletRequest req,
       final HttpServletResponse resp, final Map<String, Object> multipart, final Session session)
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/NoteServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/NoteServlet.java
index 10fdf13..460eb37 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/NoteServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/NoteServlet.java
@@ -33,11 +33,11 @@ import org.apache.log4j.Logger;
 public class NoteServlet extends LoginAbstractAzkabanServlet {
 
   private static final long serialVersionUID = 1L;
-  private static final Logger logger = Logger .getLogger(NoteServlet.class);
+  private static final Logger logger = Logger.getLogger(NoteServlet.class);
 
   public static String type = null;
   public static String message = null;
-  public static String url= null;
+  public static String url = null;
   private AzkabanWebServer server;
 
   @Override
@@ -49,25 +49,26 @@ public class NoteServlet extends LoginAbstractAzkabanServlet {
   @Override
   protected void handleGet(final HttpServletRequest req, final HttpServletResponse resp,
       final Session session) throws ServletException, IOException {
-    if(isAdmin(session.getUser())) {
+    if (isAdmin(session.getUser())) {
       handleNotePageLoad(req, resp, session);
-    } else  {
+    } else {
       warningNonAdminUsers(resp, "The requested user doesn't have admin permission");
     }
   }
 
-  private void warningNonAdminUsers(final HttpServletResponse resp, final String message) throws IOException {
+  private void warningNonAdminUsers(final HttpServletResponse resp, final String message)
+      throws IOException {
     final HashMap<String, Object> ret = new HashMap<>();
     ret.put("error", message);
     this.writeJSON(resp, ret);
   }
 
   private void handleNotePageLoad(final HttpServletRequest req,
-                                     final HttpServletResponse resp, final Session session) throws ServletException,
+      final HttpServletResponse resp, final Session session) throws ServletException,
       IOException {
 
     final Page page = newPage(req, resp, session,
-            "azkaban/webapp/servlet/velocity/notepage.vm");
+        "azkaban/webapp/servlet/velocity/notepage.vm");
 
     page.add("note_type", type);
     page.add("note_message", message);
@@ -77,7 +78,7 @@ public class NoteServlet extends LoginAbstractAzkabanServlet {
 
   @Override
   protected void handlePost(final HttpServletRequest req, final HttpServletResponse resp,
-                            final Session session) throws ServletException, IOException {
+      final Session session) throws ServletException, IOException {
     if (isAdmin(session.getUser()) && hasParam(req, "ajax")) {
       handleAJAXAction(req, resp, session);
     } else {
@@ -94,7 +95,7 @@ public class NoteServlet extends LoginAbstractAzkabanServlet {
     try {
       if (ajaxName.equals("addNote")) {
         ajaxAddNotes(req, ret);
-      } else if (ajaxName.equals("removeNote")){
+      } else if (ajaxName.equals("removeNote")) {
         ajaxRemoveNotes(ret);
       } else {
         ret.put("error", "Can not find the ajax operation");
@@ -106,9 +107,9 @@ public class NoteServlet extends LoginAbstractAzkabanServlet {
   }
 
   private void ajaxAddNotes(final HttpServletRequest req,
-                            final Map<String, Object> ret) throws ServletException {
+      final Map<String, Object> ret) throws ServletException {
     type = getParam(req, "type");
-    message= getParam(req, "message");
+    message = getParam(req, "message");
     url = getParam(req, "url");
     logger.info("receive note message. Type: " + type + " message: " + message + " url: " + url);
     ret.put("status", "success");
@@ -116,7 +117,7 @@ public class NoteServlet extends LoginAbstractAzkabanServlet {
 
   private void ajaxRemoveNotes(final Map<String, Object> ret) throws ServletException {
     type = null;
-    message= null;
+    message = null;
     url = null;
     logger.info("removing note from memory.");
     ret.put("status", "success");
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/PageUtils.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/PageUtils.java
index f3a7f51..4d2e14d 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/PageUtils.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/PageUtils.java
@@ -18,7 +18,8 @@ public final class PageUtils {
    * "lockdown.upload.projects" is set. The button is displayed for admin users and users with
    * upload permissions.
    */
-  public static void hideUploadButtonWhenNeeded(final Page page, final Session session, final UserManager userManager,
+  public static void hideUploadButtonWhenNeeded(final Page page, final Session session,
+      final UserManager userManager,
       final Boolean lockdownUploadProjects) {
     final User user = session.getUser();
 
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
index 4e05945..acaed57 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
@@ -526,8 +526,8 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
   }
 
   /**
-   * validate readiness of a project and user permission and use projectManager
-   * to purge the project if things looks good
+   * validate readiness of a project and user permission and use projectManager to purge the project
+   * if things looks good
    **/
   private void handlePurgeProject(final HttpServletRequest req,
       final HttpServletResponse resp, final Session session) throws ServletException,
@@ -1030,8 +1030,7 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
   }
 
   /**
-   * this only returns user permissions, but not group permissions and proxy
-   * users
+   * this only returns user permissions, but not group permissions and proxy users
    */
   private void ajaxGetPermissions(final Project project, final HashMap<String, Object> ret) {
     final ArrayList<HashMap<String, Object>> permissions =
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ProjectServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ProjectServlet.java
index 76cb901..1e4f680 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ProjectServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/ProjectServlet.java
@@ -105,12 +105,10 @@ public class ProjectServlet extends LoginAbstractAzkabanServlet {
   }
 
   /**
-   * We know the intention of API call is to return project ownership based on
-   * given user. <br>
-   * If user provides an user name, the method honors it <br>
-   * If user provides an empty user name, the user defaults to the session user<br>
-   * If user does not provide the user param, the user also defaults to the
-   * session user<br>
+   * We know the intention of API call is to return project ownership based on given user. <br> If
+   * user provides an user name, the method honors it <br> If user provides an empty user name, the
+   * user defaults to the session user<br> If user does not provide the user param, the user also
+   * defaults to the session user<br>
    */
   private void handleFetchUserProjects(final HttpServletRequest req, final Session session,
       final ProjectManager manager, final HashMap<String, Object> ret)
@@ -222,10 +220,10 @@ public class ProjectServlet extends LoginAbstractAzkabanServlet {
   }
 
   /**
-   * This class is used to represent a simplified project, which can be returned
-   * to end users via REST API. This is done in consideration that the API
-   * caller only wants certain project level information regarding a project,
-   * but does not want every flow and every job inside that project.
+   * This class is used to represent a simplified project, which can be returned to end users via
+   * REST API. This is done in consideration that the API caller only wants certain project level
+   * information regarding a project, but does not want every flow and every job inside that
+   * project.
    *
    * @author jyu
    */
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/StatsServlet.java b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/StatsServlet.java
index f3f0aa7..e6eac84 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/servlet/StatsServlet.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/servlet/StatsServlet.java
@@ -21,8 +21,6 @@ import azkaban.executor.Executor;
 import azkaban.executor.ExecutorManager;
 import azkaban.executor.ExecutorManagerException;
 import azkaban.server.session.Session;
-import azkaban.user.Permission;
-import azkaban.user.Role;
 import azkaban.user.User;
 import azkaban.user.UserManager;
 import azkaban.utils.Pair;
diff --git a/azkaban-web-server/src/main/java/azkaban/webapp/WebMetrics.java b/azkaban-web-server/src/main/java/azkaban/webapp/WebMetrics.java
index b22e428..01af3e9 100644
--- a/azkaban-web-server/src/main/java/azkaban/webapp/WebMetrics.java
+++ b/azkaban-web-server/src/main/java/azkaban/webapp/WebMetrics.java
@@ -24,8 +24,8 @@ import java.util.concurrent.atomic.AtomicLong;
 
 
 /**
- * This singleton class WebMetrics is in charge of collecting varieties of metrics
- * from azkaban-web-server modules.
+ * This singleton class WebMetrics is in charge of collecting varieties of metrics from
+ * azkaban-web-server modules.
  */
 @Singleton
 public class WebMetrics {
@@ -47,10 +47,9 @@ public class WebMetrics {
   /**
    * Mark the occurrence of a GET call
    *
-   * This method should be Thread Safe.
-   * Two reasons that we don't make this function call synchronized:
-   * 1). drop wizard metrics deals with concurrency internally;
-   * 2). mark is basically a math addition operation, which should not cause race condition issue.
+   * This method should be Thread Safe. Two reasons that we don't make this function call
+   * synchronized: 1). drop wizard metrics deals with concurrency internally; 2). mark is basically
+   * a math addition operation, which should not cause race condition issue.
    */
   public void markWebGetCall() {
     this.webGetCall.mark();
diff --git a/azkaban-web-server/src/main/less/azkaban.less b/azkaban-web-server/src/main/less/azkaban.less
index 0f13144..c33365e 100644
--- a/azkaban-web-server/src/main/less/azkaban.less
+++ b/azkaban-web-server/src/main/less/azkaban.less
@@ -1,16 +1,12 @@
 @import "variables.less";
 @import "non-responsive.less";
-
 @import "base.less";
 @import "off-canvas.less";
-
 @import "navbar.less";
 @import "header.less";
-
 @import "context-menu.less";
 @import "tables.less";
 @import "callout.less";
-
 @import "login.less";
 @import "project.less";
 @import "flow.less";
diff --git a/azkaban-web-server/src/main/less/context-menu.less b/azkaban-web-server/src/main/less/context-menu.less
index 47e3875..671ac6e 100644
--- a/azkaban-web-server/src/main/less/context-menu.less
+++ b/azkaban-web-server/src/main/less/context-menu.less
@@ -26,7 +26,7 @@
         background-position: -32px -16px;
         height: 16px;
         width: 16px;
-        float:right;
+        float: right;
       }
 
       &:hover {
diff --git a/azkaban-web-server/src/main/less/flow.less b/azkaban-web-server/src/main/less/flow.less
index 01e7386..d85d4eb 100644
--- a/azkaban-web-server/src/main/less/flow.less
+++ b/azkaban-web-server/src/main/less/flow.less
@@ -1,25 +1,25 @@
 #svgDiv {
-    height: 100%;
-    padding: 0px;
+  height: 100%;
+  padding: 0px;
 }
 
 #graphView {
-   -moz-user-select: none;
-   -khtml-user-select: none;
-   -webkit-user-select: none;
-   user-select: none;
+  -moz-user-select: none;
+  -khtml-user-select: none;
+  -webkit-user-select: none;
+  user-select: none;
 }
 
 #flow-graph {
-    width: 100%;
-    height: 100%;
+  width: 100%;
+  height: 100%;
 }
 
 #headertabs {
-   -moz-user-select: none;
-   -khtml-user-select: none;
-   -webkit-user-select: none;
-   user-select: none;
+  -moz-user-select: none;
+  -khtml-user-select: none;
+  -webkit-user-select: none;
+  user-select: none;
 }
 
 #flow-executing-graph {
@@ -34,7 +34,7 @@
   height: 24px;
   border-radius: 4px;
   -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
 }
 
 .flow-progress-bar {
@@ -42,9 +42,9 @@
   background-color: #ccc;
   border-radius: 5px;
   -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
   -webkit-transition: width 0.6s ease;
-          transition: width 0.6s ease;
+  transition: width 0.6s ease;
 
   &.attempt {
     opacity: 0.70;
@@ -73,7 +73,7 @@
     background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
     background-size: 40px 40px;
     -webkit-animation: progress-bar-stripes 2s linear infinite;
-            animation: progress-bar-stripes 2s linear infinite;
+    animation: progress-bar-stripes 2s linear infinite;
   }
 
   &.QUEUED {
@@ -89,7 +89,7 @@ td {
   > .listExpand {
     width: 16px;
     height: 16px;
-    float:right;
+    float: right;
     margin-top: 5px;
     font-size: 8pt;
   }
@@ -258,7 +258,7 @@ li.tree-list-item {
   }
 
   &.subFilter > a > .expandarrow {
-    color : #f19153;
+    color: #f19153;
   }
 
   > a {
@@ -346,11 +346,11 @@ li.tree-list-item {
   font-size: 12px;
   line-height: 1.5;
   border-radius: 3px;
-  
-    &:hover, &:focus {
-      color: #ffffff;
-      text-decoration: none;
-	  border-color: #39b3d7;
-	  background-color: #269abc;        
-    }    
+
+  &:hover, &:focus {
+    color: #ffffff;
+    text-decoration: none;
+    border-color: #39b3d7;
+    background-color: #269abc;
+  }
 }
diff --git a/azkaban-web-server/src/main/less/login.less b/azkaban-web-server/src/main/less/login.less
index 80dc4af..4533a79 100644
--- a/azkaban-web-server/src/main/less/login.less
+++ b/azkaban-web-server/src/main/less/login.less
@@ -10,8 +10,8 @@
     height: auto;
     padding: 10px;
     -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
 
     &:focus {
       z-index: 2;
diff --git a/azkaban-web-server/src/main/less/navbar.less b/azkaban-web-server/src/main/less/navbar.less
index 4878951..9cf9df4 100644
--- a/azkaban-web-server/src/main/less/navbar.less
+++ b/azkaban-web-server/src/main/less/navbar.less
@@ -32,7 +32,7 @@
     font-family: Helvetica, Arial, Sans-Serif;
     font-size: 118.75%;
     font-weight: bold;
-		line-height: 100%;
+    line-height: 100%;
   }
 
   .navbar-enviro-server {
diff --git a/azkaban-web-server/src/main/less/non-responsive.less b/azkaban-web-server/src/main/less/non-responsive.less
index 7fa282c..72b6a4f 100644
--- a/azkaban-web-server/src/main/less/non-responsive.less
+++ b/azkaban-web-server/src/main/less/non-responsive.less
@@ -32,6 +32,7 @@
 .navbar-toggle {
   display: none;
 }
+
 .navbar-collapse {
   border-top: 0;
 }
@@ -45,9 +46,11 @@
   float: left;
   margin: 0;
 }
+
 .navbar-nav > li {
   float: left;
 }
+
 .navbar-nav > li > a {
   padding: 15px;
 }
@@ -67,11 +70,13 @@
   border-width: 0 1px 1px;
   border-radius: 0 0 4px 4px;
   -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
 }
+
 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
   color: #333;
 }
+
 .navbar .navbar-nav .open .dropdown-menu > li > a:hover,
 .navbar .navbar-nav .open .dropdown-menu > li > a:focus,
 .navbar .navbar-nav .open .dropdown-menu > .active > a,
@@ -80,6 +85,7 @@
   color: #fff !important;
   background-color: #428bca !important;
 }
+
 .navbar .navbar-nav .open .dropdown-menu > .disabled > a,
 .navbar .navbar-nav .open .dropdown-menu > .disabled > a:hover,
 .navbar .navbar-nav .open .dropdown-menu > .disabled > a:focus {
diff --git a/azkaban-web-server/src/main/less/tables.less b/azkaban-web-server/src/main/less/tables.less
index 9b0d83d..1f0b465 100644
--- a/azkaban-web-server/src/main/less/tables.less
+++ b/azkaban-web-server/src/main/less/tables.less
@@ -127,7 +127,7 @@ table.table-properties {
       width: 30px;
     }
 
-     &.timeline {
+    &.timeline {
       width: 280px;
       padding: 0px 0px 0px 4px;
       height: 100%;
diff --git a/azkaban-web-server/src/main/less/variables.less b/azkaban-web-server/src/main/less/variables.less
index 078d2b2..ef0e827 100644
--- a/azkaban-web-server/src/main/less/variables.less
+++ b/azkaban-web-server/src/main/less/variables.less
@@ -1,4 +1,3 @@
-
 // Flow colors
 @flow-succeeded-color: #5cb85c;
 @flow-failed-color: #d9534f;
diff --git a/azkaban-web-server/src/main/tl/flowstats.tl b/azkaban-web-server/src/main/tl/flowstats.tl
index 5276ce8..e9b84de 100644
--- a/azkaban-web-server/src/main/tl/flowstats.tl
+++ b/azkaban-web-server/src/main/tl/flowstats.tl
@@ -1,155 +1,155 @@
-      {?histogram}
-      <div class="row">
-        <div class="col-xs-12">
-          <div class="well well-clear well-sm">
-            <div id="job-histogram"></div>
-          </div>
-        </div>
+{?histogram}
+  <div class="row">
+    <div class="col-xs-12">
+      <div class="well well-clear well-sm">
+        <div id="job-histogram"></div>
       </div>
-      {/histogram}
+    </div>
+  </div>
+{/histogram}
 
-      {?warnings}
-      <div class="alert alert-warning">
-        <h4>Warnings</h4>
-        <p>These stats may have reduced accuracy due to the following missing information:</p>
-        <ul>
-        {#warnings}
-          <li>{.}</li>
-        {/warnings}
-        </ul>
-      </div>
+{?warnings}
+  <div class="alert alert-warning">
+    <h4>Warnings</h4>
+    <p>These stats may have reduced accuracy due to the following missing information:</p>
+    <ul>
+      {#warnings}
+        <li>{.}</li>
       {/warnings}
+    </ul>
+  </div>
+{/warnings}
 
-      <div class="row">
-        <div class="col-xs-12">
-          <h4>Resources</h4>
-          <table class="table table-bordered table-condensed table-striped">
-            <thead>
-              <tr>
-                <th class="property-key">Resource</th>
-                <th class="property-key">Value</th>
-                <th>Job Name</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td class="property-key">Max Map Slots</td>
-                <td>{stats.mapSlots.max}</td>
-                <td>{stats.mapSlots.job}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Max Reduce Slots</td>
-                <td>{stats.reduceSlots.max}</td>
-                <td>{stats.reduceSlots.job}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Total Map Slots</td>
-                <td colspan="2">{stats.totalMapSlots}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Total Reduce Slots</td>
-                <td colspan="2">{stats.totalReduceSlots}</td>
-              </tr>
-            </tbody>
-          </table>
-        </div>
-      </div>
+<div class="row">
+  <div class="col-xs-12">
+    <h4>Resources</h4>
+    <table class="table table-bordered table-condensed table-striped">
+      <thead>
+      <tr>
+        <th class="property-key">Resource</th>
+        <th class="property-key">Value</th>
+        <th>Job Name</th>
+      </tr>
+      </thead>
+      <tbody>
+      <tr>
+        <td class="property-key">Max Map Slots</td>
+        <td>{stats.mapSlots.max}</td>
+        <td>{stats.mapSlots.job}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Max Reduce Slots</td>
+        <td>{stats.reduceSlots.max}</td>
+        <td>{stats.reduceSlots.job}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Total Map Slots</td>
+        <td colspan="2">{stats.totalMapSlots}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Total Reduce Slots</td>
+        <td colspan="2">{stats.totalReduceSlots}</td>
+      </tr>
+      </tbody>
+    </table>
+  </div>
+</div>
 
-      <div class="row">
-        <div class="col-xs-12">
-          <h4>Parameters</h4>
-          <table class="table table-bordered table-condensed table-striped">
-            <thead>
-              <tr>
-                <th class="property-key">Parameter</th>
-                <th class="property-key">Value</th>
-                <th>Job Name</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td class="property-key">Max <code>-Xmx</code></td>
-                <td>{stats.xmx.str}</td>
-                <td>{stats.xmx.job}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Max <code>-Xms</code></td>
-                {?stats.xms.set}
-                <td>
-                  {stats.xms.str}
-                </td>
-                <td>
-                  {stats.xms.job}
-                </td>
-                {:else}
-                <td colspan="2">
-                  Not set.
-                </td>
-                {/stats.xms.set}
-              </tr>
-              <tr>
-                <td class="property-key">Max <code>mapred.job.map.memory.mb</code></td>
-                <td>{stats.jobMapMemoryMb.max}</td>
-                <td>{stats.jobMapMemoryMb.job}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Max <code>mapred.job.reduce.memory.mb</code></td>
-                <td>{stats.jobReduceMemoryMb.max}</td>
-                <td>{stats.jobReduceMemoryMb.job}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Max Distributed Cache</td>
-                {?stats.distributedCache.using}
-                <td>
-                  {stats.distributedCache.max}
-                </td>
-                <td>
-                  {stats.distributedCache.job}
-                </td>
-                {:else}
-                <td colspan="2">
-                  Not used.
-                </td>
-                {/stats.distributedCache.using}
-              </tr>
-            </tbody>
-          </table>
-        </div>
-      </div>
+<div class="row">
+  <div class="col-xs-12">
+    <h4>Parameters</h4>
+    <table class="table table-bordered table-condensed table-striped">
+      <thead>
+      <tr>
+        <th class="property-key">Parameter</th>
+        <th class="property-key">Value</th>
+        <th>Job Name</th>
+      </tr>
+      </thead>
+      <tbody>
+      <tr>
+        <td class="property-key">Max <code>-Xmx</code></td>
+        <td>{stats.xmx.str}</td>
+        <td>{stats.xmx.job}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Max <code>-Xms</code></td>
+        {?stats.xms.set}
+          <td>
+            {stats.xms.str}
+          </td>
+          <td>
+            {stats.xms.job}
+          </td>
+        {:else}
+          <td colspan="2">
+            Not set.
+          </td>
+        {/stats.xms.set}
+      </tr>
+      <tr>
+        <td class="property-key">Max <code>mapred.job.map.memory.mb</code></td>
+        <td>{stats.jobMapMemoryMb.max}</td>
+        <td>{stats.jobMapMemoryMb.job}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Max <code>mapred.job.reduce.memory.mb</code></td>
+        <td>{stats.jobReduceMemoryMb.max}</td>
+        <td>{stats.jobReduceMemoryMb.job}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Max Distributed Cache</td>
+        {?stats.distributedCache.using}
+          <td>
+            {stats.distributedCache.max}
+          </td>
+          <td>
+            {stats.distributedCache.job}
+          </td>
+        {:else}
+          <td colspan="2">
+            Not used.
+          </td>
+        {/stats.distributedCache.using}
+      </tr>
+      </tbody>
+    </table>
+  </div>
+</div>
 
-      <div class="row">
-        <div class="col-xs-12">
-          <h4>Counters</h4>
-          <table class="table table-bordered table-condensed">
-            <thead>
-              <tr>
-                <th class="property-key">Parameter</th>
-                <th class="property-key">Value</th>
-                <th>Job Name</th>
-              </tr>
-            </thead>
-            <tbody>
-              <tr>
-                <td class="property-key">Max <code>FILE_BYTES_READ</code></td>
-                <td>{stats.fileBytesRead.max}</td>
-                <td>{stats.fileBytesRead.job}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Max <code>HDFS_BYTES_READ</code></td>
-                <td>{stats.hdfsBytesRead.max}</td>
-                <td>{stats.hdfsBytesRead.job}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Max <code>FILE_BYTES_WRITTEN</code></td>
-                <td>{stats.fileBytesWritten.max}</td>
-                <td>{stats.fileBytesWritten.job}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Max <code>HDFS_BYTES_WRITTEN</code></td>
-                <td>{stats.hdfsBytesWritten.max}</td>
-                <td>{stats.hdfsBytesWritten.job}</td>
-              </tr>
-            </tbody>
-          </table>
-        </div>
-      </div>
+<div class="row">
+  <div class="col-xs-12">
+    <h4>Counters</h4>
+    <table class="table table-bordered table-condensed">
+      <thead>
+      <tr>
+        <th class="property-key">Parameter</th>
+        <th class="property-key">Value</th>
+        <th>Job Name</th>
+      </tr>
+      </thead>
+      <tbody>
+      <tr>
+        <td class="property-key">Max <code>FILE_BYTES_READ</code></td>
+        <td>{stats.fileBytesRead.max}</td>
+        <td>{stats.fileBytesRead.job}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Max <code>HDFS_BYTES_READ</code></td>
+        <td>{stats.hdfsBytesRead.max}</td>
+        <td>{stats.hdfsBytesRead.job}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Max <code>FILE_BYTES_WRITTEN</code></td>
+        <td>{stats.fileBytesWritten.max}</td>
+        <td>{stats.fileBytesWritten.job}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Max <code>HDFS_BYTES_WRITTEN</code></td>
+        <td>{stats.hdfsBytesWritten.max}</td>
+        <td>{stats.hdfsBytesWritten.job}</td>
+      </tr>
+      </tbody>
+    </table>
+  </div>
+</div>
diff --git a/azkaban-web-server/src/main/tl/flowstats-no-data.tl b/azkaban-web-server/src/main/tl/flowstats-no-data.tl
index fe74240..acc04c6 100644
--- a/azkaban-web-server/src/main/tl/flowstats-no-data.tl
+++ b/azkaban-web-server/src/main/tl/flowstats-no-data.tl
@@ -1,8 +1,8 @@
-      <div class="row">
-        <div class="col-xs-12">
-          <div class="callout callout-default">
-            <h4>No Flow Stats Available</h4>
-            <p>{message}</p>
-          </div>
-        </div>
-      </div>
+<div class="row">
+  <div class="col-xs-12">
+    <div class="callout callout-default">
+      <h4>No Flow Stats Available</h4>
+      <p>{message}</p>
+    </div>
+  </div>
+</div>
diff --git a/azkaban-web-server/src/main/tl/flowsummary.tl b/azkaban-web-server/src/main/tl/flowsummary.tl
index 7632f72..74e40bd 100644
--- a/azkaban-web-server/src/main/tl/flowsummary.tl
+++ b/azkaban-web-server/src/main/tl/flowsummary.tl
@@ -1,84 +1,89 @@
-      <div class="row">
-        <div class="col-xs-12">
-          <table class="table table-bordered table-condensed">
-            <tbody>
-              <tr>
-                <td class="property-key">Project name</td>
-                <td>{projectName}</td>
-              </tr>
-              <tr>
-                <td class="property-key">Job Types Used</td>
-                <td>{#jobTypes}{.} {/jobTypes}</td>
-              </tr>
-            </tbody>
-          </table>
-        </div>
-      </div>
+<div class="row">
+  <div class="col-xs-12">
+    <table class="table table-bordered table-condensed">
+      <tbody>
+      <tr>
+        <td class="property-key">Project name</td>
+        <td>{projectName}</td>
+      </tr>
+      <tr>
+        <td class="property-key">Job Types Used</td>
+        <td>{#jobTypes}{.} {/jobTypes}</td>
+      </tr>
+      </tbody>
+    </table>
+  </div>
+</div>
 
-      <div class="row">
-        <div class="col-xs-12">
-          <h3>
-            Scheduling
-            {?schedule}
-            <div class="pull-right">
-              <button type="button" id="removeSchedBtn" class="btn btn-sm btn-danger" onclick="removeSched({schedule.scheduleId})" >Remove Schedule</button>
-            </div>
-            {/schedule}
-          </h3>
-          {?schedule}
-          <table class="table table-condensed table-bordered">
-            <tbody>
-              <tr>
-                <td class="property-key">Schedule ID</td>
-                <td class="property-value-half">{schedule.scheduleId}</td>
-                <td class="property-key">Submitted By</td>
-                <td class="property-value-half">{schedule.submitUser}</td>
-              </tr>
-              <tr>
-                <td class="property-key">First Scheduled to Run</td>
-                <td class="property-value-half">{schedule.firstSchedTime}</td>
+<div class="row">
+  <div class="col-xs-12">
+    <h3>
+      Scheduling
+      {?schedule}
+        <div class="pull-right">
+          <button type="button" id="removeSchedBtn" class="btn btn-sm btn-danger"
+                  onclick="removeSched({schedule.scheduleId})">Remove Schedule
+          </button>
+        </div>
+      {/schedule}
+    </h3>
+    {?schedule}
+      <table class="table table-condensed table-bordered">
+        <tbody>
+        <tr>
+          <td class="property-key">Schedule ID</td>
+          <td class="property-value-half">{schedule.scheduleId}</td>
+          <td class="property-key">Submitted By</td>
+          <td class="property-value-half">{schedule.submitUser}</td>
+        </tr>
+        <tr>
+          <td class="property-key">First Scheduled to Run</td>
+          <td class="property-value-half">{schedule.firstSchedTime}</td>
 
-                <td class="property-key">
-                  {?schedule.cronExpression}
-                  Cron Expression
-                  {:else}
-                  Repeats Every
-                  {/schedule.cronExpression}
-                </td>
+          <td class="property-key">
+            {?schedule.cronExpression}
+              Cron Expression
+            {:else}
+              Repeats Every
+            {/schedule.cronExpression}
+          </td>
 
-                <td class="property-value-half">
-                  {?schedule.cronExpression}
-                    {schedule.cronExpression}
-                  {:else}
-                    {schedule.period}
-                  {/schedule.cronExpression}
-                </td>
+          <td class="property-value-half">
+            {?schedule.cronExpression}
+              {schedule.cronExpression}
+            {:else}
+              {schedule.period}
+            {/schedule.cronExpression}
+          </td>
 
-              </tr>
-              <tr>
-                <td class="property-key">Next Execution Time</td>
-                <td class="property-value-half">{schedule.nextExecTime}</td>
-                <td class="property-key">SLA</td>
-                <td class="property-value-half">
-                {?schedule.slaOptions}
-                  true
-                {:else}
-                  false
-                {/schedule.slaOptions}
-                  <div class="pull-right">
-                    <button type="button" id="addSlaBtn" class="btn btn-xs btn-primary" onclick="slaView.initFromSched({schedule.scheduleId}, '{flowName}')" >View/Set SLA</button>
-                  </div>
-                </td>
-              </tr>
-            </tbody>
-          </table>
-          {:else}
-            <div class="callout callout-default">
-              <h4>None</h4>
-              <p>This flow has not been scheduled.</p>
+        </tr>
+        <tr>
+          <td class="property-key">Next Execution Time</td>
+          <td class="property-value-half">{schedule.nextExecTime}</td>
+          <td class="property-key">SLA</td>
+          <td class="property-value-half">
+            {?schedule.slaOptions}
+              true
+            {:else}
+              false
+            {/schedule.slaOptions}
+            <div class="pull-right">
+              <button type="button" id="addSlaBtn" class="btn btn-xs btn-primary"
+                      onclick="slaView.initFromSched({schedule.scheduleId}, '{flowName}')">View/Set
+                SLA
+              </button>
             </div>
-          {/schedule}
-
-          <h3>Last Run Stats</h3>
-        </div>
+          </td>
+        </tr>
+        </tbody>
+      </table>
+    {:else}
+      <div class="callout callout-default">
+        <h4>None</h4>
+        <p>This flow has not been scheduled.</p>
       </div>
+    {/schedule}
+
+    <h3>Last Run Stats</h3>
+  </div>
+</div>
diff --git a/azkaban-web-server/src/restli/schemas/azkaban/restli/user/User.pdsc b/azkaban-web-server/src/restli/schemas/azkaban/restli/user/User.pdsc
index 156b380..ee534ad 100644
--- a/azkaban-web-server/src/restli/schemas/azkaban/restli/user/User.pdsc
+++ b/azkaban-web-server/src/restli/schemas/azkaban/restli/user/User.pdsc
@@ -4,7 +4,15 @@
   "namespace": "azkaban.restli.user",
   "doc": "Azkaban User restli info",
   "fields": [
-    {"name": "userId", "type": "string","doc": "The username this session"},
-    {"name": "email", "type": "string","doc": "User email"}
+    {
+      "name": "userId",
+      "type": "string",
+      "doc": "The username this session"
+    },
+    {
+      "name": "email",
+      "type": "string",
+      "doc": "User email"
+    }
   ]
-}
\ No newline at end of file
+}
diff --git a/azkaban-web-server/src/test/expected/project-side-bar.html b/azkaban-web-server/src/test/expected/project-side-bar.html
index 904cadc..ca405a3 100644
--- a/azkaban-web-server/src/test/expected/project-side-bar.html
+++ b/azkaban-web-server/src/test/expected/project-side-bar.html
@@ -1,25 +1,26 @@
 <html>
 
 
-          <div class="well" id="project-sidebar">
-            <h3>test_project</h3>
-            <p class="editable" id="project-description">&lt;script&gt;window.alert(&quot;hacked&quot;)&lt;/script&gt;</p>
-            <div id="project-description-form" class="editable-form">
-              <div class="input-group">
-                <input type="text" class="form-control input-sm" id="project-description-edit" placeholder="Project description">
-                <span class="input-group-btn">
+<div class="well" id="project-sidebar">
+  <h3>test_project</h3>
+  <p class="editable" id="project-description">&lt;script&gt;window.alert(&quot;hacked&quot;)&lt;/script&gt;</p>
+  <div id="project-description-form" class="editable-form">
+    <div class="input-group">
+      <input type="text" class="form-control input-sm" id="project-description-edit"
+             placeholder="Project description">
+      <span class="input-group-btn">
                   <button class="btn btn-primary btn-sm" type="button" id="project-description-btn">Save</button>
                 </span>
-              </div>
-            </div>
-            <hr>
-            <p><strong>Created on</strong> 1999-06-07 08:09:10</p>
-            <p><strong>Last modified by</strong> 2000-01-02 03:04:05</p>
-            <p><strong>Modified by</strong> last_modified_user_name</p>
+    </div>
+  </div>
+  <hr>
+  <p><strong>Created on</strong> 1999-06-07 08:09:10</p>
+  <p><strong>Last modified by</strong> 2000-01-02 03:04:05</p>
+  <p><strong>Modified by</strong> last_modified_user_name</p>
 
-            <hr>
+  <hr>
 
-            <p><strong>Project admins:</strong> admin_name</p>
-            <p><strong>Your Permissions:</strong> admin_permission</p>
-          </div>
+  <p><strong>Project admins:</strong> admin_name</p>
+  <p><strong>Your Permissions:</strong> admin_permission</p>
+</div>
 </html>
diff --git a/azkaban-web-server/src/test/java/azkaban/fixture/FileAssertion.java b/azkaban-web-server/src/test/java/azkaban/fixture/FileAssertion.java
index f71eeac..6896743 100644
--- a/azkaban-web-server/src/test/java/azkaban/fixture/FileAssertion.java
+++ b/azkaban-web-server/src/test/java/azkaban/fixture/FileAssertion.java
@@ -33,8 +33,8 @@ public class FileAssertion {
   /**
    * Return the html based content surrounded with the HTML tag.
    *
-   * This is useful to compare a fragment of HTML content with a proper expected HTML file
-   * so that the expected file can be viewed more easily with a browser.
+   * This is useful to compare a fragment of HTML content with a proper expected HTML file so that
+   * the expected file can be viewed more easily with a browser.
    *
    * @param content the content
    * @return string
diff --git a/azkaban-web-server/src/test/java/azkaban/fixture/VelocityTemplateTestUtil.java b/azkaban-web-server/src/test/java/azkaban/fixture/VelocityTemplateTestUtil.java
index afd8465..25f45be 100644
--- a/azkaban-web-server/src/test/java/azkaban/fixture/VelocityTemplateTestUtil.java
+++ b/azkaban-web-server/src/test/java/azkaban/fixture/VelocityTemplateTestUtil.java
@@ -29,7 +29,6 @@ public class VelocityTemplateTestUtil {
   }
 
   /**
-   *
    * @param source the rendered template as a String
    * @param target the String fragment within the template
    * @return - boolean
diff --git a/azkaban-web-server/src/test/java/azkaban/restli/DeployProjectTest.java b/azkaban-web-server/src/test/java/azkaban/restli/DeployProjectTest.java
index 8d5abe4..1add124 100644
--- a/azkaban-web-server/src/test/java/azkaban/restli/DeployProjectTest.java
+++ b/azkaban-web-server/src/test/java/azkaban/restli/DeployProjectTest.java
@@ -25,14 +25,13 @@ import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
-import org.junit.Test;
 import org.junit.Assert;
+import org.junit.Test;
 
 /**
- * Test response to deploy with either warn or error reports.
- * If a report has any errors, a RestLiServiceException should be thrown.
- * Warnings should not elicit an exception.
- * If an exception does get raised, it should carry an HTTP 400 status
+ * Test response to deploy with either warn or error reports. If a report has any errors, a
+ * RestLiServiceException should be thrown. Warnings should not elicit an exception. If an exception
+ * does get raised, it should carry an HTTP 400 status
  */
 
 public class DeployProjectTest {
diff --git a/azkaban-web-server/src/test/java/azkaban/webapp/servlet/ExecutionFlowViewTest.java b/azkaban-web-server/src/test/java/azkaban/webapp/servlet/ExecutionFlowViewTest.java
index 2771c33..e6aa9fc 100644
--- a/azkaban-web-server/src/test/java/azkaban/webapp/servlet/ExecutionFlowViewTest.java
+++ b/azkaban-web-server/src/test/java/azkaban/webapp/servlet/ExecutionFlowViewTest.java
@@ -18,8 +18,7 @@ public class ExecutionFlowViewTest {
           + "title=\"Analyze job in Dr. Elephant\">Dr. Elephant</a></li>";
 
   /**
-   * Test aims to check that the external analyzer button is displayed
-   * in the page.
+   * Test aims to check that the external analyzer button is displayed in the page.
    *
    * @throws Exception the exception
    */
diff --git a/azkaban-web-server/src/test/java/azkaban/webapp/servlet/LoginAbstractAzkabanServletTest.java b/azkaban-web-server/src/test/java/azkaban/webapp/servlet/LoginAbstractAzkabanServletTest.java
index d50de73..8837ce9 100644
--- a/azkaban-web-server/src/test/java/azkaban/webapp/servlet/LoginAbstractAzkabanServletTest.java
+++ b/azkaban-web-server/src/test/java/azkaban/webapp/servlet/LoginAbstractAzkabanServletTest.java
@@ -185,8 +185,8 @@ public class LoginAbstractAzkabanServletTest {
   }
 
   /**
-   * Simulates users passing username/password via URI
-   * where it would be logged by Azkaban Web Server
+   * Simulates users passing username/password via URI where it would be logged by Azkaban Web
+   * Server
    */
   @Test
   public void testLoginRevealingCredentialsShouldThrowFailure() throws Exception {
diff --git a/azkaban-web-server/src/test/java/azkaban/webapp/servlet/PageUtilsTest.java b/azkaban-web-server/src/test/java/azkaban/webapp/servlet/PageUtilsTest.java
index 94c1f5b..d8eea82 100644
--- a/azkaban-web-server/src/test/java/azkaban/webapp/servlet/PageUtilsTest.java
+++ b/azkaban-web-server/src/test/java/azkaban/webapp/servlet/PageUtilsTest.java
@@ -19,10 +19,11 @@ import org.junit.Test;
 
 
 public class PageUtilsTest {
+
   @Test
   public void testUploadButtonisHiddenWhenGlobalPropertyIsSet()
       throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException,
-             ClassNotFoundException, InstantiationException, IOException {
+      ClassNotFoundException, InstantiationException, IOException {
     final HttpServletRequest httpServletRequest = mock(HttpServletRequest.class);
     final HttpServletResponse httpServletResponse = mock(HttpServletResponse.class);
     final User user = TestUtils.getTestUser();
diff --git a/azkaban-web-server/src/test/java/azkaban/webapp/servlet/ProjectPageHeaderTest.java b/azkaban-web-server/src/test/java/azkaban/webapp/servlet/ProjectPageHeaderTest.java
index e4e8cbf..9a1799b 100644
--- a/azkaban-web-server/src/test/java/azkaban/webapp/servlet/ProjectPageHeaderTest.java
+++ b/azkaban-web-server/src/test/java/azkaban/webapp/servlet/ProjectPageHeaderTest.java
@@ -11,6 +11,7 @@ import org.junit.Test;
  * Test validates the enable/disable feature of the 'Upload' button
  */
 public class ProjectPageHeaderTest {
+
   private static final String UPLOAD_BUTTON
       = "<button id=\"project-upload-btn\" class=\"btn btn-sm btn-primary\">"
       + "<span class=\"glyphicon glyphicon-upload\"></span> Upload </button>";
diff --git a/azkaban-web-server/src/test/resources/azkaban-users.xml b/azkaban-web-server/src/test/resources/azkaban-users.xml
index a13035d..0df8fd1 100644
--- a/azkaban-web-server/src/test/resources/azkaban-users.xml
+++ b/azkaban-web-server/src/test/resources/azkaban-users.xml
@@ -1,7 +1,7 @@
 <azkaban-users>
-	<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
-	<user username="metrics" password="metrics" roles="metrics"/>
+  <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
+  <user password="metrics" roles="metrics" username="metrics"/>
 
-	<role name="admin" permissions="ADMIN" />
-	<role name="metrics" permissions="METRICS"/>
+  <role name="admin" permissions="ADMIN"/>
+  <role name="metrics" permissions="METRICS"/>
 </azkaban-users>
diff --git a/azkaban-web-server/src/test/resources/log4j.properties b/azkaban-web-server/src/test/resources/log4j.properties
index 182c9a1..8d0943f 100644
--- a/azkaban-web-server/src/test/resources/log4j.properties
+++ b/azkaban-web-server/src/test/resources/log4j.properties
@@ -1,7 +1,5 @@
 log4j.rootLogger=INFO, Console
-
 log4j.appender.Console=org.apache.log4j.ConsoleAppender
 log4j.appender.Console.layout=org.apache.log4j.PatternLayout
 log4j.appender.Console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] %m%n
-
-log4j.category.velocity=INFO
\ No newline at end of file
+log4j.category.velocity=INFO
diff --git a/azkaban-web-server/src/test/resources/velocity.properties b/azkaban-web-server/src/test/resources/velocity.properties
index 0d16fe7..0eb08bf 100644
--- a/azkaban-web-server/src/test/resources/velocity.properties
+++ b/azkaban-web-server/src/test/resources/velocity.properties
@@ -1,7 +1,6 @@
-resource.loader = file
-
-file.resource.loader.description = Velocity File Resource Loader
-file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
-file.resource.loader.path = src/main/resources/
-file.resource.loader.cache = true
-file.resource.loader.modificationCheckInterval = 10
+resource.loader=file
+file.resource.loader.description=Velocity File Resource Loader
+file.resource.loader.class=org.apache.velocity.runtime.resource.loader.FileResourceLoader
+file.resource.loader.path=src/main/resources/
+file.resource.loader.cache=true
+file.resource.loader.modificationCheckInterval=10