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