Repository: cayenne Updated Branches: refs/heads/STABLE-4.0 8a2b5a88c -> 4944e863d
CAY-2436 NPE in CayenneRuntimeException constructor Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/4944e863 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/4944e863 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/4944e863 Branch: refs/heads/STABLE-4.0 Commit: 4944e863d6d31e2d96a592c4cf4fefbb2a2c1b1e Parents: 8a2b5a8 Author: Nikita Timofeev <stari...@gmail.com> Authored: Wed May 23 10:14:23 2018 +0300 Committer: Nikita Timofeev <stari...@gmail.com> Committed: Wed May 23 10:14:23 2018 +0300 ---------------------------------------------------------------------- RELEASE-NOTES.txt | 4 ++- .../apache/cayenne/CayenneRuntimeException.java | 7 ++--- .../cayenne/CayenneRuntimeExceptionTest.java | 33 ++++++++++++++------ 3 files changed, 29 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/4944e863/RELEASE-NOTES.txt ---------------------------------------------------------------------- diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 828731c..c09f88b 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -16,9 +16,11 @@ Changes/New Features: Bug Fixes: +CAY-2436 NPE in CayenneRuntimeException constructor + ---------------------------------- Release: 4.0.RC1 -Date: +Date: April 25, 2018 ---------------------------------- Changes/New Features: http://git-wip-us.apache.org/repos/asf/cayenne/blob/4944e863/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java b/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java index 29fc6c0..135b50c 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java @@ -37,7 +37,7 @@ public class CayenneRuntimeException extends RuntimeException { * conventions. */ public CayenneRuntimeException(String messageFormat, Object... messageArgs) { - super(String.format(messageFormat, messageArgs)); + super(messageFormat == null ? null : String.format(messageFormat, messageArgs)); } /** @@ -53,9 +53,8 @@ public class CayenneRuntimeException extends RuntimeException { * optional list of message formatting arguments. Message formatting rules follow * "String.format(..)" conventions. */ - public CayenneRuntimeException(String messageFormat, Throwable cause, - Object... messageArgs) { - super(String.format(messageFormat, messageArgs), cause); + public CayenneRuntimeException(String messageFormat, Throwable cause, Object... messageArgs) { + super(messageFormat == null ? null : String.format(messageFormat, messageArgs), cause); } /** http://git-wip-us.apache.org/repos/asf/cayenne/blob/4944e863/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java index d9019c2..0e60ecf 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java @@ -29,26 +29,24 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; -/** - */ public class CayenneRuntimeExceptionTest { @Test - public void testConstructor1() throws Exception { + public void testConstructor1() { CayenneRuntimeException ex = new CayenneRuntimeException(); assertNull(ex.getCause()); assertTrue(ex.getMessage().startsWith(CayenneException.getExceptionLabel())); } @Test - public void testConstructor2() throws Exception { + public void testConstructor2() { CayenneRuntimeException ex = new CayenneRuntimeException("abc"); assertNull(ex.getCause()); assertEquals(CayenneException.getExceptionLabel() + "abc", ex.getMessage()); } @Test - public void testConstructor3() throws Exception { + public void testConstructor3() { Throwable cause = new Throwable(); CayenneRuntimeException ex = new CayenneRuntimeException(cause); assertSame(cause, ex.getCause()); @@ -58,7 +56,7 @@ public class CayenneRuntimeExceptionTest { } @Test - public void testConstructor4() throws Exception { + public void testConstructor4() { Throwable cause = new Throwable(); CayenneRuntimeException ex = new CayenneRuntimeException("abc", cause); assertSame(cause, ex.getCause()); @@ -66,7 +64,22 @@ public class CayenneRuntimeExceptionTest { } @Test - public void testThrow1() throws Exception { + public void testConstructorNullMessage() { + Throwable cause = new Throwable(); + + CayenneRuntimeException ex = new CayenneRuntimeException(null, cause); + assertSame(cause, ex.getCause()); + assertEquals(CayenneException.getExceptionLabel() + "(no message)", ex.getMessage()); + assertNull(ex.getUnlabeledMessage()); + + CayenneRuntimeException ex2 = new CayenneRuntimeException((String)null); + assertNull(ex2.getCause()); + assertEquals(CayenneException.getExceptionLabel() + "(no message)", ex2.getMessage()); + assertNull(ex2.getUnlabeledMessage()); + } + + @Test + public void testThrow1() { try { throw new CayenneRuntimeException(); } @@ -77,7 +90,7 @@ public class CayenneRuntimeExceptionTest { } @Test - public void testThrow2() throws Exception { + public void testThrow2() { try { try { throw new Throwable("Test Cause"); @@ -93,13 +106,13 @@ public class CayenneRuntimeExceptionTest { } @Test - public void testMessageFormatting1() throws Exception { + public void testMessageFormatting1() { CayenneRuntimeException ex = new CayenneRuntimeException("x%sx%sx", "a", "b"); assertEquals("xaxbx", ex.getUnlabeledMessage()); } @Test - public void testMessageFormatting2() throws Exception { + public void testMessageFormatting2() { Throwable cause = new Throwable(); CayenneRuntimeException ex = new CayenneRuntimeException("x%sx%sx", cause, "a", "b"); assertEquals("xaxbx", ex.getUnlabeledMessage());