This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new c7b8f0c6fea (chores) camel-core: added the ability to provide a cause
to ObjectHelper.notNull
c7b8f0c6fea is described below
commit c7b8f0c6fea02ffd5194c7abd33b92c9c8dc6f3c
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Fri Feb 16 08:40:47 2024 +0100
(chores) camel-core: added the ability to provide a cause to
ObjectHelper.notNull
---
.../org/apache/camel/util/ObjectHelperTest.java | 40 +++++++++++++++-------
.../java/org/apache/camel/util/ObjectHelper.java | 17 +++++++++
2 files changed, 44 insertions(+), 13 deletions(-)
diff --git
a/core/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
b/core/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
index b0fd15074a1..59c836d8af1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
@@ -39,6 +39,7 @@ import org.w3c.dom.NodeList;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.TypeConverter;
import org.apache.camel.component.bean.MyOtherFooBean;
import org.apache.camel.component.bean.MyOtherFooBean.AbstractClassSize;
@@ -57,6 +58,7 @@ import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNotSame;
import static org.junit.jupiter.api.Assertions.assertNull;
@@ -998,21 +1000,33 @@ public class ObjectHelperTest {
Long actual2 = org.apache.camel.util.ObjectHelper.notNull(expected,
"expected", "holder");
assertSame(expected, actual2, "Didn't get the same object back!");
+ }
- Long expected2 = null;
- try {
- org.apache.camel.util.ObjectHelper.notNull(expected2, "expected2");
- fail("Should have thrown exception");
- } catch (IllegalArgumentException iae) {
- assertEquals("expected2 must be specified", iae.getMessage());
- }
+ @Test
+ void testNotNullWithNull() {
+ final IllegalArgumentException holderLessException =
Assertions.assertThrows(IllegalArgumentException.class,
+ () -> org.apache.camel.util.ObjectHelper.notNull(null,
"expectedObject"), "Should have thrown exception");
+ assertEquals("expectedObject must be specified",
holderLessException.getMessage());
+ }
- try {
- org.apache.camel.util.ObjectHelper.notNull(expected2, "expected2",
"holder");
- fail("Should have thrown exception");
- } catch (IllegalArgumentException iae) {
- assertEquals("expected2 must be specified on: holder",
iae.getMessage());
- }
+ @Test
+ void testNotNullWithHolder() {
+ final IllegalArgumentException exWithHolder =
Assertions.assertThrows(IllegalArgumentException.class,
+ () -> org.apache.camel.util.ObjectHelper.notNull(null,
"expectedObject", "holder"),
+ "Should have thrown exception due to holder being null");
+ assertEquals("expectedObject must be specified on: holder",
exWithHolder.getMessage());
+ }
+
+ @Test
+ void testNotNullWithCause() {
+ final IllegalArgumentException exWithCause =
Assertions.assertThrows(IllegalArgumentException.class,
+ () -> org.apache.camel.util.ObjectHelper.notNull(null,
"expectedObject", () -> new RuntimeCamelException("exception cause")),
+ "Should have thrown exception due to holder being null");
+ assertEquals("expectedObject must be specified",
exWithCause.getMessage());
+
+ final RuntimeCamelException runtimeCamelException =
+ assertInstanceOf(RuntimeCamelException.class,
exWithCause.getCause());
+ assertEquals("exception cause", runtimeCamelException.getMessage(),
"Cause should have been retained");
}
@Test
diff --git
a/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
b/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
index 705b7f98cd0..f51f5dffa77 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
@@ -156,6 +156,23 @@ public final class ObjectHelper {
return value;
}
+ /**
+ * Asserts whether the value is <b>not</b> <tt>null</tt>
+ *
+ * @param value the value to test
+ * @param name the key that resolved the value
+ * @param exceptionSupplier a supplier for a custom exception to
be added as the cause and provide contextual information
+ * @return the passed {@code value} as is
+ * @throws IllegalArgumentException is thrown if assertion fails
+ */
+ public static <T> T notNull(T value, String name, Supplier<? extends
Exception> exceptionSupplier) {
+ if (value == null) {
+ throw new IllegalArgumentException(name + " must be specified",
exceptionSupplier.get());
+ }
+
+ return value;
+ }
+
/**
* Asserts that the given {@code value} is neither {@code null} nor an
emptyString.
*