Details
diff --git a/azkaban-common/src/main/java/azkaban/project/ProjectManager.java b/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
index a4fa578..17865bb 100644
--- a/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
+++ b/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
@@ -354,7 +354,7 @@ public class ProjectManager {
}
public Map<String, ValidationReport> uploadProject(Project project, File archive, String fileType,
- User uploader, Props additionalProp) throws ProjectManagerException {
+ User uploader, Props additionalProps) throws ProjectManagerException {
logger.info("Uploading files to " + project.getName());
// Unzip.
@@ -378,7 +378,7 @@ public class ProjectManager {
// key, it is necessary to create a new instance of Props to make sure these different
// values are isolated from each other.
Props prop = new Props(props);
- prop.putAll(additionalProp);
+ prop.putAll(additionalProps);
prop.put(ValidatorConfigs.PROJECT_ARCHIVE_FILE_PATH, archive.getAbsolutePath());
// Basically, we want to make sure that for different invocations to the uploadProject method,
// the validators are using different values for the PROJECT_ARCHIVE_FILE_PATH configuration key.
diff --git a/azkaban-common/src/main/java/azkaban/project/validator/ValidatorConfigs.java b/azkaban-common/src/main/java/azkaban/project/validator/ValidatorConfigs.java
index add2d05..56beb00 100644
--- a/azkaban-common/src/main/java/azkaban/project/validator/ValidatorConfigs.java
+++ b/azkaban-common/src/main/java/azkaban/project/validator/ValidatorConfigs.java
@@ -2,6 +2,8 @@ package azkaban.project.validator;
public class ValidatorConfigs {
+ private ValidatorConfigs() {} // Prevents instantiation
+
/** Key for the config param specifying the directory containing validator JAR files **/
public static final String VALIDATOR_PLUGIN_DIR = "project.validators.dir";
diff --git a/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java b/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
index cc2056a..3f00b92 100644
--- a/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
+++ b/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
@@ -1423,11 +1423,11 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
String projectName = (String) multipart.get("project");
Project project = projectManager.getProject(projectName);
String autoFix = (String) multipart.get("fix");
- Props prop = new Props();
- if (autoFix == null) {
- prop.put(ValidatorConfigs.CUSTOM_AUTO_FIX_FLAG_PARAM, "false");
- } else if (autoFix.equals("on")) {
- prop.put(ValidatorConfigs.CUSTOM_AUTO_FIX_FLAG_PARAM, "true");
+ Props props = new Props();
+ if (autoFix.equals("on")) {
+ props.put(ValidatorConfigs.CUSTOM_AUTO_FIX_FLAG_PARAM, "true");
+ } else {
+ props.put(ValidatorConfigs.CUSTOM_AUTO_FIX_FLAG_PARAM, "false");
}
if (projectName == null || projectName.isEmpty()) {
@@ -1468,7 +1468,7 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
out.close();
Map<String, ValidationReport> reports = projectManager.uploadProject(
- project, archiveFile, type, user, prop);
+ project, archiveFile, type, user, props);
StringBuffer message = new StringBuffer();
for (Entry<String, ValidationReport> reportEntry : reports.entrySet()) {
ValidationReport report = reportEntry.getValue();
diff --git a/azkaban-webserver/src/main/resources/azkaban/webapp/servlet/velocity/projectmodals.vm b/azkaban-webserver/src/main/resources/azkaban/webapp/servlet/velocity/projectmodals.vm
index 08331f3..3977134 100644
--- a/azkaban-webserver/src/main/resources/azkaban/webapp/servlet/velocity/projectmodals.vm
+++ b/azkaban-webserver/src/main/resources/azkaban/webapp/servlet/velocity/projectmodals.vm
@@ -33,19 +33,22 @@
<input type="file" class="form-control" id="file" name="file">
</div>
</div>
- </fieldset>
- #if ($validatorFixPrompt.booleanValue())
- <fieldset class="form-horizontal">
+ #if ($validatorFixPrompt.booleanValue())
<div class="form-group">
<label for="fix" class="col-sm-3 control-label">
- $validatorFixLabel.toString()<a href=$validatorFixLink.toString() target="_blank">?</a>
+ $validatorFixLabel.toString()
+ <a href=$validatorFixLink.toString() target="_blank">
+ <span class="ui-icon ui-icon-info" style="display:inline-block;"></span>
+ </a>
</label>
- <div class="col-sm-9">
- <input type="checkbox" class="form-control" id="fix" name="fix" checked>
+ <div class="col-sm-3">
+ <div class="checkbox">
+ <input type="checkbox" id="fix" name="fix" checked="checked">
+ </div>
</div>
</div>
- </fieldset>
- #end
+ #end
+ </fieldset>
</div>
<div class="modal-footer">
<input type="hidden" name="project" value="$project.name">
diff --git a/azkaban-webserver/src/main/resources/azkaban/webapp/servlet/velocity/projectpage.vm b/azkaban-webserver/src/main/resources/azkaban/webapp/servlet/velocity/projectpage.vm
index 360c9db..29f95f0 100644
--- a/azkaban-webserver/src/main/resources/azkaban/webapp/servlet/velocity/projectpage.vm
+++ b/azkaban-webserver/src/main/resources/azkaban/webapp/servlet/velocity/projectpage.vm
@@ -26,6 +26,7 @@
<script type="text/javascript" src="${context}/js/azkaban/view/flow-execute-dialog.js"></script>
<script type="text/javascript" src="${context}/js/azkaban/view/project.js"></script>
<script type="text/javascript" src="${context}/js/azkaban/view/project-modals.js"></script>
+ <link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script type="text/javascript">
var contextURL = "${context}";
var currentTime = ${currentTime};
diff --git a/azkaban-webserver/src/restli/java/azkaban/restli/ProjectManagerResource.java b/azkaban-webserver/src/restli/java/azkaban/restli/ProjectManagerResource.java
index cce43d0..0c48564 100644
--- a/azkaban-webserver/src/restli/java/azkaban/restli/ProjectManagerResource.java
+++ b/azkaban-webserver/src/restli/java/azkaban/restli/ProjectManagerResource.java
@@ -97,10 +97,10 @@ public class ProjectManagerResource extends ResourceContextHolder {
// complete.
logger.info("Downloading package from " + packageUrl);
FileUtils.copyURLToFile(url, archiveFile);
- Props prop = new Props();
+ Props props = new Props();
logger.info("Downloaded to " + archiveFile.toString());
- projectManager.uploadProject(project, archiveFile, "zip", user, prop);
+ projectManager.uploadProject(project, archiveFile, "zip", user, props);
} catch (IOException e) {
String errorMsg =
"Download of URL " + packageUrl + " to " + archiveFile.toString()