This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 1b3f41384f org.apache.juneau.common.reflect API improvements
1b3f41384f is described below

commit 1b3f41384f8388b4e5fc267bc8659431a2535b45
Author: James Bognar <[email protected]>
AuthorDate: Mon Nov 24 14:22:23 2025 -0500

    org.apache.juneau.common.reflect API improvements
---
 .../juneau/common/annotation/AnnotationObject.java |  1 +
 .../common/annotation/AppliedAnnotationObject.java | 22 +++++++
 .../common/annotation/AnnotationObject_Test.java   | 11 ++++
 .../annotation/AppliedAnnotationObject_Test.java   | 76 ++++++++++++++++++++++
 4 files changed, 110 insertions(+)

diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AnnotationObject.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AnnotationObject.java
index 2419956368..9d17fb12b8 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AnnotationObject.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AnnotationObject.java
@@ -176,6 +176,7 @@ public class AnnotationObject implements Annotation {
         * @param b The builder used to instantiate the fields of this class.
         */
        public AnnotationObject(Builder b) {
+               assertArgNotNull("b", b);
                this.annotationType = b.getAnnotationType();
        }
 
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedAnnotationObject.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedAnnotationObject.java
index 18ea0dbe6c..65739dc7ce 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedAnnotationObject.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedAnnotationObject.java
@@ -17,6 +17,7 @@
 package org.apache.juneau.common.annotation;
 
 import static org.apache.juneau.common.reflect.ReflectionUtils.*;
+import static org.apache.juneau.common.utils.AssertionUtils.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
@@ -166,6 +167,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public Builder on(String...values) {
+                       assertVarargsNotNull("values", values);
                        for (var v : values)
                                on = addAll(on, v);
                        return this;
@@ -221,6 +223,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderT on(Class<?>...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on = addAll(on, v.getName());
                        return this;
@@ -233,6 +236,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderT on(ClassInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on = addAll(on, v.inner().getName());
                        return this;
@@ -246,6 +250,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 */
                @SuppressWarnings("unchecked")
                public BuilderT onClass(Class<?>...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                onClass = addAll(onClass, v);
                        return this;
@@ -259,6 +264,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 */
                @SuppressWarnings("unchecked")
                public BuilderT onClass(ClassInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                onClass = addAll(onClass, v.inner());
                        return this;
@@ -305,6 +311,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderM on(Method...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(info(v).getFullName());
                        return this;
@@ -317,6 +324,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderM on(MethodInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(v.getFullName());
                        return this;
@@ -362,6 +370,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderC on(Constructor<?>...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(info(v).getFullName());
                        return this;
@@ -374,6 +383,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderC on(ConstructorInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(v.getFullName());
                        return this;
@@ -423,6 +433,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderMF on(Field...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(info(v).getFullName());
                        return this;
@@ -435,6 +446,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderMF on(FieldInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(v.getFullName());
                        return this;
@@ -447,6 +459,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderMF on(Method...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(info(v).getFullName());
                        return this;
@@ -459,6 +472,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderMF on(MethodInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(v.getFullName());
                        return this;
@@ -499,6 +513,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderTM on(Method...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(info(v).getFullName());
                        return this;
@@ -511,6 +526,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderTM on(MethodInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(v.getFullName());
                        return this;
@@ -565,6 +581,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderTMF on(Field...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(info(v).getFullName());
                        return this;
@@ -577,6 +594,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderTMF on(FieldInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(v.getFullName());
                        return this;
@@ -589,6 +607,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderTMF on(Method...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(info(v).getFullName());
                        return this;
@@ -601,6 +620,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderTMF on(MethodInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(v.getFullName());
                        return this;
@@ -644,6 +664,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderTMFC on(Constructor<?>...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(info(v).getFullName());
                        return this;
@@ -656,6 +677,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                public BuilderTMFC on(ConstructorInfo...value) {
+                       assertVarargsNotNull("value", value);
                        for (var v : value)
                                on(v.getFullName());
                        return this;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/common/annotation/AnnotationObject_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/common/annotation/AnnotationObject_Test.java
index 57c3e300e3..75d662479e 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/common/annotation/AnnotationObject_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/common/annotation/AnnotationObject_Test.java
@@ -401,5 +401,16 @@ class AnnotationObject_Test extends TestBase {
                var a = TestAnnotationObject.create().build();
                assertNotEquals(a, null);
        }
+
+       
//------------------------------------------------------------------------------------------------------------------
+       // Null validation tests
+       
//------------------------------------------------------------------------------------------------------------------
+
+       @Test
+       void h01_nullBuilder_throwsException() {
+               assertThrows(IllegalArgumentException.class, () ->
+                       new TestAnnotationObject(null)
+               );
+       }
 }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/common/annotation/AppliedAnnotationObject_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/common/annotation/AppliedAnnotationObject_Test.java
index 81da56105d..0beea16060 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/common/annotation/AppliedAnnotationObject_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/common/annotation/AppliedAnnotationObject_Test.java
@@ -690,5 +690,81 @@ class AppliedAnnotationObject_Test extends TestBase {
                assertNotSame(a1, a2);
                assertEquals(a1, a2);
        }
+
+       
//------------------------------------------------------------------------------------------------------------------
+       // Null validation tests
+       
//------------------------------------------------------------------------------------------------------------------
+
+       @Test
+       void j01_nullClass_throwsException() {
+               assertThrows(IllegalArgumentException.class, () ->
+                       TestAppliedAnnotationObjectT.create()
+                               .on((Class<?>)null)
+                               .build()
+               );
+       }
+
+       @Test
+       void j02_nullClassInfo_throwsException() {
+               assertThrows(IllegalArgumentException.class, () ->
+                       TestAppliedAnnotationObjectT.create()
+                               .on((ClassInfo)null)
+                               .build()
+               );
+       }
+
+       @Test
+       void j03_nullMethod_throwsException() {
+               assertThrows(IllegalArgumentException.class, () ->
+                       TestAppliedAnnotationObjectM.create()
+                               .on((java.lang.reflect.Method)null)
+                               .build()
+               );
+       }
+
+       @Test
+       void j04_nullMethodInfo_throwsException() {
+               assertThrows(IllegalArgumentException.class, () ->
+                       TestAppliedAnnotationObjectM.create()
+                               .on((MethodInfo)null)
+                               .build()
+               );
+       }
+
+       @Test
+       void j05_nullField_throwsException() {
+               assertThrows(IllegalArgumentException.class, () ->
+                       TestAppliedAnnotationObjectMF.create()
+                               .on((java.lang.reflect.Field)null)
+                               .build()
+               );
+       }
+
+       @Test
+       void j06_nullFieldInfo_throwsException() {
+               assertThrows(IllegalArgumentException.class, () ->
+                       TestAppliedAnnotationObjectMF.create()
+                               .on((FieldInfo)null)
+                               .build()
+               );
+       }
+
+       @Test
+       void j07_nullConstructor_throwsException() {
+               assertThrows(IllegalArgumentException.class, () ->
+                       TestAppliedAnnotationObjectC.create()
+                               .on((java.lang.reflect.Constructor<?>)null)
+                               .build()
+               );
+       }
+
+       @Test
+       void j08_nullConstructorInfo_throwsException() {
+               assertThrows(IllegalArgumentException.class, () ->
+                       TestAppliedAnnotationObjectC.create()
+                               .on((ConstructorInfo)null)
+                               .build()
+               );
+       }
 }
 

Reply via email to