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 9a80f2cb11 Marshall module improvements
9a80f2cb11 is described below

commit 9a80f2cb11b55fe985fba3d86ee84bb1f56351e0
Author: James Bognar <[email protected]>
AuthorDate: Sat Dec 6 21:26:12 2025 -0500

    Marshall module improvements
---
 .../src/main/java/org/apache/juneau/BeanMeta.java         | 15 +++++++++++++--
 .../src/main/java/org/apache/juneau/BeanMetaFiltered.java |  2 +-
 .../src/main/java/org/apache/juneau/ClassMeta.java        |  2 +-
 3 files changed, 15 insertions(+), 4 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 0d7b1461b3..d492c0ecc4 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
@@ -33,6 +33,7 @@ import java.util.function.*;
 
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.commons.reflect.Visibility;
 import org.apache.juneau.commons.utils.*;
@@ -67,6 +68,16 @@ import org.apache.juneau.commons.utils.*;
  */
 public class BeanMeta<T> {
 
+       public static <T> Tuple2<BeanMeta<T>,String> create(ClassMeta<T> cm, 
BeanFilter bf, String[] pNames, ConstructorInfo noArgConstructor) {
+               try {
+                       var bm = new BeanMeta<>(cm, bf, pNames, 
noArgConstructor);
+                       var nabr = bm.notABeanReason;
+                       return Tuple2.of(nabr == null ? bm : null, nabr);
+               } catch (RuntimeException e) {
+                       return Tuple2.of(null, e.getMessage());
+               }
+       }
+
        /*
         * Temporary getter/setter method struct.
         */
@@ -886,9 +897,9 @@ public class BeanMeta<T> {
         * @param pNames Explicit list of property names and order of 
properties.  If <jk>null</jk>, determine automatically.
         * @param implClassConstructor The constructor to use if one cannot be 
found.  Can be <jk>null</jk>.
         */
-       protected BeanMeta(ClassMeta<T> classMeta, BeanContext ctx, BeanFilter 
beanFilter, String[] pNames, ConstructorInfo implClassConstructor) {
+       protected BeanMeta(ClassMeta<T> classMeta, BeanFilter beanFilter, 
String[] pNames, ConstructorInfo implClassConstructor) {
                this.classMeta = classMeta;
-               this.ctx = ctx;
+               this.ctx = classMeta.getBeanContext();
                this.c = classMeta.inner();
 
                Builder<T> b = new Builder<>(classMeta, ctx, beanFilter, 
pNames, implClassConstructor);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMetaFiltered.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMetaFiltered.java
index 6688f05a5c..8eab5d9274 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMetaFiltered.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMetaFiltered.java
@@ -45,6 +45,6 @@ public class BeanMetaFiltered<T> extends BeanMeta<T> {
         * @param pNames The list of transformed property names.
         */
        public BeanMetaFiltered(BeanMeta<T> innerMeta, String[] pNames) {
-               super(innerMeta.classMeta, innerMeta.ctx, innerMeta.beanFilter, 
pNames, null);
+               super(innerMeta.classMeta, innerMeta.beanFilter, pNames, null);
        }
 }
\ No newline at end of file
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 59b175f655..ba3f41179f 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
@@ -297,7 +297,7 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
                                notABeanReason = "Known non-bean type";
                        } else {
                                try {
-                                       _beanMeta = new 
BeanMeta<>(ClassMeta.this, beanContext, beanFilter.get(), null, implClass.get() 
== null ? null : noArgConstructor.get());
+                                       _beanMeta = new 
BeanMeta<>(ClassMeta.this, beanFilter.get(), null, implClass.get() == null ? 
null : noArgConstructor.get());
                                        notABeanReason = 
_beanMeta.notABeanReason;
                                } catch (RuntimeException e) {
                                        notABeanReason = e.getMessage();

Reply via email to