From 0e1ab0bae18e8fe553d5cdc183a7bdb54914b99c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Kir=C3=A1ly?= Date: Mon, 13 Nov 2023 22:42:05 +0100 Subject: [PATCH] Crash with NullPointerException while validating an MRC file #356: use explicit UTF-8 instead of the default charset when writing to file. --- .../de/gwdg/metadataqa/marc/cli/BLClassificationAnalysis.java | 3 ++- src/main/java/de/gwdg/metadataqa/marc/cli/DataElements.java | 3 ++- src/main/java/de/gwdg/metadataqa/marc/cli/QACli.java | 2 +- src/main/java/de/gwdg/metadataqa/marc/cli/SerialScore.java | 3 ++- .../de/gwdg/metadataqa/marc/cli/ShelfReadyCompleteness.java | 3 ++- .../gwdg/metadataqa/marc/cli/ThompsonTraillCompleteness.java | 3 ++- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/gwdg/metadataqa/marc/cli/BLClassificationAnalysis.java b/src/main/java/de/gwdg/metadataqa/marc/cli/BLClassificationAnalysis.java index 5cba6b1ef..e7c005abf 100644 --- a/src/main/java/de/gwdg/metadataqa/marc/cli/BLClassificationAnalysis.java +++ b/src/main/java/de/gwdg/metadataqa/marc/cli/BLClassificationAnalysis.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.io.Serializable; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.util.List; import java.util.Map; @@ -93,7 +94,7 @@ public void processRecord(BibliographicRecord marcRecord, int recordNumber) thro private void print(String message) { try { - FileUtils.writeStringToFile(output, message, Charset.defaultCharset(), true); + FileUtils.writeStringToFile(output, message, StandardCharsets.UTF_8, true); } catch (IOException e) { logger.log(Level.WARNING, "print", e); } diff --git a/src/main/java/de/gwdg/metadataqa/marc/cli/DataElements.java b/src/main/java/de/gwdg/metadataqa/marc/cli/DataElements.java index b12794a57..6fce59ef5 100644 --- a/src/main/java/de/gwdg/metadataqa/marc/cli/DataElements.java +++ b/src/main/java/de/gwdg/metadataqa/marc/cli/DataElements.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.io.Serializable; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.util.HashMap; import java.util.List; @@ -125,7 +126,7 @@ public void afterIteration(int numberOfprocessedRecords, long duration) { private void printToFile(File file, String message) { try { - FileUtils.writeStringToFile(file, message, Charset.defaultCharset(), true); + FileUtils.writeStringToFile(file, message, StandardCharsets.UTF_8, true); } catch (IOException e) { if (parameters.doLog()) logger.log(Level.SEVERE, "printToFile", e); diff --git a/src/main/java/de/gwdg/metadataqa/marc/cli/QACli.java b/src/main/java/de/gwdg/metadataqa/marc/cli/QACli.java index 7c53f4e7d..c12046897 100644 --- a/src/main/java/de/gwdg/metadataqa/marc/cli/QACli.java +++ b/src/main/java/de/gwdg/metadataqa/marc/cli/QACli.java @@ -177,7 +177,7 @@ protected File prepareReportFile(String outputDir, String fileName) { */ protected void printToFile(File file, String content) { try { - FileUtils.writeStringToFile(file, content, Charset.defaultCharset(), true); + FileUtils.writeStringToFile(file, content, StandardCharsets.UTF_8, true); } catch (IOException e) { if (parameters.doLog()) logger.log(Level.SEVERE, "printToFile", e); diff --git a/src/main/java/de/gwdg/metadataqa/marc/cli/SerialScore.java b/src/main/java/de/gwdg/metadataqa/marc/cli/SerialScore.java index 8889a42c6..8079f6470 100644 --- a/src/main/java/de/gwdg/metadataqa/marc/cli/SerialScore.java +++ b/src/main/java/de/gwdg/metadataqa/marc/cli/SerialScore.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.Serializable; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -173,7 +174,7 @@ public void printHelp(Options options) { private void print(String message) { try { - FileUtils.writeStringToFile(output, message, Charset.defaultCharset(), true); + FileUtils.writeStringToFile(output, message, StandardCharsets.UTF_8, true); } catch (IOException e) { logger.log(Level.SEVERE, "print", e); } diff --git a/src/main/java/de/gwdg/metadataqa/marc/cli/ShelfReadyCompleteness.java b/src/main/java/de/gwdg/metadataqa/marc/cli/ShelfReadyCompleteness.java index c7bbfc607..492ba5f9f 100644 --- a/src/main/java/de/gwdg/metadataqa/marc/cli/ShelfReadyCompleteness.java +++ b/src/main/java/de/gwdg/metadataqa/marc/cli/ShelfReadyCompleteness.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.Serializable; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -164,7 +165,7 @@ public void printHelp(Options options) { private void print(String message) { try { - FileUtils.writeStringToFile(output, message, Charset.defaultCharset(), true); + FileUtils.writeStringToFile(output, message, StandardCharsets.UTF_8, true); } catch (IOException e) { logger.log(Level.WARNING, "print", e); } diff --git a/src/main/java/de/gwdg/metadataqa/marc/cli/ThompsonTraillCompleteness.java b/src/main/java/de/gwdg/metadataqa/marc/cli/ThompsonTraillCompleteness.java index 1ab90ab1f..295452f82 100644 --- a/src/main/java/de/gwdg/metadataqa/marc/cli/ThompsonTraillCompleteness.java +++ b/src/main/java/de/gwdg/metadataqa/marc/cli/ThompsonTraillCompleteness.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.Serializable; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -151,7 +152,7 @@ public void printHelp(Options options) { private void print(String message) { try { - FileUtils.writeStringToFile(output, message, Charset.defaultCharset(), true); + FileUtils.writeStringToFile(output, message, StandardCharsets.UTF_8, true); } catch (IOException e) { logger.log(Level.SEVERE, "print", e); }