Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/main/java/org/jboss/jws/diag/common/Severity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.jboss.jws.diag.common;

public enum Severity {
ERROR,
WARN,
INFO
}
10 changes: 10 additions & 0 deletions src/main/java/org/jboss/jws/diag/validate/Rule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.jboss.jws.diag.validate;

import org.jboss.jws.diag.validate.model.Finding;

import java.util.List;

public interface Rule {

List<Finding> evaluate(RuleContext context);
}
15 changes: 15 additions & 0 deletions src/main/java/org/jboss/jws/diag/validate/RuleContext.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.jboss.jws.diag.validate;

import java.nio.file.Path;

public final class RuleContext {
private final Path catalinaBase;

public RuleContext(Path catalinaBase) {
this.catalinaBase = catalinaBase;
}

public Path getCatalinaBase() {
return catalinaBase;
}
}
25 changes: 23 additions & 2 deletions src/main/java/org/jboss/jws/diag/validate/ValidateCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,14 @@

import org.jboss.jws.diag.common.ExitCodes;
import org.jboss.jws.diag.common.OutputFormatMixin;
import org.jboss.jws.diag.common.Severity;
import org.jboss.jws.diag.validate.model.Finding;
import picocli.CommandLine.Command;
import picocli.CommandLine.Mixin;

import java.util.ArrayList;
import java.util.List;

@Command(name = "validate",
description = "Run diagnostic rules against configuration and report findings (INFO/WARN/ERROR)",
mixinStandardHelpOptions = true)
Expand All @@ -15,7 +20,23 @@ public class ValidateCommand implements Runnable {

@Override
public void run() {
System.out.println("jws-diag validate: not yet implemented");
System.exit(ExitCodes.OK);
List<Finding> findings = new ArrayList<>();

int exitCode = determineExitCode(findings);
System.exit(exitCode);
}

public int determineExitCode(List<Finding> findings) {
int highestCode = ExitCodes.OK;

for (Finding finding : findings) {
if (finding.getSeverity() == Severity.ERROR) {
highestCode = ExitCodes.ERRORS;
} else if (finding.getSeverity() == Severity.WARN && highestCode < ExitCodes.ERRORS) {
highestCode = ExitCodes.WARNINGS;
}
}

return highestCode;
}
}
109 changes: 109 additions & 0 deletions src/main/java/org/jboss/jws/diag/validate/model/Finding.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package org.jboss.jws.diag.validate.model;

import org.jboss.jws.diag.common.Severity;
import com.fasterxml.jackson.annotation.JsonInclude;

@JsonInclude(JsonInclude.Include.NON_NULL)
public final class Finding {

private final String ruleId;
private final String category;
private final Severity severity;
private final String summary;
private final String detail;
private final String file;
private final String fix;

private Finding(Builder builder) {
this.ruleId = builder.ruleId;
this.category = builder.category;
this.severity = builder.severity;
this.summary = builder.summary;
this.detail = builder.detail;
this.file = builder.file;
this.fix = builder.fix;
}

public static Builder builder() {
return new Builder();
}

public static final class Builder {

private String ruleId;
private String category;
private Severity severity;
private String summary;
private String detail;
private String file;
private String fix;

public Builder ruleId(String ruleId) {
this.ruleId = ruleId;
return this;
}
public Builder category(String category) {
this.category = category;
return this;
}
public Builder severity(Severity severity) {
this.severity = severity;
return this;
}
public Builder summary(String summary) {
this.summary = summary;
return this;
}
public Builder detail(String detail) {
this.detail = detail;
return this;
}
public Builder file(String file) {
this.file = file;
return this;
}
public Builder fix(String fix) {
this.fix = fix;
return this;
}

public Finding build() {
return new Finding(this);
}
}

public String getRuleId() {
return ruleId;
}
public String getCategory() {
return category;
}
public Severity getSeverity() {
return severity;
}
public String getSummary() {
return summary;
}
public String getDetail() {
return detail;
}
public String getFile() {
return file;
}
public String getFix() {
return fix;
}

@Override
public String toString() {
Comment thread
milansamuel609 marked this conversation as resolved.
return "Finding{" +
"ruleId='" + ruleId + '\'' +
", category='" + category + '\'' +
", severity='" + severity + '\'' +
", summary='" + summary + '\'' +
", detail='" + detail + '\'' +
", file='" + file + '\'' +
", fix='" + fix + '\'' +
'}';
}
}
Loading