From 9a5dec078ba1f6ccc89452a072446940ce3754c3 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 30 Dec 2021 20:02:03 +0000 Subject: [PATCH] rewrite CopyCompare to remove its ThreadLocal which causes a sonar code smell git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1896536 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/examples/hpsf/CopyCompare.java | 13 ++++++++----- .../java/org/apache/poi/stress/HPSFFileHandler.java | 13 +++++++------ .../java/org/apache/poi/xssf/model/ThemesTable.java | 3 ++- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/poi-examples/src/main/java/org/apache/poi/examples/hpsf/CopyCompare.java b/poi-examples/src/main/java/org/apache/poi/examples/hpsf/CopyCompare.java index d933b23e22..8a9e0e2f0e 100644 --- a/poi-examples/src/main/java/org/apache/poi/examples/hpsf/CopyCompare.java +++ b/poi-examples/src/main/java/org/apache/poi/examples/hpsf/CopyCompare.java @@ -62,9 +62,8 @@ import org.apache.poi.util.TempFile; */ @SuppressWarnings({"java:S106","java:S4823"}) public final class CopyCompare { - private CopyCompare() {} - private static final ThreadLocal out = ThreadLocal.withInitial(() -> System.out); + private PrintStream out = System.out; /** * Runs the example program. The application expects one or two arguments: @@ -83,6 +82,10 @@ public final class CopyCompare { * supported. */ public static void main(final String[] args) throws IOException { + new CopyCompare().run(args); + } + + public void run(String[] args) throws IOException { String originalFileName = null; String copyFileName = null; @@ -120,12 +123,12 @@ public final class CopyCompare { POIFSFileSystem cpfs = new POIFSFileSystem(new File(copyFileName))) { final DirectoryEntry oRoot = opfs.getRoot(); final DirectoryEntry cRoot = cpfs.getRoot(); - out.get().println(EntryUtils.areDirectoriesIdentical(oRoot, cRoot) ? "Equal" : "Not equal"); + out.println(EntryUtils.areDirectoriesIdentical(oRoot, cRoot) ? "Equal" : "Not equal"); } } - public static void setOut(PrintStream ps) { - out.set(ps); + public void setOut(PrintStream ps) { + out = ps; } private interface InputStreamSupplier { diff --git a/poi-integration/src/test/java/org/apache/poi/stress/HPSFFileHandler.java b/poi-integration/src/test/java/org/apache/poi/stress/HPSFFileHandler.java index 4b8d0016e2..9809a7a11f 100644 --- a/poi-integration/src/test/java/org/apache/poi/stress/HPSFFileHandler.java +++ b/poi-integration/src/test/java/org/apache/poi/stress/HPSFFileHandler.java @@ -33,7 +33,6 @@ import java.util.Set; import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream; import org.apache.poi.examples.hpsf.CopyCompare; -import org.apache.poi.extractor.POITextExtractor; import org.apache.poi.hpsf.DocumentSummaryInformation; import org.apache.poi.hpsf.HPSFPropertiesOnlyDocument; import org.apache.poi.hpsf.PropertySet; @@ -129,11 +128,13 @@ public class HPSFFileHandler extends POIFSFileHandler { public void handleAdditional(File file) throws Exception { assumeFalse(EXCLUDES_HANDLE_ADD.contains(file.getParentFile().getName()+"/"+file.getName())); - UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); - PrintStream psNew = new PrintStream(bos, true, "ISO-8859-1"); - CopyCompare.setOut(psNew); - CopyCompare.main(new String[]{file.getAbsolutePath(), copyOutput.get().getAbsolutePath()}); - assertEquals("Equal" + NL, bos.toString(StandardCharsets.UTF_8)); + try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) { + PrintStream psNew = new PrintStream(bos, true, "ISO-8859-1"); + CopyCompare copyCompare = new CopyCompare(); + copyCompare.setOut(psNew); + CopyCompare.main(new String[]{file.getAbsolutePath(), copyOutput.get().getAbsolutePath()}); + assertEquals("Equal" + NL, bos.toString(StandardCharsets.UTF_8)); + } } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/model/ThemesTable.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/model/ThemesTable.java index 72fe4e0107..7bd391a06b 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/model/ThemesTable.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/model/ThemesTable.java @@ -56,7 +56,8 @@ public class ThemesTable extends POIXMLDocumentPart implements Themes { return values()[idx]; } ThemeElement(int idx, String name) { - this.idx = idx; this.name = name; + this.idx = idx; + this.name = name; } public final int idx; public final String name;