diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/Objects.java b/smack-core/src/main/java/org/jivesoftware/smack/util/Objects.java index 97dec7d74..9cf7cadb3 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/Objects.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/Objects.java @@ -1,6 +1,6 @@ /** * - * Copyright 2015-2018 Florian Schmaus + * Copyright 2015-2019 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,9 +20,26 @@ import java.util.Collection; public class Objects { - public static T requireNonNull(T obj, String message) { + /** + * Checks that the specified object reference is not null and throws a customized + * {@link IllegalArgumentException} if it is. + *

+ * Note that unlike java.util.Objects, this method throws an {@link IllegalArgumentException} instead + * of an {@link NullPointerException}. + *

+ * + * @param the type of the reference. + * @param obj the object reference to check for nullity. + * @param message detail message to be used in the event that a {@link IllegalArgumentException} is thrown. + * @return obj if not null. + * @throws IllegalArgumentException in case obj is null. + */ + public static T requireNonNull(T obj, String message) throws IllegalArgumentException { if (obj == null) { - throw new NullPointerException(message); + if (message == null) { + message = "Can not provide null argument"; + } + throw new IllegalArgumentException(message); } return obj; } diff --git a/smack-core/src/test/java/org/jivesoftware/smack/packet/PresenceTest.java b/smack-core/src/test/java/org/jivesoftware/smack/packet/PresenceTest.java index 9f6adca2e..a86e07646 100644 --- a/smack-core/src/test/java/org/jivesoftware/smack/packet/PresenceTest.java +++ b/smack-core/src/test/java/org/jivesoftware/smack/packet/PresenceTest.java @@ -20,10 +20,11 @@ import static org.jivesoftware.smack.test.util.XmlUnitUtils.assertXmlSimilar; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.io.IOException; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.xml.sax.SAXException; public class PresenceTest { @@ -59,9 +60,11 @@ public class PresenceTest { assertXmlSimilar(control, presenceTypeSet.toXML(StreamOpen.CLIENT_NAMESPACE).toString()); } - @Test(expected = NullPointerException.class) + @Test public void setNullPresenceTypeTest() { - getNewPresence().setType(null); + assertThrows(IllegalArgumentException.class, () -> + getNewPresence().setType(null) + ); } @Test @@ -112,9 +115,11 @@ public class PresenceTest { assertXmlSimilar(control, presence.toXML(StreamOpen.CLIENT_NAMESPACE).toString()); } - @Test(expected = IllegalArgumentException.class) + @Test public void setIllegalPriorityTest() { - getNewPresence().setPriority(Integer.MIN_VALUE); + assertThrows(IllegalArgumentException.class, () -> + getNewPresence().setPriority(Integer.MIN_VALUE) + ); } @Test diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/reference/ReferenceTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/reference/ReferenceTest.java index e69f0a584..b53eff5e4 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/reference/ReferenceTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/reference/ReferenceTest.java @@ -98,7 +98,7 @@ public class ReferenceTest extends SmackTestSuite { @Test public void typeArgumentNullTest() throws URISyntaxException { - assertThrows(NullPointerException.class, () -> + assertThrows(IllegalArgumentException.class, () -> new ReferenceElement(1, 2, null, null, new URI("xmpp:test@test.test"))); } diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java index a1277f86e..6023f257e 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleContentTest.java @@ -32,7 +32,7 @@ import org.junit.Test; */ public class JingleContentTest extends SmackTestSuite { - @Test(expected = NullPointerException.class) + @Test(expected = IllegalArgumentException.class) public void emptyBuilderThrowsTest() { JingleContent.Builder builder = JingleContent.getBuilder(); builder.build(); diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java index c7827e475..70933bde2 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/JingleTest.java @@ -41,7 +41,7 @@ public class JingleTest extends SmackTestSuite { builder.build(); } - @Test(expected = NullPointerException.class) + @Test(expected = IllegalArgumentException.class) public void onlySessionIdBuilderTest() { String sessionId = "testSessionId";