This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/main by this push:
new a464c48f309 CAUSEWAY-3884: makes ManagedObject#other(..) public
a464c48f309 is described below
commit a464c48f309b6249c677707903b81d20adbcd23e
Author: andi-huber <[email protected]>
AuthorDate: Sat Apr 19 11:37:39 2025 +0200
CAUSEWAY-3884: makes ManagedObject#other(..) public
- that is to allow working with detached entity pojos in a light weight
fashion, treating them as data snapshots, not considering state changes
---
.../org/apache/causeway/core/metamodel/object/ManagedObject.java | 6 +++++-
.../apache/causeway/core/metamodel/object/ManagedObjectOther.java | 6 +++---
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObject.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObject.java
index 946f83f59e8..643cb3bce90 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObject.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObject.java
@@ -533,13 +533,17 @@ static ManagedObject mixin(
}
/**
* OTHER
+ * @apiNote potential use case: allows to work with detached entity pojos
+ * in a light weight fashion,
+ * treating them as data snapshots, not considering state changes
+ * (e.g. reuse of ORM metadata while accessing a secondary data store)
* @param spec - required
* @param pojo - if <code>null</code> maps to {@link
#empty(ObjectSpecification)}
* @see ManagedObject.Specialization.TypePolicy#EXACT_TYPE_REQUIRED
* @see ManagedObject.Specialization.BookmarkPolicy#NO_BOOKMARK
* @see ManagedObject.Specialization.PojoPolicy#STATEFUL
*/
- private static ManagedObject other(
+ public static ManagedObject other(
final @NonNull ObjectSpecification spec,
final @Nullable Object pojo) {
return pojo != null
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObjectOther.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObjectOther.java
index e562b2214f8..4ef564034ec 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObjectOther.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ManagedObjectOther.java
@@ -20,7 +20,6 @@
import org.jspecify.annotations.NonNull;
-import org.apache.causeway.commons.internal.assertions._Assert;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
/**
@@ -36,8 +35,9 @@ record ManagedObjectOther(
final ObjectSpecification objSpec,
final Object pojo) {
this.objSpec = objSpec;
- _Assert.assertTrue(!objSpec.isValue());
- _Assert.assertTrue(!objSpec.isEntityOrViewModel());
+ // don't make any assumptions on potential use-cases, hence commented
out ...
+ //_Assert.assertTrue(!objSpec.isValue());
+ //_Assert.assertTrue(!objSpec.isEntityOrViewModel());
this.pojo = specialization().assertCompliance(objSpec, pojo);
}