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 2a2807d456 org.apache.juneau.common.reflect API improvements
2a2807d456 is described below

commit 2a2807d456457f0b380e07833b9acaa1c6e239eb
Author: James Bognar <[email protected]>
AuthorDate: Thu Nov 20 09:02:13 2025 -0500

    org.apache.juneau.common.reflect API improvements
---
 .../org/apache/juneau/httppart/HttpPartSchema.java |  2 +-
 .../httppart/bean/RequestBeanPropertyMeta.java     |  4 ++--
 .../juneau/httppart/bean/ResponseBeanMeta.java     |  9 ++++----
 .../rest/client/remote/RemoteOperationMeta.java    | 20 +++++-------------
 .../juneau/http/remote/RrpcInterfaceMeta.java      |  2 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 12 +++++------
 .../juneau/rest/debug/BasicDebugEnablement.java    |  4 ++--
 .../apache/juneau/rest/servlet/RestServlet.java    |  9 +++++---
 .../rest/swagger/BasicSwaggerProviderSession.java  |  9 ++++----
 .../juneau/common/reflect/ClassInfo_Test.java      | 24 ----------------------
 10 files changed, 32 insertions(+), 63 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
index 5beaacee1e..637a58b283 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
@@ -2548,7 +2548,7 @@ public class HttpPartSchema {
 
                Builder apply(Class<? extends Annotation> c, 
java.lang.reflect.Type t) {
                        if (t instanceof Class<?>) {
-                               
rstream(ClassInfo.of((Class<?>)t).getAnnotations()).map(x -> 
x.cast(c)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(this::apply);
+                               AnnotationProvider.INSTANCE.findTopDown(c, 
ClassInfo.of((Class<?>)t)).map(AnnotationInfo::inner).forEach(this::apply);
                        } else if (Value.isType(t)) {
                                apply(c, getValueParameterType(t));
                        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
index 8b3bcf1fd0..517b589fe9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
@@ -66,8 +66,8 @@ public class RequestBeanPropertyMeta {
        static RequestBeanPropertyMeta.Builder create(HttpPartType partType, 
Class<? extends Annotation> c, MethodInfo m) {
                HttpPartSchema.Builder sb = 
HttpPartSchema.create().name(m.getPropertyName());
                AnnotationProvider ap = AnnotationProvider.INSTANCE;
-               ap.findTopDown(m).map(x -> 
x.cast(Schema.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> sb.apply(x));
-               ap.findTopDown(m).map(x -> 
x.cast(c)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x -> 
sb.apply(x));
+               ap.findTopDown(Schema.class, 
m).map(AnnotationInfo::inner).forEach(x -> sb.apply(x));
+               ap.findTopDown(c, m).map(AnnotationInfo::inner).forEach(x -> 
sb.apply(x));
                return new 
Builder().partType(partType).schema(sb.build()).getter(m.inner());
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
index f0757bfee8..e6fd406307 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
@@ -128,8 +128,8 @@ public class ResponseBeanMeta {
                var b = new Builder(annotations);
                b.apply(m.getReturnType().unwrap(Value.class, 
Optional.class).innerType());
                AnnotationProvider ap = AnnotationProvider.INSTANCE;
-               ap.findTopDown(m).map(x -> 
x.cast(Response.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> b.apply(x));
-               ap.findTopDown(m).map(x -> 
x.cast(StatusCode.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> b.apply(x));
+               ap.findTopDown(Response.class, 
m).map(AnnotationInfo::inner).forEach(x -> b.apply(x));
+               ap.findTopDown(StatusCode.class, 
m).map(AnnotationInfo::inner).forEach(x -> b.apply(x));
                return b.build();
        }
 
@@ -163,8 +163,9 @@ public class ResponseBeanMeta {
                        return null;
                var b = new Builder(annotations);
                b.apply(ci.innerType());
-               rstream(ci.getAnnotations()).map(x -> 
x.cast(Response.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> b.apply(x));
-               rstream(ci.getAnnotations()).map(x -> 
x.cast(StatusCode.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> b.apply(x));
+               var ai = AnnotationProvider.INSTANCE;
+               ai.findTopDown(Response.class, 
ci).map(AnnotationInfo::inner).forEach(x -> b.apply(x));
+               ai.findTopDown(StatusCode.class, 
ci).map(AnnotationInfo::inner).forEach(x -> b.apply(x));
                return b.build();
        }
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
index 430fef4ba8..bd1372a36b 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
@@ -146,9 +146,7 @@ public class RemoteOperationMeta {
                // These handle both individual annotations and repeated 
annotation arrays
 
                private void processContentDefaults(MethodInfo mi) {
-                       AnnotationProvider.INSTANCE.find(mi)
-                               .map(x -> x.cast(Content.class))
-                               .filter(Objects::nonNull)
+                       AnnotationProvider.INSTANCE.find(Content.class, mi)
                                .map(x -> x.inner().def())
                                .filter(x -> isNotBlank(x))
                                .findFirst()
@@ -156,36 +154,28 @@ public class RemoteOperationMeta {
                }
 
                private static void processFormDataDefaults(MethodInfo mi, 
Map<String,String> defaults) {
-                       AnnotationProvider.INSTANCE.findTopDown(mi)
-                               .map(x -> x.cast(FormData.class))
-                               .filter(Objects::nonNull)
+                       AnnotationProvider.INSTANCE.findTopDown(FormData.class, 
mi)
                                .map(AnnotationInfo::inner)
                                .filter(x -> isAnyNotEmpty(x.name(), x.value()) 
&& isNotEmpty(x.def()))
                                .forEach(x -> 
defaults.put(firstNonEmpty(x.name(), x.value()), x.def()));
                }
 
                private static void processHeaderDefaults(MethodInfo mi, 
Map<String,String> defaults) {
-                       AnnotationProvider.INSTANCE.findTopDown(mi)
-                               .map(x -> x.cast(Header.class))
-                               .filter(Objects::nonNull)
+                       AnnotationProvider.INSTANCE.findTopDown(Header.class, 
mi)
                                .map(AnnotationInfo::inner)
                                .filter(x -> isAnyNotEmpty(x.name(), x.value()) 
&& isNotEmpty(x.def()))
                                .forEach(x -> 
defaults.put(firstNonEmpty(x.name(), x.value()), x.def()));
                }
 
                private static void processPathDefaults(MethodInfo mi, 
Map<String,String> defaults) {
-                       AnnotationProvider.INSTANCE.findTopDown(mi)
-                               .map(x -> x.cast(Path.class))
-                               .filter(Objects::nonNull)
+                       AnnotationProvider.INSTANCE.findTopDown(Path.class, mi)
                                .map(AnnotationInfo::inner)
                                .filter(x -> isAnyNotEmpty(x.name(), x.value()) 
&& ne(NONE, x.def()))
                                .forEach(x -> 
defaults.put(firstNonEmpty(x.name(), x.value()), x.def()));
                }
 
                private static void processQueryDefaults(MethodInfo mi, 
Map<String,String> defaults) {
-                       AnnotationProvider.INSTANCE.findTopDown(mi)
-                               .map(x -> x.cast(Query.class))
-                               .filter(Objects::nonNull)
+                       AnnotationProvider.INSTANCE.findTopDown(Query.class, mi)
                                .map(AnnotationInfo::inner)
                                .filter(x -> isAnyNotEmpty(x.name(), x.value()) 
&& isNotEmpty(x.def()))
                                .forEach(x -> 
defaults.put(firstNonEmpty(x.name(), x.value()), x.def()));
diff --git 
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
 
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
index ba84100de3..57331a9ce1 100644
--- 
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
+++ 
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
@@ -58,7 +58,7 @@ public class RrpcInterfaceMeta {
                Value<String> path = Value.of("");
                var ci = ClassInfo.of(c);
 
-               rstream(ci.getAnnotations()).map(x -> 
x.cast(Remote.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).filter(x
 -> isNotEmpty(x.path())).forEach(x -> path.set(trimSlashes(x.path())));
+               AnnotationProvider.INSTANCE.findTopDown(Remote.class, ci).map(x 
-> x.inner().path()).filter(x -> isNotEmpty(x)).forEach(x -> 
path.set(trimSlashes(x)));
 
                Map<Method,RrpcInterfaceMethodMeta> methods = map();
                ci.getPublicMethods().stream().forEach(x -> 
methods.put(x.inner(), new RrpcInterfaceMethodMeta(uri, x.inner())));
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 90cef99500..fa96a8a6ae 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -206,7 +206,7 @@ public class RestContext extends Context {
                        // @formatter:off
                        ClassInfo.ofProxy(r).getAllMethodsTopDown().stream()
                                .filter(y -> y.hasAnnotation(annotation))
-                               .forEach(y -> ap.findTopDown(y).map(ai -> 
ai.cast(annotation)).filter(Objects::nonNull).map(AnnotationInfo::inner)
+                               .forEach(y -> ap.findTopDown(annotation, 
y).map(AnnotationInfo::inner)
                                        .filter(z -> predicate == null || 
predicate.test(z))
                                        .forEach(z -> x.put(y.getSignature(), 
y.accessible().inner())));
                        // @formatter:on
@@ -3852,7 +3852,7 @@ public class RestContext extends Context {
                        // @formatter:on
 
                        // Apply @Rest(beanStore).
-                       
rstream(ClassInfo.of(resourceClass).getAnnotations()).map(x -> 
x.cast(Rest.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).filter(x
 -> isNotVoid(x.beanStore())).forEach(x -> v.get().type(x.beanStore()));
+                       AnnotationProvider.INSTANCE.findTopDown(Rest.class, 
ClassInfo.of(resourceClass)).map(x -> x.inner().beanStore()).filter(x -> 
isNotVoid(x)).forEach(x -> v.get().type(x));
 
                        // Replace with bean from:  @RestInject public [static] 
BeanStore xxx(<args>)
                        // @formatter:off
@@ -3914,10 +3914,10 @@ public class RestContext extends Context {
                        var v = Value.<Config>empty();
 
                        // Find our config file.  It's the last non-empty 
@RestResource(config).
-               var vr = beanStore.getBean(VarResolver.class).orElseThrow(() -> 
new IllegalArgumentException("VarResolver not found."));
-               var cfv = Value.<String>empty();
-               rstream(ClassInfo.of(resourceClass).getAnnotations()).map(x -> 
x.cast(Rest.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).filter(x
 -> isNotEmpty(x.config())).forEach(x -> cfv.set(vr.resolve(x.config())));
-               var cf = cfv.orElse("");
+                       var vr = 
beanStore.getBean(VarResolver.class).orElseThrow(() -> new 
IllegalArgumentException("VarResolver not found."));
+                       var cfv = Value.<String>empty();
+                       AnnotationProvider.INSTANCE.findTopDown(Rest.class, 
ClassInfo.of(resourceClass)).map(x -> x.inner().config()).filter(x -> 
isNotEmpty(x)).forEach(x -> cfv.set(vr.resolve(x)));
+                       var cf = cfv.orElse("");
 
                        // If not specified or value is set to SYSTEM_DEFAULT, 
use system default config.
                        if (v.isEmpty() && "SYSTEM_DEFAULT".equals(cf))
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/BasicDebugEnablement.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/BasicDebugEnablement.java
index 5e9e5b8fc3..1971987559 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/BasicDebugEnablement.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/BasicDebugEnablement.java
@@ -74,7 +74,7 @@ public class BasicDebugEnablement extends DebugEnablement {
 
                // Gather @Rest(debug) settings.
                // @formatter:off
-               rstream(ci.getAnnotations()).map(x -> 
x.cast(Rest.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> {
+               ap.findTopDown(Rest.class, 
ci).map(AnnotationInfo::inner).forEach(x -> {
                        String x2 = varResolver.resolve(x.debug());
                        if (! x2.isEmpty())
                                b.enable(Enablement.fromString(x2), 
ci.getNameFull());
@@ -95,7 +95,7 @@ public class BasicDebugEnablement extends DebugEnablement {
 
                // Gather @Rest(debugOn) settings.
                // @formatter:off
-               rstream(ci.getAnnotations()).map(x -> 
x.cast(Rest.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> {
+               ap.findTopDown(Rest.class, 
ci).map(AnnotationInfo::inner).forEach(x -> {
                        String x2 = varResolver.resolve(x.debugOn());
                        for (var e : splitMap(x2, true).entrySet()) {
                                var k = e.getKey();
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
index 34fbdb89e0..0898405fc4 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
@@ -114,9 +114,12 @@ public abstract class RestServlet extends HttpServlet {
                if (nn(context))
                        return context.getFullPath();
                var ci = ClassInfo.of(getClass());
-               Value<String> path = Value.empty();
-               rstream(ci.getAnnotations()).map(x -> 
x.cast(Rest.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).filter(x
 -> isNotEmpty(x.path())).forEach(x -> path.set(trimSlashes(x.path())));
-               return path.orElse("");
+               return AnnotationProvider.INSTANCE.findTopDown(Rest.class, ci)
+                       .map(x -> x.inner().path())
+                       .filter(x -> isNotEmpty(x))
+                       .map(x -> trimSlashes(x))
+                       .findFirst()
+                       .orElse("");
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
index 1d99a31c48..ce1778c99f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
@@ -445,7 +445,7 @@ public class BasicSwaggerProviderSession {
                                                        JsonMap om = 
responses.getMap(String.valueOf(code), true);
                                                        merge(om, a);
                                                        JsonMap schema = 
getSchema(om.getMap("schema"), m.getGenericReturnType(), bs);
-                                                       
rstream(eci.getAnnotations()).map(x -> 
x.cast(Schema.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> merge(schema, x));
+                                                       
ap.findTopDown(Schema.class, eci).map(AnnotationInfo::inner).forEach(x -> 
merge(schema, x));
                                                        
pushupSchemaFields(RESPONSE, om, schema);
                                                        om.appendIf(nem, 
"schema", schema);
                                        }
@@ -461,8 +461,7 @@ public class BasicSwaggerProviderSession {
                                                        for (var code : codes) {
                                                                JsonMap header 
= responses.getMap(String.valueOf(code), true).getMap("headers", 
true).getMap(ha, true);
                                                                
ap.findTopDown(Schema.class, ecmi).map(x -> x.inner()).forEach(x -> 
merge(header, x));
-                                                       //      
context.getAnnotationProvider().xforEachMethodAnnotation(Schema.class, ecmi, x 
-> true, x -> merge(header, x));
-                                                               
rstream(ecmi.getReturnType().unwrap(Value.class, 
Optional.class).getAnnotations()).map(x -> 
x.cast(Schema.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> merge(header, x));
+                                                               
ap.findTopDown(Schema.class, ecmi.getReturnType().unwrap(Value.class, 
Optional.class)).map(AnnotationInfo::inner).forEach(x -> merge(header, x));
                                                                
pushupSchemaFields(RESPONSE_HEADER, header, getSchema(header.getMap("schema"), 
ecmi.getReturnType().unwrap(Value.class, Optional.class).innerType(), bs));
                                                        }
                                                }
@@ -502,7 +501,7 @@ public class BasicSwaggerProviderSession {
                                                                        JsonMap 
header = responses.getMap(String.valueOf(code), true).getMap("headers", 
true).getMap(ha, true);
                                                                        
//context.getAnnotationProvider().xforEachMethodAnnotation(Schema.class, ecmi, 
x -> true, x -> merge(header, x));
                                                                        
ap.findTopDown(Schema.class, ecmi).map(x -> x.inner()).forEach(x -> 
merge(header, x));
-                                                                       
rstream(ecmi.getReturnType().unwrap(Value.class, 
Optional.class).getAnnotations()).map(x -> 
x.cast(Schema.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> merge(header, x));
+                                                                       
ap.findTopDown(Schema.class, ecmi.getReturnType().unwrap(Value.class, 
Optional.class)).map(AnnotationInfo::inner).forEach(x -> merge(header, x));
                                                                        
merge(header, a.schema());
                                                                        
pushupSchemaFields(RESPONSE_HEADER, header, getSchema(header, 
ecmi.getReturnType().innerType(), bs));
                                                                }
@@ -514,7 +513,7 @@ public class BasicSwaggerProviderSession {
                                JsonMap om = responses.getMap("200", true);
                                var pt2 = 
ClassInfo.of(m.getGenericReturnType());
                                JsonMap schema = getSchema(om.getMap("schema"), 
m.getGenericReturnType(), bs);
-                               rstream(pt2.getAnnotations()).map(x -> 
x.cast(Schema.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x
 -> merge(schema, x));
+                               ap.findTopDown(Schema.class, 
pt2).map(AnnotationInfo::inner).forEach(x -> merge(schema, x));
                                pushupSchemaFields(RESPONSE, om, schema);
                                om.appendIf(nem, "schema", schema);
                                addBodyExamples(sm, om, true, 
m.getGenericReturnType(), locale);
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
index 2d8f64b6ce..d2d49b39a4 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
@@ -568,30 +568,6 @@ public class ClassInfo_Test extends TestBase {
                assertThrows(IllegalArgumentException.class, 
()->g3.hasAnnotation(null));
        }
 
-       @Test void getAnnotations() {
-               check("@A(2),@A(1),@A(5),@A(3),@A(6),@A(7)", 
rstream(g3.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai).map(x -> 
x.cast(A.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).toList());
-               check("@A(2),@A(1),@A(5),@A(3),@A(6),@A(7)", 
rstream(g4.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai).map(x -> 
x.cast(A.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).toList());
-               check("@A(3)", rstream(g5.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).map(x -> 
x.cast(A.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).toList());
-       }
-
-       @Test void forEachAnnotation() {
-               var l1 = list();
-               rstream(g3.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).map(x -> 
x.cast(A.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x 
-> l1.add(x.value()));
-               assertList(l1, "2", "1", "5", "3", "6", "7");
-
-               var l2 = list();
-               rstream(g4.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).map(x -> 
x.cast(A.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x 
-> l2.add(x.value()));
-               assertList(l2, "2", "1", "5", "3", "6", "7");
-
-               var l3 = list();
-               rstream(g5.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).map(x -> 
x.cast(A.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).forEach(x 
-> l3.add(x.value()));
-               assertList(l3, "3");
-
-               var l4 = list();
-               rstream(g3.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).map(x -> 
x.cast(A.class)).filter(Objects::nonNull).map(AnnotationInfo::inner).filter(x 
-> x.value() == 5).forEach(x -> l4.add(x.value()));
-               assertList(l4, "5");
-       }
-
        @Test void lastAnnotation() {
                // Use AnnotationProvider to get last annotation (first in 
child-to-parent order stream)
                var ap = 
org.apache.juneau.common.reflect.AnnotationProvider.INSTANCE;

Reply via email to