From 118afe544e98ecac28192bbcf6dbf151b557797b Mon Sep 17 00:00:00 2001 From: "Kevin S. Clarke" Date: Tue, 19 Nov 2024 00:22:55 -0500 Subject: [PATCH] Fix Sonar warnings --- .../info/freelibrary/iiif/webrepl/Server.java | 20 +++---- .../iiif/webrepl/DiagConsumerTest.java | 54 +++++++++++++++++++ 2 files changed, 61 insertions(+), 13 deletions(-) create mode 100644 src/test/java/info/freelibrary/iiif/webrepl/DiagConsumerTest.java diff --git a/src/main/java/info/freelibrary/iiif/webrepl/Server.java b/src/main/java/info/freelibrary/iiif/webrepl/Server.java index 4f2bf9f7..c5d7d3f8 100644 --- a/src/main/java/info/freelibrary/iiif/webrepl/Server.java +++ b/src/main/java/info/freelibrary/iiif/webrepl/Server.java @@ -17,6 +17,7 @@ import java.net.URISyntaxException; import java.net.URLDecoder; import java.nio.file.Files; +import java.nio.file.Path; import java.security.CodeSource; import java.time.Duration; import java.util.List; @@ -159,7 +160,7 @@ private static class JPv3Handler implements Handler { } @Override - @SuppressWarnings({ PMD.COGNITIVE_COMPLEXITY, PMD.SYSTEM_PRINTLN, PMD.COGNITIVE_COMPLEXITY, + @SuppressWarnings({ PMD.COGNITIVE_COMPLEXITY, PMD.SYSTEM_PRINTLN, Sonar.COGNITIVE_COMPLEXITY, Sonar.SYSTEM_OUT_ERR }) public void handle(final Request aRequest, final Consumer aCallback) { final String uri = aRequest.uri(); @@ -228,9 +229,7 @@ public void handle(final Request aRequest, final Consumer aCallback) { response = getResponse(NOT_FOUND, TEXT_CONTENT_TYPE, EMPTY_BODY); } } - default -> { - response = getResponse(METHOD_NOT_ALLOWED, TEXT_CONTENT_TYPE, EMPTY_BODY); - } + default -> response = getResponse(METHOD_NOT_ALLOWED, TEXT_CONTENT_TYPE, EMPTY_BODY); } aCallback.accept(response); @@ -293,22 +292,17 @@ private String getImports() throws IOException { * @throws IOException If there is trouble reading the imports file */ private String getImports(final String aSnippet) throws IOException { - File importsFile = new File("/etc/jshell/imports.jsh"); + File importsFile = Path.of("/etc/jshell/imports.jsh").toFile(); // Check to see if we're running from the Maven build if (!importsFile.exists()) { - importsFile = new File("src/main/docker/imports.jsh"); + importsFile = Path.of("src/main/docker/imports.jsh").toFile(); } - try (BufferedReader reader = Files.newBufferedReader(importsFile.toPath())) { + try (final BufferedReader reader = Files.newBufferedReader(importsFile.toPath())) { return reader.lines().filter(line -> !line.isBlank()).filter(line -> { final String className = line.substring(line.lastIndexOf('.') + 1, line.length() - 1); - - if (aSnippet == null || aSnippet.contains(className)) { - return true; - } - - return false; + return aSnippet == null || aSnippet.contains(className); }).collect(Collectors.joining(EOL)) + EOL; } } diff --git a/src/test/java/info/freelibrary/iiif/webrepl/DiagConsumerTest.java b/src/test/java/info/freelibrary/iiif/webrepl/DiagConsumerTest.java new file mode 100644 index 00000000..9078d476 --- /dev/null +++ b/src/test/java/info/freelibrary/iiif/webrepl/DiagConsumerTest.java @@ -0,0 +1,54 @@ + +package info.freelibrary.iiif.webrepl; + +import static info.freelibrary.util.Constants.EMPTY; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import jdk.jshell.JShell; +import jdk.jshell.SnippetEvent; + +/** + * Tests of DiagConsumer. + */ +class DiagConsumerTest { + + /** The expected output from the test. */ + private static final String EXPECTED = """ + Could not parse: + + 1 int x = [["not a number"]]; + + Reason: incompatible types: java.lang.String cannot be converted to int + """; + + /** + * Tests the DiagConsumer constructor. + */ + @Test + final void testAcceptDiagConsumer() { + try (JShell jshell = JShell.create()) { + final StringBuilder builder = new StringBuilder("int x = \"not a number\";"); + final DiagConsumer consumer = new DiagConsumer(builder); + + for (final SnippetEvent event : jshell.eval(builder.toString())) { + jshell.diagnostics(event.snippet()).forEach(consumer::accept); + } + + assertEquals(EXPECTED, builder.toString()); + } + } + + /** + * Tests the DiagConsumer constructor. + */ + @Test + final void testConstructor() { + final StringBuilder builder = new StringBuilder(); + + new DiagConsumer(builder); + + assertEquals(EMPTY, builder.toString().trim()); + } +}