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 1f03dca492 Marshall module improvements
new 6b44068e3c Merge branch 'master' of
https://gitbox.apache.org/repos/asf/juneau
1f03dca492 is described below
commit 1f03dca49290d2ea2dfe09f5d01bc15082da3c78
Author: James Bognar <[email protected]>
AuthorDate: Fri Dec 12 08:46:56 2025 -0500
Marshall module improvements
---
.../src/main/java/org/apache/juneau/BeanMeta.java | 10 +++----
.../java/org/apache/juneau/BeanPropertyMeta.java | 33 +++++++++++-----------
.../apache/juneau/html/HtmlBeanPropertyMeta.java | 2 +-
3 files changed, 23 insertions(+), 22 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 37612e492d..1b52b036d8 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
@@ -122,7 +122,7 @@ public class BeanMeta<T> {
// Get the bean property type from the getter/field.
var pt = (Class<?>)null; // TODO - Convert to ClassInfo
if (nn(b.getter))
- pt = b.getter.getReturnType().inner();
+ pt = b.getter.getReturnType().inner();
else if (nn(b.field))
pt = b.field.inner().getType();
@@ -139,7 +139,7 @@ public class BeanMeta<T> {
if (b.setter == null)
return true;
- return
type.isStrictChildOf(b.setter.getParameterTypes()[0]);
+ return
type.isStrictChildOf(b.setter.getParameterTypes().get(0).inner());
}
}
@@ -439,7 +439,7 @@ public class BeanMeta<T> {
if (pd.getReadMethod() != null)
builder.setGetter(info(pd.getReadMethod()));
if (pd.getWriteMethod() != null)
-
builder.setSetter(pd.getWriteMethod());
+
builder.setSetter(info(pd.getWriteMethod()));
}
}
@@ -483,7 +483,7 @@ public class BeanMeta<T> {
bms.stream().filter(x -> eq(x.methodType,
SETTER)).forEach(x -> {
var bpm =
normalProps.get(x.propertyName);
if (x.matchesPropertyType(bpm))
- bpm.setSetter(x.method);
+ bpm.setSetter(info(x.method));
});
// Now iterate through all the extraKeys.
@@ -507,7 +507,7 @@ public class BeanMeta<T> {
_getterProps.put(p.getter.inner(), p.name);
if (nn(p.setter))
-
_setterProps.put(p.setter, p.name);
+
_setterProps.put(p.setter.inner(), p.name);
} else {
i.remove();
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 fdc9c12ab3..cd671ae7ea 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
@@ -68,7 +68,8 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
FieldInfo field; // Package-private for BeanMeta access
FieldInfo innerField; // Package-private for BeanMeta access
MethodInfo getter; // Package-private for BeanMeta access
- Method setter, extraKeys; // Package-private for BeanMeta
access. TODO - Replace with MethodInfo fields
+ MethodInfo setter; // Package-private for BeanMeta access
+ Method extraKeys; // Package-private for BeanMeta access. TODO
- Replace with MethodInfo field
private boolean isConstructorArg, isUri, isDyna,
isDynaGetterMap;
private ClassMeta<?> rawTypeMeta, typeMeta;
private List<String> properties;
@@ -260,13 +261,12 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
/**
* Sets the setter method for this bean property.
*
- * @param value The setter method for this bean property.
+ * @param value The setter method info for this bean property.
* @return This object.
*/
- public BeanPropertyMeta.Builder setSetter(Method value) {
+ public BeanPropertyMeta.Builder setSetter(MethodInfo value) {
assertArgNotNull("value", value);
- setAccessible(value);
- this.setter = value;
+ this.setter = value.accessible();
return this;
}
@@ -297,7 +297,7 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
var ifi = innerField;
var gi = getter;
- var si = setter == null ? null : info(setter);
+ var si = setter;
if (nn(innerField)) {
List<Beanp> lp = list();
@@ -345,7 +345,7 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
if (nn(setter)) {
var lp = ap.find(Beanp.class,
si).stream().map(AnnotationInfo::inner).toList();
if (rawTypeMeta == null)
- rawTypeMeta =
bc.resolveClassMeta(last(lp), setter.getGenericParameterTypes()[0],
typeVarImpls);
+ rawTypeMeta =
bc.resolveClassMeta(last(lp), setter.inner().getGenericParameterTypes()[0],
typeVarImpls);
isUri |= (rawTypeMeta.isUri() ||
ap.has(Uri.class, si));
lp.forEach(x -> {
if (swap == null)
@@ -388,13 +388,13 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
if (nn(setter)) {
var pt = setter.getParameterTypes();
if (isDyna) {
- if (pt.length == 2 && pt[0] ==
String.class) {
+ if (pt.size() == 2 &&
pt.get(0).inner().equals(String.class)) {
// OK.
} else {
return false;
}
} else {
- if (pt.length != 1 || !
ci.isChildOf(pt[0]))
+ if (pt.size() != 1 || !
ci.isChildOf(pt.get(0).inner()))
return false;
}
}
@@ -458,7 +458,8 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
private final FieldInfo innerField; //
The bean property field (if it has one).
private final MethodInfo getter; // The bean property getter.
- private final Method setter, extraKeys; // The bean property
setter and extraKeys.
+ private final MethodInfo setter; // The bean property setter.
+ private final Method extraKeys; // The bean property
extraKeys.
private final boolean isUri; // True if
this is a URL/URI or annotated with @URI.
private final boolean isDyna, isDynaGetterMap; // This is a
dyna property (i.e. name="*")
@@ -721,7 +722,7 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
if (nn(getter))
ap.find(a, getter, SELF, MATCHING_METHODS,
RETURN_TYPE,
PACKAGE).stream().map(AnnotationInfo::inner).filter(filter).forEach(action);
if (nn(setter))
- ap.find(a, info(setter), SELF,
MATCHING_METHODS, RETURN_TYPE,
PACKAGE).stream().map(AnnotationInfo::inner).filter(filter).forEach(action);
+ ap.find(a, setter, SELF, MATCHING_METHODS,
RETURN_TYPE,
PACKAGE).stream().map(AnnotationInfo::inner).filter(filter).forEach(action);
}
return this;
}
@@ -780,11 +781,11 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
}
if (nn(setter)) {
// Walk up the inheritance hierarchy for the setter
method
- forEachParentMethod(setter, parentSetter -> {
+ forEachParentMethod(setter.inner(), parentSetter -> {
ap.find(a, info(parentSetter), SELF,
MATCHING_METHODS, RETURN_TYPE, PACKAGE).forEach(x -> l.add(x.inner()));
});
ap.find(a, si, SELF, MATCHING_METHODS, RETURN_TYPE,
PACKAGE).forEach(x -> l.add(x.inner()));
- rstream(ap.find(a,
info(setter.getReturnType()))).forEach(x -> l.add(x.inner()));
+ rstream(ap.find(a, setter.getReturnType())).forEach(x
-> l.add(x.inner()));
}
if (nn(extraKeys)) {
var eki = info(extraKeys);
@@ -938,9 +939,9 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
/**
* Returns the setter method for this property.
*
- * @return The setter method for this bean property, or <jk>null</jk>
if there is no setter method.
+ * @return The setter method info for this bean property, or
<jk>null</jk> if there is no setter method.
*/
- public Method getSetter() { return setter; }
+ public MethodInfo getSetter() { return setter; }
@Override /* Overridden from Object */
public int hashCode() {
@@ -1267,7 +1268,7 @@ public class BeanPropertyMeta implements
Comparable<BeanPropertyMeta> {
"Cannot
set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no
setter or public field is defined, and the current value is null", name,
propertyClass.getName(), findClassName(value));
- if
(propertyClass.isInstance(valueList) || (nn(setter) &&
setter.getParameterTypes()[0] == Collection.class)) {
+ if
(propertyClass.isInstance(valueList) || (nn(setter) &&
setter.getParameterTypes().get(0).inner().equals(Collection.class))) {
if (!
elementType.isObject()) {
List l
= new JsonList(valueList);
for
(ListIterator<Object> i = l.listIterator(); i.hasNext();) {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlBeanPropertyMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlBeanPropertyMeta.java
index 2f1aae7f68..4223572fda 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlBeanPropertyMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlBeanPropertyMeta.java
@@ -87,7 +87,7 @@ public class HtmlBeanPropertyMeta extends
ExtendedBeanPropertyMeta {
if (nn(bpm.getGetter()))
ap.find(Html.class, bpm.getGetter()).forEach(x ->
b.findHtmlInfo(x.inner()));
if (nn(bpm.getSetter()))
- ap.find(Html.class, info(bpm.getSetter())).forEach(x ->
b.findHtmlInfo(x.inner()));
+ ap.find(Html.class, bpm.getSetter()).forEach(x ->
b.findHtmlInfo(x.inner()));
format = b.format;
noTables = b.noTables;