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

Reply via email to