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)));
}
/**