From a98816e315d4cb1b97e4c60b58d95606c65ce194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rg=20Prante?= Date: Mon, 19 Sep 2016 11:57:35 +0200 Subject: [PATCH] fix NPE in JSON writer --- src/main/java/org/xbib/marc/json/MarcJsonWriter.java | 10 +++++++--- src/test/java/org/xbib/marc/ConcurrencyTest.java | 2 ++ src/test/java/org/xbib/marc/MarcWriterTest.java | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/xbib/marc/json/MarcJsonWriter.java b/src/main/java/org/xbib/marc/json/MarcJsonWriter.java index 490a10e..170f977 100644 --- a/src/main/java/org/xbib/marc/json/MarcJsonWriter.java +++ b/src/main/java/org/xbib/marc/json/MarcJsonWriter.java @@ -156,8 +156,8 @@ public class MarcJsonWriter extends MarcContentHandler implements Flushable, Clo writer.write(sb.toString()); sb.setLength(0); recordCounter.incrementAndGet(); - } catch (IOException e) { - handleException(e); + } catch (Exception e) { + handleException(new IOException(e)); } finally { lock.unlock(); } @@ -313,7 +313,11 @@ public class MarcJsonWriter extends MarcContentHandler implements Flushable, Clo } sb.append("]"); } else { - sb.append("\"").append(escape(o.toString())).append("\""); + if (o == null) { + sb.append("null"); + } else { + sb.append("\"").append(escape(o.toString())).append("\""); + } } c0++; } diff --git a/src/test/java/org/xbib/marc/ConcurrencyTest.java b/src/test/java/org/xbib/marc/ConcurrencyTest.java index 446e7ff..8ef7ef3 100644 --- a/src/test/java/org/xbib/marc/ConcurrencyTest.java +++ b/src/test/java/org/xbib/marc/ConcurrencyTest.java @@ -20,6 +20,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import org.junit.Test; +import org.xbib.marc.Marc; +import org.xbib.marc.MarcXchangeConstants; import org.xbib.marc.json.MarcJsonWriter; import org.xbib.marc.xml.MarcXchangeWriter; diff --git a/src/test/java/org/xbib/marc/MarcWriterTest.java b/src/test/java/org/xbib/marc/MarcWriterTest.java index 70991d3..552f91e 100644 --- a/src/test/java/org/xbib/marc/MarcWriterTest.java +++ b/src/test/java/org/xbib/marc/MarcWriterTest.java @@ -82,7 +82,7 @@ public class MarcWriterTest extends Assert { file.deleteOnExit(); FileOutputStream out = new FileOutputStream(file); MarcValueTransformers marcValueTransformers = new MarcValueTransformers(); - marcValueTransformers.setMarcValueTransformer("245$10$a", t -> t.replaceAll("Chabon","Chibon")); + marcValueTransformers.setMarcValueTransformer("245$10$a", t -> t.replaceAll("Chabon", "Chibon")); try (MarcWriter writer = new MarcWriter(out, StandardCharsets.UTF_8) .setMarcValueTransformers(marcValueTransformers)) { Marc.builder() @@ -98,7 +98,7 @@ public class MarcWriterTest extends Assert { xmlFile.deleteOnExit(); out = new FileOutputStream(xmlFile); marcValueTransformers = new MarcValueTransformers(); - marcValueTransformers.setMarcValueTransformer("245$10$a", t -> t.replaceAll("Chibon","Chabon")); + marcValueTransformers.setMarcValueTransformer("245$10$a", t -> t.replaceAll("Chibon", "Chabon")); try (MarcXchangeWriter writer = new MarcXchangeWriter(out) .setMarcValueTransformers(marcValueTransformers)) { Marc.builder()