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 dc2832910f Marshall module improvements
dc2832910f is described below
commit dc2832910f639c8b8a713ce9d5ba3ea2e97ad8cc
Author: James Bognar <[email protected]>
AuthorDate: Wed Dec 10 10:28:43 2025 -0500
Marshall module improvements
---
.../src/main/java/org/apache/juneau/ClassMeta.java | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
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 097cfaad48..320d6c30db 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
@@ -158,7 +158,7 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
private final Supplier<Property<T,Object>> nameProperty;
// The method to set the name on an object (if it has one).
private final OptionalSupplier<ConstructorInfo> noArgConstructor;
// The no-arg constructor for this class (if it has one).
private final Supplier<Property<T,Object>> parentProperty;
// The method to set the parent on an object (if it has one).
- private final Map<String,Optional<?>> properties = new
ConcurrentHashMap<>();
+ private final Cache<String,Optional<?>> properties;
private final Mutater<String,T> stringMutater;
private final OptionalSupplier<ConstructorInfo> stringConstructor;
// The X(String) constructor (if it has one).
private final Supplier<List<ObjectSwap<T,?>>> swaps;
// The object POJO swaps associated with this bean (if it has any).
@@ -253,6 +253,7 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
nameProperty = memoize(()->findNameProperty());
noArgConstructor = memoize(()->findNoArgConstructor());
parentProperty = memoize(()->findParentProperty());
+ properties = Cache.<String,Optional<?>>create().build();
stringConstructor = memoize(()->findStringConstructor());
swaps = memoize(()->findSwaps());
@@ -292,6 +293,7 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
this.nameProperty = memoize(()->findNameProperty());
this.exampleField = memoize(()->findExampleField());
this.noArgConstructor = memoize(()->findNoArgConstructor());
+ this.properties = Cache.<String,Optional<?>>create().build();
this.stringConstructor = memoize(()->findStringConstructor());
this.marshalledFilter = memoize(()->findMarshalledFilter());
this.builderSwap = memoize(()->findBuilderSwap());
@@ -326,6 +328,7 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
this.nameProperty = mainType.nameProperty;
this.exampleField = mainType.exampleField;
this.noArgConstructor = mainType.noArgConstructor;
+ this.properties = mainType.properties;
this.stringConstructor = mainType.stringConstructor;
this.marshalledFilter = mainType.marshalledFilter;
this.builderSwap = mainType.builderSwap;
@@ -694,12 +697,7 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
*/
@SuppressWarnings("unchecked")
public <T2> Optional<T2> getProperty(String name,
Function<ClassMeta<?>,T2> function) {
- var t = properties.get(name);
- if (t == null) {
- t = opt(function.apply(this));
- properties.put(name, t);
- }
- return (Optional<T2>)t;
+ return (Optional<T2>)properties.get(name, () ->
opt(function.apply(this)));
}
/**