You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2024/11/12 06:36:21 UTC

(causeway) branch v3 updated: CAUSEWAY-2297: lazy body introspection for class cache

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v3
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/v3 by this push:
     new dca42bf6295 CAUSEWAY-2297: lazy body introspection for class cache
dca42bf6295 is described below

commit dca42bf629552971e354fcf559fe4567455b5a6a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Nov 12 07:36:17 2024 +0100

    CAUSEWAY-2297: lazy body introspection for class cache
---
 .../causeway/commons/internal/reflection/_ClassCache.java     | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/commons/src/main/java/org/apache/causeway/commons/internal/reflection/_ClassCache.java b/commons/src/main/java/org/apache/causeway/commons/internal/reflection/_ClassCache.java
index 64a7fc43003..d5caeba430c 100644
--- a/commons/src/main/java/org/apache/causeway/commons/internal/reflection/_ClassCache.java
+++ b/commons/src/main/java/org/apache/causeway/commons/internal/reflection/_ClassCache.java
@@ -49,6 +49,7 @@ import org.apache.causeway.commons.internal._Constants;
 import org.apache.causeway.commons.internal.annotations.BeanInternal;
 import org.apache.causeway.commons.internal.assertions._Assert;
 import org.apache.causeway.commons.internal.base._Casts;
+import org.apache.causeway.commons.internal.base._Lazy;
 import org.apache.causeway.commons.internal.base._NullSafe;
 import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.commons.internal.collections._Arrays;
@@ -134,7 +135,7 @@ public final class _ClassCache implements AutoCloseable {
         return classModel(type).head();
     }
 
-    public ClassModelBody body(final Class<?> type) {
+    private ClassModelBody body(final Class<?> type) {
         return classModel(type).body();
     }
 
@@ -377,7 +378,10 @@ public final class _ClassCache implements AutoCloseable {
 
     private record ClassModel(
             ClassModelHead head,
-            ClassModelBody body) {
+            _Lazy<ClassModelBody> lazyBody) {
+        ClassModelBody body() {
+            return lazyBody.get();
+        }
     }
 
     private final Map<Class<?>, ClassModel> inspectedTypes = new HashMap<>();
@@ -466,8 +470,7 @@ public final class _ClassCache implements AutoCloseable {
     private ClassModel inspectType(final Class<?> _type) {
         final Class<?> type = reloadType(_type);
         var head = ClassModelHead.create(type);
-        var body = ClassModelBody.create(type, head);
-        return new ClassModel(head, body);
+        return new ClassModel(head, _Lazy.threadSafe(()->ClassModelBody.create(type, head)));
     }
 
     /**