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()

Reply via email to