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 f9afdc0034 org.apache.juneau.common.reflect API improvements
f9afdc0034 is described below
commit f9afdc0034af125c57ce281a671adf1574bb1ddb
Author: James Bognar <[email protected]>
AuthorDate: Thu Nov 20 09:26:28 2025 -0500
org.apache.juneau.common.reflect API improvements
---
.../juneau/common/reflect/AnnotationProvider.java | 2 +-
.../main/java/org/apache/juneau/BeanPropertyMeta.java | 17 +++++++++--------
.../apache/juneau/common/reflect/MethodInfo_Test.java | 6 ++----
3 files changed, 12 insertions(+), 13 deletions(-)
diff --git
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
index 4789ba1aad..fdde9aebca 100644
---
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
+++
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
@@ -669,7 +669,7 @@ public class AnnotationProvider {
assertArgNotNull("type", type);
assertArgNotNull("method", method);
if (traversals.length == 0)
- traversals = a(SELF, MATCHING_METHODS, RETURN_TYPE,
PACKAGE);
+ traversals = a(SELF, MATCHING_METHODS, DECLARING_CLASS,
RETURN_TYPE, PACKAGE);
return Arrays.stream(traversals)
.sorted(Comparator.comparingInt(AnnotationTraversal::getOrder))
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index 6803a1a637..837eb714a9 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau;
+import static org.apache.juneau.common.reflect.AnnotationTraversal.*;
import static org.apache.juneau.common.utils.ClassUtils.*;
import static org.apache.juneau.common.utils.CollectionUtils.*;
import static org.apache.juneau.common.utils.StringUtils.*;
@@ -643,8 +644,8 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
BeanContext bc = beanContext;
if (nn(a)) {
if (nn(field)) bc.getAnnotationProvider().find(a,
FieldInfo.of(field)).map(x -> x.inner()).filter(filter).forEach(action);
- if (nn(getter)) bc.getAnnotationProvider().find(a,
MethodInfo.of(getter)).map(x -> x.inner()).filter(filter).forEach(action);
- if (nn(setter)) bc.getAnnotationProvider().find(a,
MethodInfo.of(setter)).map(x -> x.inner()).filter(filter).forEach(action);
+ if (nn(getter)) bc.getAnnotationProvider().find(a,
MethodInfo.of(getter), SELF, MATCHING_METHODS, RETURN_TYPE, PACKAGE).map(x ->
x.inner()).filter(filter).forEach(action);
+ if (nn(setter)) bc.getAnnotationProvider().find(a,
MethodInfo.of(setter), SELF, MATCHING_METHODS, RETURN_TYPE, PACKAGE).map(x ->
x.inner()).filter(filter).forEach(action);
}
return this;
}
@@ -696,26 +697,26 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
if (nn(gi)) {
// Walk up the inheritance hierarchy for the getter
method
forEachParentMethod(getter, parentGetter -> {
- ap.find(a, MethodInfo.of(parentGetter)).map(x
-> x.inner()).forEach(x -> l.add(x));
+ ap.find(a, MethodInfo.of(parentGetter), SELF,
MATCHING_METHODS, RETURN_TYPE, PACKAGE).map(x -> x.inner()).forEach(x ->
l.add(x));
});
- ap.find(a, gi).map(x -> x.inner()).forEach(x ->
l.add(x));
+ ap.find(a, gi, SELF, MATCHING_METHODS, RETURN_TYPE,
PACKAGE).map(x -> x.inner()).forEach(x -> l.add(x));
ap.findTopDown(a, gi.getReturnType()).map(x ->
x.inner()).forEach(x -> l.add(x));
}
if (nn(setter)) {
// Walk up the inheritance hierarchy for the setter
method
forEachParentMethod(setter, parentSetter -> {
- ap.find(a, MethodInfo.of(parentSetter)).map(x
-> x.inner()).forEach(x -> l.add(x));
+ ap.find(a, MethodInfo.of(parentSetter), SELF,
MATCHING_METHODS, RETURN_TYPE, PACKAGE).map(x -> x.inner()).forEach(x ->
l.add(x));
});
- ap.find(a, si).map(x -> x.inner()).forEach(x ->
l.add(x));
+ ap.find(a, si, SELF, MATCHING_METHODS, RETURN_TYPE,
PACKAGE).map(x -> x.inner()).forEach(x -> l.add(x));
ap.findTopDown(a,
ClassInfo.of(setter.getReturnType())).map(x -> x.inner()).forEach(x ->
l.add(x));
}
if (nn(extraKeys)) {
MethodInfo eki = MethodInfo.of(extraKeys);
// Walk up the inheritance hierarchy for the extraKeys
method
forEachParentMethod(extraKeys, parentExtraKeys -> {
- ap.find(a,
MethodInfo.of(parentExtraKeys)).map(x -> x.inner()).forEach(x -> l.add(x));
+ ap.find(a, MethodInfo.of(parentExtraKeys),
SELF, MATCHING_METHODS, RETURN_TYPE, PACKAGE).map(x -> x.inner()).forEach(x ->
l.add(x));
});
- ap.find(a, eki).map(x -> x.inner()).filter(x ->
true).forEach(x -> l.add(x));
+ ap.find(a, eki, SELF, MATCHING_METHODS, RETURN_TYPE,
PACKAGE).map(x -> x.inner()).filter(x -> true).forEach(x -> l.add(x));
ap.findTopDown(a,
ClassInfo.of(extraKeys.getReturnType())).map(x -> x.inner()).forEach(x ->
l.add(x));
}
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/MethodInfo_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/MethodInfo_Test.java
index f08540c2a8..11fed59691 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/MethodInfo_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/MethodInfo_Test.java
@@ -30,6 +30,7 @@ import java.util.stream.*;
import org.apache.juneau.*;
import org.apache.juneau.annotation.*;
+import org.apache.juneau.common.utils.*;
import org.apache.juneau.svl.*;
import org.junit.jupiter.api.*;
@@ -351,10 +352,7 @@ class MethodInfo_Test extends TestBase {
}
private static List<A> annotations(MethodInfo mi, Class<? extends
Annotation> a) {
- var l = new ArrayList<A>();
- rstream(mi.getAllAnnotations()).map(x ->
x.cast(a)).filter(Objects::nonNull).map(AnnotationInfo::inner)
- .forEach(x -> l.add((A)x));
- return l;
+ return AnnotationProvider.INSTANCE.findTopDown(a,
mi).map(AnnotationInfo::inner).map(PredicateUtils.peek()).map(x ->
(A)x).collect(Collectors.toList());
}
@Test void getAnnotationAny() {