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

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


The following commit(s) were added to refs/heads/master by this push:
     new 3ccdc0143d ISIS-3265: just notes and comments
3ccdc0143d is described below

commit 3ccdc0143d0b9effd491c2557f8aaa74013dacb0
Author: Andi Huber <[email protected]>
AuthorDate: Thu Oct 27 10:37:23 2022 +0200

    ISIS-3265: just notes and comments
---
 .../object/_ManagedObjectEntityBookmarked.java     |  2 ++
 .../metamodel/objectmanager/ObjectManager.java     | 24 ++++++++++++++++------
 .../entities/DnObjectProviderForCauseway.java      |  2 +-
 .../applib/integration/CausewayEntityListener.java |  8 +-------
 4 files changed, 22 insertions(+), 14 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_ManagedObjectEntityBookmarked.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_ManagedObjectEntityBookmarked.java
index 4c9bcb898b..6f4993b60c 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_ManagedObjectEntityBookmarked.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_ManagedObjectEntityBookmarked.java
@@ -89,6 +89,8 @@ implements _Refetchable {
             return pojo; // is attached
         }
 
+        //FIXME[ISIS-3265] this getPojo() call might originate from a 
CausewayEntityListener.onPostLoad event,
+        // in which case we get into a loop that results in a stack overflow
         val refetchedIfSuccess = entityFacet.fetchByBookmark(bookmark);
 
         if(refetchedIfSuccess.isEmpty()) {
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/ObjectManager.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/ObjectManager.java
index c5c967770e..d0686c5450 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/ObjectManager.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/ObjectManager.java
@@ -66,9 +66,9 @@ public interface ObjectManager extends HasMetaModelContext {
                     _Exceptions.unrecoverable("failed to create memento for  
%s", object.getSpecification()));
     }
 
-    //FIXME why not use loadObject(bookmark) instead
+    //TODO why not use loadObject(bookmark) instead
     ManagedObject demementify(final ObjectMemento memento);
-    //FIXME why not use loadObject(bookmark) instead
+    //TODO why not use loadObject(bookmark) instead
     default ManagedObject demementify(final ObjectSpecification spec, final 
ObjectMemento memento) {
         return demementify(memento);
     }
@@ -77,7 +77,8 @@ public interface ObjectManager extends HasMetaModelContext {
 
     /**
      * Creates and initializes an instance conforming to given request 
parameters.
-     * @param objectCreateRequest
+     * <p>
+     * Resolves injection-points for the result. (Handles service injection.)
      */
     public default ManagedObject createObject(final ObjectSpecification 
objectCreateRequest) {
         return getObjectCreator().createObject(objectCreateRequest);
@@ -85,7 +86,8 @@ public interface ObjectManager extends HasMetaModelContext {
 
     /**
      * Loads an instance identified with given request parameters.
-     * @param objectLoadRequest
+     * <p>
+     * Resolves injection-points for the result. (Handles service injection.)
      */
     public default ManagedObject loadObject(final ProtoObject 
objectLoadRequest) {
         return getObjectLoader().loadObject(objectLoadRequest);
@@ -94,7 +96,7 @@ public interface ObjectManager extends HasMetaModelContext {
     /**
      * Recovers an object (graph) from given {@code bookmark}.
      * <p>
-     * Resolves injection-points for the result.
+     * Resolves injection-points for the result. (Handles service injection.)
      * <p>
      * Supports alias lookup.
      */
@@ -107,6 +109,9 @@ public interface ObjectManager extends HasMetaModelContext {
                 .map(this::loadObject);
     }
 
+    /**
+     * @see #loadObject(Bookmark)
+     */
     default ManagedObject loadObjectElseFail(final @NonNull Bookmark bookmark) 
{
         val adapter = loadObject(bookmark)
                 .orElseThrow(()->
@@ -118,6 +123,9 @@ public interface ObjectManager extends HasMetaModelContext {
         return adapter;
     }
 
+    /**
+     * Resolves injection-points for the result. (Handles service injection.)
+     */
     public default Can<ManagedObject> queryObjects(final 
ObjectBulkLoader.Request objectQuery) {
         return getObjectBulkLoader().loadObject(objectQuery);
     }
@@ -151,8 +159,10 @@ public interface ObjectManager extends HasMetaModelContext 
{
     // -- ADAPTING POJOS
 
     /**
-     * Not suitable for adapting a non-scalar
+     * Not suitable for adapting a non-scalar.
      * If {@code pojo} is an entity, automatically memoizes its bookmark.
+     * <p>
+     * Resolves injection-points for the result. (Handles service injection.)
      */
     public default ManagedObject adapt(final @Nullable Object pojo) {
         return adapt(pojo, ()->specForType(Object.class).orElseThrow());
@@ -161,6 +171,8 @@ public interface ObjectManager extends HasMetaModelContext {
     /**
      * Suitable for adapting a non-scalar.
      * If {@code pojo} is an entity, automatically memoizes its bookmark.
+     * <p>
+     * Resolves injection-points for the result. (Handles service injection.)
      */
     public default ManagedObject adapt(
             final @Nullable Object pojo,
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/entities/DnObjectProviderForCauseway.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/entities/DnObjectProviderForCauseway.java
index 09f183231d..aaa96fe4b5 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/entities/DnObjectProviderForCauseway.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/causeway/persistence/jdo/datanucleus/entities/DnObjectProviderForCauseway.java
@@ -190,7 +190,7 @@ extends ReferentialStateManagerImpl {
     private final Map<Object, PreDirtyPropagationLock> 
preDirtyPropagationLocks =
             _Maps.newHashMap();
 
-    //TODO there is probably only ever one id per instance: verify an simplify
+    //TODO there is probably only ever one id per instance: verify and simplify
     private final PreDirtyPropagationLock createPreDirtyPropagationLock(final 
Object id) {
         return ()->preDirtyPropagationLocks.remove(id);
     }
diff --git 
a/persistence/jpa/applib/src/main/java/org/apache/causeway/persistence/jpa/applib/integration/CausewayEntityListener.java
 
b/persistence/jpa/applib/src/main/java/org/apache/causeway/persistence/jpa/applib/integration/CausewayEntityListener.java
index fec8f0610f..fa1a8708f6 100644
--- 
a/persistence/jpa/applib/src/main/java/org/apache/causeway/persistence/jpa/applib/integration/CausewayEntityListener.java
+++ 
b/persistence/jpa/applib/src/main/java/org/apache/causeway/persistence/jpa/applib/integration/CausewayEntityListener.java
@@ -62,23 +62,19 @@ import lombok.extern.log4j.Log4j2;
 @Log4j2
 public class CausewayEntityListener {
 
-    // not managed by Spring (directly)
-    //@Inject private ServiceInjector serviceInjector;
+    // injection points resolved via constructor ...
     @Inject private ObjectLifecyclePublisher objectLifecyclePublisher;
     @Inject private Provider<JpaSupportService> jpaSupportServiceProvider;
     @Inject private ObjectManager objectManager;
-    //@Inject private EventBusService eventBusService;
 
     @PrePersist void onPrePersist(final Object entityPojo) {
         log.debug("onPrePersist: {}", entityPojo);
-        //serviceInjector.injectServicesInto(entityPojo);
         val entity = objectManager.adapt(entityPojo);
         objectLifecyclePublisher.onPrePersist(Either.left(entity));
     }
 
     @PostLoad void onPostLoad(final Object entityPojo) {
         log.debug("onPostLoad: {}", entityPojo);
-        //serviceInjector.injectServicesInto(entityPojo);
         val entity = objectManager.adapt(entityPojo);
         objectLifecyclePublisher.onPostLoad(entity);
     }
@@ -87,7 +83,6 @@ public class CausewayEntityListener {
     @PreUpdate void onPreUpdate(final Object entityPojo) {
         log.debug("onPreUpdate: {}", entityPojo);
 
-        //serviceInjector.injectServicesInto(entityPojo);
         val entity = objectManager.adapt(entityPojo);
 
         val entityManagerResult = 
jpaSupportServiceProvider.get().getEntityManager(entityPojo.getClass());
@@ -125,7 +120,6 @@ public class CausewayEntityListener {
 
     @PreRemove void onPreRemove(final Object entityPojo) {
         log.debug("onAnyRemove: {}", entityPojo);
-        //serviceInjector.injectServicesInto(entityPojo);
         val entity = objectManager.adapt(entityPojo);
         objectLifecyclePublisher.onPreRemove(entity);
     }

Reply via email to