You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2025/11/07 13:48:44 UTC

(juneau) 03/03: Utility class modernization

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

commit ea867cde4e1e3f880de695d1f38e1d5df47c2de9
Author: James Bognar <ja...@salesforce.com>
AuthorDate: Fri Nov 7 08:48:35 2025 -0500

    Utility class modernization
---
 .../juneau/common/reflect/ConstructorInfo.java     | 29 ----------------------
 .../src/main/java/org/apache/juneau/BeanMeta.java  |  8 +++---
 .../java/org/apache/juneau/swap/AutoListSwap.java  |  2 +-
 .../java/org/apache/juneau/swap/AutoMapSwap.java   |  2 +-
 .../org/apache/juneau/swap/AutoNumberSwap.java     |  2 +-
 .../org/apache/juneau/swap/AutoObjectSwap.java     |  2 +-
 .../java/org/apache/juneau/swap/SurrogateSwap.java |  2 +-
 7 files changed, 8 insertions(+), 39 deletions(-)

diff --git a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ConstructorInfo.java b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ConstructorInfo.java
index 864f7c32e1..c132c62c55 100644
--- a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ConstructorInfo.java
+++ b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ConstructorInfo.java
@@ -16,14 +16,8 @@
  */
 package org.apache.juneau.common.reflect;
 
-import static org.apache.juneau.common.utils.PredicateUtils.*;
-import static org.apache.juneau.common.utils.Utils.*;
-
-import java.lang.annotation.*;
 import java.lang.reflect.*;
-import java.util.function.*;
 
-import org.apache.juneau.common.collections.*;
 import org.apache.juneau.common.utils.*;
 
 /**
@@ -126,29 +120,6 @@ public class ConstructorInfo extends ExecutableInfo implements Comparable<Constr
 		return i;
 	}
 
-	/**
-	 * Returns <jk>true</jk> if the specified annotation is present on this constructor.
-	 *
-	 * @param <A> The annotation type to look for.
-	 * @param annotationProvider The annotation provider.
-	 * @param type The annotation to look for.
-	 * @return <jk>true</jk> if the specified annotation is present on this constructor.
-	 */
-	public <A extends Annotation> boolean hasAnnotation(AnnotationProvider annotationProvider, Class<A> type) {
-		return nn(annotationProvider.find(type, c).map(x -> x.inner()).filter(x -> true).findFirst().orElse(null));
-	}
-
-	/**
-	 * Returns <jk>true</jk> if the specified annotation is not present on this constructor.
-	 *
-	 * @param <A> The annotation type to look for.
-	 * @param annotationProvider The annotation provider.
-	 * @param type The annotation to look for.
-	 * @return <jk>true</jk> if the specified annotation is not present on this constructor.
-	 */
-	public <A extends Annotation> boolean hasNoAnnotation(AnnotationProvider annotationProvider, Class<A> type) {
-		return ! hasAnnotation(annotationProvider, type);
-	}
 
 	/**
 	 * Returns the wrapped method.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
index 59c434b924..e9cb5c93d8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
@@ -248,13 +248,12 @@ public class BeanMeta<T> {
 					return "Class is not serializable";
 
 				// Look for @Beanc constructor on public constructors.
-				ci.getPublicConstructors().stream().filter(x -> x.hasAnnotation(ctx.getAnnotationProvider(), Beanc.class)).forEach(x -> {
+				ci.getPublicConstructors().stream().filter(x -> ctx.getAnnotationProvider().find(Beanc.class, x.inner()).findAny().isPresent()).forEach(x -> {
 					if (nn(constructor))
 						throw new BeanRuntimeException(c, "Multiple instances of '@Beanc' found.");
 					constructor = x;
 					constructorArgs = new String[0];
-					// Inline Context.forEachAnnotation() call
-				ctx.getAnnotationProvider().find(Beanc.class, x.inner()).map(x2 -> x2.inner()).filter(y -> ! y.properties().isEmpty()).forEach(z -> constructorArgs = splita(z.properties()));
+					ctx.getAnnotationProvider().find(Beanc.class, x.inner()).map(x2 -> x2.inner()).filter(y -> ! y.properties().isEmpty()).forEach(z -> constructorArgs = splita(z.properties()));
 					if (! x.hasNumParameters(constructorArgs.length)) {
 						if (constructorArgs.length != 0)
 						throw new BeanRuntimeException(c, "Number of properties defined in '@Beanc' annotation does not match number of parameters in constructor.");
@@ -272,12 +271,11 @@ public class BeanMeta<T> {
 
 				// Look for @Beanc on all other constructors.
 				if (constructor == null) {
-					ci.getDeclaredConstructors().stream().filter(x -> x.hasAnnotation(ctx.getAnnotationProvider(), Beanc.class)).forEach(x -> {
+					ci.getDeclaredConstructors().stream().filter(x -> ctx.getAnnotationProvider().find(Beanc.class, x.inner()).findAny().isPresent()).forEach(x -> {
 						if (nn(constructor))
 							throw new BeanRuntimeException(c, "Multiple instances of '@Beanc' found.");
 						constructor = x;
 						constructorArgs = new String[0];
-						// Inline Context.forEachAnnotation() call
 						ctx.getAnnotationProvider().find(Beanc.class, x.inner()).map(x2 -> x2.inner()).filter(y -> ! y.properties().isEmpty()).forEach(z -> constructorArgs = splita(z.properties()));
 						if (! x.hasNumParameters(constructorArgs.length)) {
 							if (constructorArgs.length != 0)
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
index 3a14d76c32..45732efb93 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
@@ -143,7 +143,7 @@ public class AutoListSwap<T> extends ObjectSwap<T,List<?>> {
 			cs.isNotDeprecated()
 			&& cs.isVisible(bc.getBeanConstructorVisibility())
 			&& cs.hasMatchingParameterTypes(rt)
-			&& cs.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.class);
+			&& bc.getAnnotationProvider().find(BeanIgnore.class, cs.inner()).findAny().isEmpty();
 		// @formatter:on
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
index a9d32c15d5..c4898a0908 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
@@ -143,7 +143,7 @@ public class AutoMapSwap<T> extends ObjectSwap<T,Map<?,?>> {
 			cs.isNotDeprecated()
 			&& cs.isVisible(bc.getBeanConstructorVisibility())
 			&& cs.hasMatchingParameterTypes(rt)
-			&& cs.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.class);
+			&& bc.getAnnotationProvider().find(BeanIgnore.class, cs.inner()).findAny().isEmpty();
 		// @formatter:on
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
index bf707e94b1..684533fa0f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
@@ -168,7 +168,7 @@ public class AutoNumberSwap<T> extends ObjectSwap<T,Number> {
 			cs.isNotDeprecated()
 			&& cs.isVisible(bc.getBeanConstructorVisibility())
 			&& cs.hasMatchingParameterTypes(rt)
-			&& cs.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.class);
+			&& bc.getAnnotationProvider().find(BeanIgnore.class, cs.inner()).findAny().isEmpty();
 		// @formatter:on
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
index 81754f114c..58afc73217 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
@@ -144,7 +144,7 @@ public class AutoObjectSwap<T> extends ObjectSwap<T,Object> {
 			cs.isNotDeprecated()
 			&& cs.isVisible(bc.getBeanConstructorVisibility())
 			&& cs.hasMatchingParameterTypes(rt)
-			&& cs.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.class);
+			&& bc.getAnnotationProvider().find(BeanIgnore.class, cs.inner()).findAny().isEmpty();
 		// @formatter:on
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
index 99eff33f27..623d5856a7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
@@ -54,7 +54,7 @@ public class SurrogateSwap<T,F> extends ObjectSwap<T,F> {
 	public static List<SurrogateSwap<?,?>> findObjectSwaps(Class<?> c, BeanContext bc) {
 		List<SurrogateSwap<?,?>> l = new LinkedList<>();
 		var ci = ClassInfo.of(c);
-		ci.getPublicConstructors().stream().filter(x -> x.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.class) && x.hasNumParameters(1) && x.isPublic()).forEach(x -> {
+		ci.getPublicConstructors().stream().filter(x -> bc.getAnnotationProvider().find(BeanIgnore.class, x.inner()).findAny().isEmpty() && x.hasNumParameters(1) && x.isPublic()).forEach(x -> {
 			var pt = x.getParameter(0).getParameterType().inner();
 			if (! pt.equals(c.getDeclaringClass())) {
 				// Find the unswap method if there is one.