diff --git a/azkaban-common/src/main/java/azkaban/project/validator/ValidationReport.java b/azkaban-common/src/main/java/azkaban/project/validator/ValidationReport.java
index 9cccffb..7e6bc8d 100644
--- a/azkaban-common/src/main/java/azkaban/project/validator/ValidationReport.java
+++ b/azkaban-common/src/main/java/azkaban/project/validator/ValidationReport.java
@@ -7,32 +7,43 @@ import java.util.Set;
* The result of a project validation generated by a {@link ProjectValidator}. It contains
* an enum of type {@link ValidationStatus} representing whether the validation passes,
* generates warnings, or generates errors. Accordingly, three sets of String are also
- * maintained, storing the messages generated by the {@link ProjectValidator} at each of
- * the 3 {@link ValidationStatus} levels, i.e., {@link ValidationStatus#PASS},
- * {@link ValidationStatus#WARN}, and {@link ValidationStatus#ERROR}.
+ * maintained, storing the messages generated by the {@link ProjectValidator} at both
+ * {@link ValidationStatus#WARN} and {@link ValidationStatus#ERROR} level, as well as
+ * information messages associated with both levels.
*/
public class ValidationReport {
protected ValidationStatus _status;
- protected Set<String> _passMsgs;
+ protected Set<String> _infoMsgs;
protected Set<String> _warningMsgs;
protected Set<String> _errorMsgs;
public ValidationReport() {
_status = ValidationStatus.PASS;
- _passMsgs = new HashSet<String>();
+ _infoMsgs = new HashSet<String>();
_warningMsgs = new HashSet<String>();
_errorMsgs = new HashSet<String>();
}
/**
- * Add a message with status level being {@link ValidationStatus#PASS}
+ * Add an information message associated with warning messages
*
* @param msgs
*/
- public void addPassMsgs(Set<String> msgs) {
- if (msgs != null) {
- _passMsgs.addAll(msgs);
+ public void addWarnLevelInfoMsg(String msg) {
+ if (msg != null) {
+ _infoMsgs.add("WARN" + msg);
+ }
+ }
+
+ /**
+ * Add an information message associated with error messages
+ *
+ * @param msgs
+ */
+ public void addErrorLevelInfoMsg(String msg) {
+ if (msg != null) {
+ _infoMsgs.add("ERROR" + msg);
}
}
@@ -74,12 +85,12 @@ public class ValidationReport {
}
/**
- * Retrieve the messages associated with status level {@link ValidationStatus#PASS}
+ * Retrieve the list of information messages associated with status level {@link ValidationStatus#PASS}
*
* @return
*/
- public Set<String> getPassMsgs() {
- return _passMsgs;
+ public Set<String> getInfoMsgs() {
+ return _infoMsgs;
}
/**
@@ -100,4 +111,35 @@ public class ValidationReport {
return _errorMsgs;
}
+ /**
+ * Return the severity level this information message is associated with.
+ *
+ * @param msg
+ * @return
+ */
+ public static ValidationStatus getInfoMsgLevel(String msg) {
+ if (msg.startsWith("ERROR")) {
+ return ValidationStatus.ERROR;
+ }
+ if (msg.startsWith("WARN")) {
+ return ValidationStatus.WARN;
+ }
+ return ValidationStatus.PASS;
+ }
+
+ /**
+ * Get the raw information message.
+ *
+ * @param msg
+ * @return
+ */
+ public static String getInfoMsg(String msg) {
+ if (msg.startsWith("ERROR")) {
+ return msg.replaceFirst("ERROR", "");
+ }
+ if (msg.startsWith("WARN")) {
+ return msg.replaceFirst("WARN", "");
+ }
+ return msg;
+ }
}
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 0997597..60efa24 100644
--- a/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
+++ b/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
@@ -1586,12 +1586,17 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
StringBuffer warnMsgs = new StringBuffer();
for (Entry<String, ValidationReport> reportEntry : reports.entrySet()) {
ValidationReport report = reportEntry.getValue();
- if (!report.getPassMsgs().isEmpty()) {
- for (String msg : report.getPassMsgs()) {
- if (msg.startsWith("ERROR")) {
- errorMsgs.append(msg.replaceFirst("ERROR", "") + "<br/>");
- } else if (msg.startsWith("WARN")) {
- warnMsgs.append(msg.replaceFirst("WARN", "") + "<br/>");
+ if (!report.getInfoMsgs().isEmpty()) {
+ for (String msg : report.getInfoMsgs()) {
+ switch (ValidationReport.getInfoMsgLevel(msg)) {
+ case ERROR:
+ errorMsgs.append(ValidationReport.getInfoMsg(msg) + "<br/>");
+ break;
+ case WARN:
+ warnMsgs.append(ValidationReport.getInfoMsg(msg) + "<br/>");
+ break;
+ default:
+ break;
}
}
}