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