Skip to content

Commit ad033a2

Browse files
Fix Sonar
1 parent b63e1fb commit ad033a2

File tree

4 files changed

+33
-20
lines changed

4 files changed

+33
-20
lines changed

src/main/java/io/github/computerdaddyguy/jfiletreeprettyprinter/cli/exception/DefaultExecutionExceptionHandler.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.github.computerdaddyguy.jfiletreeprettyprinter.cli.io.ConsoleOutput;
44
import jakarta.validation.ConstraintViolationException;
55
import java.util.Objects;
6+
import java.util.stream.Collectors;
67
import org.jspecify.annotations.NullMarked;
78
import picocli.CommandLine;
89
import picocli.CommandLine.IExecutionExceptionHandler;
@@ -28,12 +29,16 @@ public int handleExecutionException(Exception ex, CommandLine commandLine, Parse
2829

2930
private int handleExternalOptionsException(ExternalOptionsException e) {
3031
output.printError(e.getMessage() + ": " + e.getOptionsPath().toString());
31-
e.printStackTrace();
3232
return 1;
3333
}
3434

3535
private int handleConstraintViolationException(ConstraintViolationException e) {
36-
output.printError(e.getMessage() + ": TODO");
36+
output.printError(
37+
"Invalid options file:" + System.lineSeparator() +
38+
e.getConstraintViolations().stream()
39+
.map(violation -> " -> " + violation.getPropertyPath() + ": " + violation.getMessage())
40+
.collect(Collectors.joining(System.lineSeparator()))
41+
);
3742
return 1;
3843
}
3944

src/main/java/io/github/computerdaddyguy/jfiletreeprettyprinter/cli/options/reader/SimpleExternalOptionsReader.java

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ public ExternalOptions readExternalOptions(Path targetPath, @Nullable Path optio
4545
output.printDebug("Options file found: %s", optionsPath);
4646

4747
var externalOptions = load(output, optionsPath);
48-
validate(output, optionsPath, externalOptions);
48+
validate(externalOptions);
49+
output.printDebug("Options file is valid");
4950
return externalOptions;
5051
}
5152

@@ -63,23 +64,18 @@ private ExternalOptions load(ConsoleOutput output, Path optionsPath) {
6364
}
6465
}
6566

66-
private void validate(ConsoleOutput output, Path optionsPath, ExternalOptions externalOptions) {
67-
try {
68-
var validatorFactory = Validation.byDefaultProvider()
69-
.configure()
70-
.messageInterpolator(new ParameterMessageInterpolator())
71-
.buildValidatorFactory();
72-
var validator = validatorFactory.getValidator();
73-
74-
var violations = validator.validate(externalOptions);
75-
if (!violations.isEmpty()) {
76-
throw new ConstraintViolationException(violations);
77-
}
67+
private void validate(ExternalOptions externalOptions) {
68+
var validatorFactory = Validation.byDefaultProvider()
69+
.configure()
70+
.messageInterpolator(new ParameterMessageInterpolator())
71+
.buildValidatorFactory();
72+
var validator = validatorFactory.getValidator();
7873

79-
output.printDebug("Options file is valid");
80-
} catch (ConstraintViolationException e) {
81-
throw new ExternalOptionsException(optionsPath, "Invalid options file", e);
74+
var violations = validator.validate(externalOptions);
75+
if (!violations.isEmpty()) {
76+
throw new ConstraintViolationException(violations);
8277
}
78+
8379
}
8480

8581
}

src/test/java/io/github/computerdaddyguy/jfiletreeprettyprinter/cli/FileTreePrettyPrinterCommandLineTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@ void invalid_options() throws IOException {
105105
var exHandler = new DefaultExecutionExceptionHandler(output);
106106
var cli = new FileTreePrettyPrinterCommandLine(output, optionsLoader, exHandler);
107107

108-
Consumer<String> outputAssertor = out -> assertThat(out).startsWith("[ERROR] Invalid options file:").contains("invalid.yaml");
108+
Consumer<String> outputAssertor = out -> assertThat(out)
109+
.startsWith("[ERROR] Invalid options file:")
110+
.contains("childLimit.limits[0].matcher.glob:")
111+
.contains("childLimit.limits[1].matcher.glob:");
109112
runErrorTest(cli, args, outputAssertor);
110113
}
111114

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,11 @@
11
childLimit:
2-
type: static
2+
type: dynamic
3+
limits:
4+
- limit: 2
5+
matcher:
6+
type: "name"
7+
glob: ""
8+
- limit: 3
9+
matcher:
10+
type: "name"
11+
glob: ""

0 commit comments

Comments
 (0)