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 5ee816404e Marshall module improvements
5ee816404e is described below
commit 5ee816404e3ed23b14bcea3ff400a2fb8ffb12f1
Author: James Bognar <[email protected]>
AuthorDate: Sun Dec 7 17:09:07 2025 -0500
Marshall module improvements
---
.../src/main/java/org/apache/juneau/BeanMeta.java | 13 ++++++++++++-
.../src/main/java/org/apache/juneau/ClassMeta.java | 12 +++++++-----
2 files changed, 19 insertions(+), 6 deletions(-)
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 94a7adade4..ccf33cb513 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
@@ -808,7 +808,7 @@ public class BeanMeta<T> {
return s;
}
- return classMeta
+ var n = classMeta
.getParentsAndInterfaces()
.stream()
.skip(1)
@@ -819,6 +819,17 @@ public class BeanMeta<T> {
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
+
+ if (n != null)
+ return n;
+
+ return
classMeta.getBeanContext().getAnnotationProvider().find(Bean.class, classMeta)
+ .stream()
+ .map(AnnotationInfo::inner)
+ .filter(x -> ! x.typeName().isEmpty())
+ .map(x -> x.typeName())
+ .findFirst()
+ .orElse(null);
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
index de15c8d5b0..49ffc13c58 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
@@ -568,7 +568,8 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
* @return The bean registry for this class, or <jk>null</jk> if no
bean registry is associated with it.
*/
public BeanRegistry getBeanRegistry() {
- return beanMeta == null ? null : beanMeta.getBeanRegistry();
+ var bm = getBeanMeta();
+ return bm == null ? null : bm.getBeanRegistry();
}
/**
@@ -988,7 +989,7 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
*
* @return <jk>true</jk> if this class is a bean.
*/
- public boolean isBean() { return beanMeta != null; }
+ public boolean isBean() { return nn(getBeanMeta()); }
/**
* Returns <jk>true</jk> if this class is a subclass of {@link BeanMap}.
@@ -1139,7 +1140,7 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
*
* @return <jk>true</jk> if this class is a subclass of {@link Map} or
it's a bean.
*/
- public boolean isMapOrBean() { return cat.is(MAP) || nn(beanMeta); }
+ public boolean isMapOrBean() { return cat.is(MAP) || nn(getBeanMeta());
}
/**
* Returns <jk>true</jk> if this class is {@link Method}.
@@ -1439,8 +1440,9 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
if (beanContext == null)
return null;
- if (nn(beanMeta) && beanMeta.getDictionaryName() != null)
- return beanMeta.getDictionaryName();
+ var bm = getBeanMeta();
+ if (nn(bm) && bm.getDictionaryName() != null)
+ return bm.getDictionaryName();
return beanContext.getAnnotationProvider().find(Bean.class,
this)
.stream()