diff options
author | James Ahlborn <jtahlborn@yahoo.com> | 2014-01-22 02:49:14 +0000 |
---|---|---|
committer | James Ahlborn <jtahlborn@yahoo.com> | 2014-01-22 02:49:14 +0000 |
commit | a478c716e0065f77b1d6206b24c1d34a7deb7823 (patch) | |
tree | 486dfbf04de1a713dd2e71b09a15e04546994478 /src | |
parent | 53be9634366b90d13dd2eb92aa660c46a979734e (diff) | |
download | jackcess-a478c716e0065f77b1d6206b24c1d34a7deb7823.tar.gz jackcess-a478c716e0065f77b1d6206b24c1d34a7deb7823.zip |
Fix NullPointerException in RowImpl.toString when value is null.
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@844 f203690c-595d-4dc9-a70b-905162fa7fd2
Diffstat (limited to 'src')
-rw-r--r-- | src/changes/changes.xml | 5 | ||||
-rw-r--r-- | src/main/java/com/healthmarketscience/jackcess/impl/CustomToStringStyle.java | 17 | ||||
-rw-r--r-- | src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java | 8 |
3 files changed, 26 insertions, 4 deletions
diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 40c067a..ca8ed97 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -4,6 +4,11 @@ <author email="javajedi@users.sf.net">Tim McCune</author> </properties> <body> + <release version="2.0.3" date="TBD"> + <action dev="jahlborn" type="fix"> + Fix NullPointerException in RowImpl.toString() when value is null. + </action> + </release> <release version="2.0.2" date="2013-11-30"> <action dev="jahlborn" type="fix" system="SourceForge2" issue="99"> Rework row add/update so that constraint violations do not leave diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/CustomToStringStyle.java b/src/main/java/com/healthmarketscience/jackcess/impl/CustomToStringStyle.java index 437f176..f477241 100644 --- a/src/main/java/com/healthmarketscience/jackcess/impl/CustomToStringStyle.java +++ b/src/main/java/com/healthmarketscience/jackcess/impl/CustomToStringStyle.java @@ -119,11 +119,11 @@ public class CustomToStringStyle extends StandardToStringStyle if(isFieldSeparatorAtStart()) { appendFieldSeparator(sb); } - appendInternal(sb, fieldName, iter.next(), true); + appendValueDetail(sb, fieldName, iter.next()); } while(iter.hasNext()) { sb.append(getArraySeparator()); - appendInternal(sb, fieldName, iter.next(), true); + appendValueDetail(sb, fieldName, iter.next()); } // indent entire list contents another level @@ -151,13 +151,13 @@ public class CustomToStringStyle extends StandardToStringStyle } Map.Entry<?,?> e = iter.next(); sb.append(e.getKey()).append("="); - appendInternal(sb, fieldName, e.getValue(), true); + appendValueDetail(sb, fieldName, e.getValue()); } while(iter.hasNext()) { sb.append(getArraySeparator()); Map.Entry<?,?> e = iter.next(); sb.append(e.getKey()).append("="); - appendInternal(sb, fieldName, e.getValue(), true); + appendValueDetail(sb, fieldName, e.getValue()); } // indent entire map contents another level @@ -175,6 +175,15 @@ public class CustomToStringStyle extends StandardToStringStyle appendDetail(buffer, PageChannel.wrap(array)); } + private void appendValueDetail(StringBuffer buffer, String fieldName, + Object value) { + if (value == null) { + appendNullText(buffer, fieldName); + } else { + appendInternal(buffer, fieldName, value, true); + } + } + private static void appendDetail(StringBuffer buffer, ByteBuffer bb) { int len = bb.remaining(); buffer.append("(").append(len).append(") "); diff --git a/src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java b/src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java index 5d67463..4f2d2c7 100644 --- a/src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java @@ -1440,6 +1440,14 @@ public class DatabaseTest extends TestCase } } + public void testToString() + { + RowImpl row = new RowImpl(new RowIdImpl(1, 1)); + row.put("id", 37); + row.put("data", null); + assertEquals("Row[1:1][{id=37,data=<null>}]", row.toString()); + } + private void checkRawValue(String expected, Object val) { if(expected != null) { |