From: Dominik Stadler Date: Thu, 16 Jul 2015 03:49:44 +0000 (+0000) Subject: Fixup printing record name in case of unknown sid X-Git-Tag: REL_3_13_FINAL~248 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8d8141ad7fa0c69d0eab794c74e88ad388d11741;p=poi.git Fixup printing record name in case of unknown sid git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1691312 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/hssf/record/RecordInputStream.java b/src/java/org/apache/poi/hssf/record/RecordInputStream.java index 831a3a1878..9de7d68895 100644 --- a/src/java/org/apache/poi/hssf/record/RecordInputStream.java +++ b/src/java/org/apache/poi/hssf/record/RecordInputStream.java @@ -52,9 +52,17 @@ public final class RecordInputStream implements LittleEndianInput { public static final class LeftoverDataException extends RuntimeException { public LeftoverDataException(int sid, int remainingByteCount) { super("Initialisation of record 0x" + Integer.toHexString(sid).toUpperCase() - + "(" + RecordFactory.getRecordClass(sid).getSimpleName() + ") left " + remainingByteCount + + "(" + getRecordName(sid) + ") left " + remainingByteCount + " bytes remaining still to be read."); } + + private static String getRecordName(int sid) { + Class recordClass = RecordFactory.getRecordClass(sid); + if(recordClass == null) { + return null; + } + return recordClass.getSimpleName(); + } } /** Header {@link LittleEndianInput} facet of the wrapped {@link InputStream} */ diff --git a/src/testcases/org/apache/poi/hssf/record/TestRecordInputStream.java b/src/testcases/org/apache/poi/hssf/record/TestRecordInputStream.java index 2b236e1ac7..518c5f0475 100644 --- a/src/testcases/org/apache/poi/hssf/record/TestRecordInputStream.java +++ b/src/testcases/org/apache/poi/hssf/record/TestRecordInputStream.java @@ -94,4 +94,12 @@ public final class TestRecordInputStream extends TestCase { String actual = in.readString(); assertEquals("Multilingual - \u591A\u8A00\u8A9E", actual); } + + public void testLeftoverDataException() { + // just ensure that the exception is created correctly, even with unknown sids + new RecordInputStream.LeftoverDataException(1, 200); + new RecordInputStream.LeftoverDataException(0, 200); + new RecordInputStream.LeftoverDataException(999999999, 200); + new RecordInputStream.LeftoverDataException(HeaderRecord.sid, 200); + } }