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/causeway.git


The following commit(s) were added to refs/heads/master by this push:
     new 4f8275b74f CAUSEWAY-3408: demo app: fixes 'created' lifecycle event is 
never emitted
4f8275b74f is described below

commit 4f8275b74f400b79bbfc01fe096ad9526bbdee55
Author: Andi Huber <[email protected]>
AuthorDate: Wed Apr 26 11:39:29 2023 +0200

    CAUSEWAY-3408: demo app: fixes 'created' lifecycle event is never
    emitted
---
 .../core/runtimeservices/factory/FactoryServiceDefault.java |  3 ++-
 .../demoapp/dom/_infra/values/ValueHolderRepository.java    | 13 ++++++++-----
 .../xxxLifecycleEvent/DomainObjectXxxLifecycleEvent.java    | 10 ++++++++--
 .../jpa/DomainObjectXxxLifecycleEventJpa.java               |  5 ++---
 4 files changed, 20 insertions(+), 11 deletions(-)

diff --git 
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/factory/FactoryServiceDefault.java
 
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/factory/FactoryServiceDefault.java
index 4a56c4a41a..3dc52ad364 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/factory/FactoryServiceDefault.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/factory/FactoryServiceDefault.java
@@ -91,7 +91,8 @@ public class FactoryServiceDefault implements FactoryService {
         if(!spec.isEntity()) {
             throw _Exceptions.illegalArgument("Type '%s' is not recognized as 
an entity type by the framework.",
                     entityClass);
-        }        
objectLifecyclePublisher().onPostCreate(ManagedObject.entity(spec, entityPojo, 
Optional.empty()));
+        }
+        objectLifecyclePublisher().onPostCreate(ManagedObject.entity(spec, 
entityPojo, Optional.empty()));
         return entityPojo;
     }
 
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolderRepository.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolderRepository.java
index cb0ddedbc4..22f8a1df90 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolderRepository.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolderRepository.java
@@ -28,11 +28,11 @@ import javax.inject.Inject;
 
 import org.apache.causeway.applib.services.repository.RepositoryService;
 
+import demoapp.dom.types.Samples;
 import lombok.AccessLevel;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
-
-import demoapp.dom.types.Samples;
+import lombok.val;
 
 @RequiredArgsConstructor(access = AccessLevel.PROTECTED)
 public abstract class ValueHolderRepository<T, E extends ValueHolder<T>> {
@@ -65,12 +65,15 @@ public abstract class ValueHolderRepository<T, E extends 
ValueHolder<T>> {
         return all.isEmpty() ? Collections.emptyList() : 
Collections.singletonList(all.get(0));
     }
 
-    public void remove(Object entity) {
+    public void remove(final Object entity) {
         repositoryService.removeAndFlush(entity);
     }
 
-    public E create(T value) {
-        return repositoryService.persistAndFlush(newDetachedEntity(value));
+    public E create(final T value) {
+        // emits 'created' life-cycle event
+        val detachedEntity = 
repositoryService.detachedEntity(newDetachedEntity(value));
+        // persist
+        return repositoryService.persistAndFlush(detachedEntity);
     }
 
 
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/DomainObjectXxxLifecycleEvent.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/DomainObjectXxxLifecycleEvent.java
index da2c0da85b..f8ad8fe43a 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/DomainObjectXxxLifecycleEvent.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/DomainObjectXxxLifecycleEvent.java
@@ -33,7 +33,6 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolder;
 import 
demoapp.dom.domain.objects.DomainObject.xxxLifecycleEvent.jpa.DomainObjectXxxLifecycleEventJpa;
 
-@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 //tag::class[]
 @DomainObject(
         nature = Nature.ENTITY,
@@ -49,7 +48,8 @@ public abstract class DomainObjectXxxLifecycleEvent
 //end::class[]
         implements
         HasAsciiDocDescription,
-        ValueHolder<String>
+        ValueHolder<String>,
+        Comparable<DomainObjectXxxLifecycleEvent>
 //tag::class[]
 {
     public interface LifecycleEvent {                                          
             // <.>
@@ -94,6 +94,12 @@ public abstract class DomainObjectXxxLifecycleEvent
     public abstract String getName();
     public abstract void setName(String value);
 
+    @Override
+    public int compareTo(final DomainObjectXxxLifecycleEvent o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
 //tag::class[]
 }
 //end::class[]
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/jpa/DomainObjectXxxLifecycleEventJpa.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/jpa/DomainObjectXxxLifecycleEventJpa.java
index b71d9cc6d5..cbb45a21af 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/jpa/DomainObjectXxxLifecycleEventJpa.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/jpa/DomainObjectXxxLifecycleEventJpa.java
@@ -31,12 +31,11 @@ import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.annotation.Nature;
 import 
org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
 
+import 
demoapp.dom.domain.objects.DomainObject.xxxLifecycleEvent.DomainObjectXxxLifecycleEvent;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import 
demoapp.dom.domain.objects.DomainObject.xxxLifecycleEvent.DomainObjectXxxLifecycleEvent;
-
 @Profile("demo-jpa")
 @Entity
 @Table(
@@ -55,7 +54,7 @@ public class DomainObjectXxxLifecycleEventJpa
     // ...
 //end::class[]
 
-    public DomainObjectXxxLifecycleEventJpa(String value) {
+    public DomainObjectXxxLifecycleEventJpa(final String value) {
         setName(value);
     }
 

Reply via email to