This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch ISIS-3110 in repository https://gitbox.apache.org/repos/asf/isis.git
commit 62aebee91b34e10fd47acd2fef674882b881d219 Author: Dan Haywood <[email protected]> AuthorDate: Thu Aug 4 07:04:37 2022 +0100 ISIS-3110: fixes up compile issues resulting from deletion of unneeded superclass --- .../publish/LifecycleCallbackNotifier.java | 120 +++++++++------------ .../PersistenceCallbackHandlerAbstract.java | 61 ----------- .../changetracking/EntityChangeTrackerDefault.java | 22 +--- .../DomainModelTest_usingBadDomain.java | 8 +- 4 files changed, 63 insertions(+), 148 deletions(-) diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/LifecycleCallbackNotifier.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/LifecycleCallbackNotifier.java index d6a941c67e..fbd6d448a8 100644 --- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/LifecycleCallbackNotifier.java +++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/LifecycleCallbackNotifier.java @@ -32,11 +32,15 @@ import org.springframework.stereotype.Component; import org.apache.isis.applib.annotation.InteractionScope; import org.apache.isis.applib.annotation.PriorityPrecedence; +import org.apache.isis.applib.events.lifecycle.AbstractLifecycleEvent; import org.apache.isis.applib.services.bookmark.Bookmark; import org.apache.isis.applib.services.eventbus.EventBusService; +import org.apache.isis.applib.services.iactnlayer.InteractionService; +import org.apache.isis.commons.internal.factory._InstanceUtil; import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet; import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet; import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet; +import org.apache.isis.core.metamodel.facets.object.callbacks.LifecycleEventFacet; import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet; import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet; import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet; @@ -51,10 +55,12 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFa import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet; import org.apache.isis.core.metamodel.spec.ManagedObject; import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices; -import org.apache.isis.core.transaction.changetracking.PersistenceCallbackHandlerAbstract; import org.apache.isis.core.transaction.changetracking.events.PostStoreEvent; import org.apache.isis.core.transaction.changetracking.events.PreStoreEvent; +import lombok.RequiredArgsConstructor; +import lombok.val; + /** * Calls lifecycle callbacks for entities, ensuring that any given entity is only ever called once. * @since 2.0 {@index} @@ -62,97 +68,75 @@ import org.apache.isis.core.transaction.changetracking.events.PreStoreEvent; @Component @Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".LifecycleCallbackNotifier") @Priority(PriorityPrecedence.EARLY) +@RequiredArgsConstructor(onConstructor_ = {@Inject}) @Qualifier("Default") -@InteractionScope //@Log4j2 -public class LifecycleCallbackNotifier extends PersistenceCallbackHandlerAbstract { - - private final Set<ManagedObject> postCreated = new LinkedHashSet<>(); - private final Set<ManagedObject> postLoaded = new LinkedHashSet<>(); - private final Set<ManagedObject> prePersisted = new LinkedHashSet<>(); - private final Set<ManagedObject> postPersisted = new LinkedHashSet<>(); - private final Set<ManagedObject> preUpdated = new LinkedHashSet<>(); - private final Set<ManagedObject> postUpdated = new LinkedHashSet<>(); - private final Set<ManagedObject> preRemoved = new LinkedHashSet<>(); - - @Inject - public LifecycleCallbackNotifier(EventBusService eventBusService) { - super(eventBusService); - } +public class LifecycleCallbackNotifier { + + final EventBusService eventBusService; public void postCreate(ManagedObject entity) { - notify(entity, - postCreated, - e -> { - CallbackFacet.callCallback(entity, CreatedCallbackFacet.class); - postLifecycleEventIfRequired(entity, CreatedLifecycleEventFacet.class); - }); + CallbackFacet.callCallback(entity, CreatedCallbackFacet.class); + postLifecycleEventIfRequired(entity, CreatedLifecycleEventFacet.class); } public void postLoad(ManagedObject entity) { - notify(entity, - postLoaded, - e -> { - CallbackFacet.callCallback(entity, LoadedCallbackFacet.class); - postLifecycleEventIfRequired(entity, LoadedLifecycleEventFacet.class); - }); + CallbackFacet.callCallback(entity, LoadedCallbackFacet.class); + postLifecycleEventIfRequired(entity, LoadedLifecycleEventFacet.class); } public void prePersist(ManagedObject entity) { - notify(entity, - prePersisted, - e -> { - eventBusService.post(PreStoreEvent.of(entity.getPojo())); - CallbackFacet.callCallback(entity, PersistingCallbackFacet.class); - postLifecycleEventIfRequired(entity, PersistingLifecycleEventFacet.class); - }); + eventBusService.post(PreStoreEvent.of(entity.getPojo())); + CallbackFacet.callCallback(entity, PersistingCallbackFacet.class); + postLifecycleEventIfRequired(entity, PersistingLifecycleEventFacet.class); } public void postPersist(ManagedObject entity) { - notify(entity, - postPersisted, - e -> { - eventBusService.post(PostStoreEvent.of(entity.getPojo())); - CallbackFacet.callCallback(entity, PersistedCallbackFacet.class); - postLifecycleEventIfRequired(entity, PersistedLifecycleEventFacet.class); - }); + eventBusService.post(PostStoreEvent.of(entity.getPojo())); + CallbackFacet.callCallback(entity, PersistedCallbackFacet.class); + postLifecycleEventIfRequired(entity, PersistedLifecycleEventFacet.class); } public void preUpdate(ManagedObject entity) { - notify(entity, - preUpdated, - e -> { - eventBusService.post(PreStoreEvent.of(entity.getPojo())); - CallbackFacet.callCallback(entity, UpdatingCallbackFacet.class); - postLifecycleEventIfRequired(entity, UpdatingLifecycleEventFacet.class); - }); + eventBusService.post(PreStoreEvent.of(entity.getPojo())); + CallbackFacet.callCallback(entity, UpdatingCallbackFacet.class); + postLifecycleEventIfRequired(entity, UpdatingLifecycleEventFacet.class); } public void postUpdate(ManagedObject entity) { - notify(entity, - postUpdated, - e -> { - CallbackFacet.callCallback(entity, UpdatedCallbackFacet.class); - postLifecycleEventIfRequired(entity, UpdatedLifecycleEventFacet.class); - }); + CallbackFacet.callCallback(entity, UpdatedCallbackFacet.class); + postLifecycleEventIfRequired(entity, UpdatedLifecycleEventFacet.class); } public void preRemove(ManagedObject entity) { - notify(entity, - preRemoved, - e -> { - CallbackFacet.callCallback(entity, RemovingCallbackFacet.class); - postLifecycleEventIfRequired(entity, RemovingLifecycleEventFacet.class); - }); + CallbackFacet.callCallback(entity, RemovingCallbackFacet.class); + postLifecycleEventIfRequired(entity, RemovingLifecycleEventFacet.class); + } + + + // -- HELPER + + @SuppressWarnings({ "unchecked", "rawtypes" }) + protected void postLifecycleEventIfRequired( + final ManagedObject adapter, + final Class<? extends LifecycleEventFacet> lifecycleEventFacetClass) { + + val lifecycleEventFacet = adapter.getSpecification().getFacet(lifecycleEventFacetClass); + if(lifecycleEventFacet == null) { + return; + } + val eventInstance = (AbstractLifecycleEvent) _InstanceUtil + .createInstance(lifecycleEventFacet.getEventType()); + val pojo = adapter.getPojo(); + postEvent(eventInstance, pojo); + } - private static void notify(ManagedObject entity, Set<ManagedObject> notified, Consumer<ManagedObject> notify) { - Optional.of(entity) - .filter(x -> !notified.contains(x)) - .ifPresent(x -> { - notify.accept(entity); - notified.add(x); - }); + protected void postEvent(final AbstractLifecycleEvent<Object> event, final Object pojo) { + if(eventBusService!=null) { + event.initSource(pojo); + eventBusService.post(event); + } } } diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PersistenceCallbackHandlerAbstract.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PersistenceCallbackHandlerAbstract.java deleted file mode 100644 index 88f17fcaa5..0000000000 --- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PersistenceCallbackHandlerAbstract.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.isis.core.transaction.changetracking; - -import org.apache.isis.applib.events.lifecycle.AbstractLifecycleEvent; -import org.apache.isis.applib.services.eventbus.EventBusService; -import org.apache.isis.commons.internal.factory._InstanceUtil; -import org.apache.isis.core.metamodel.facets.object.callbacks.LifecycleEventFacet; -import org.apache.isis.core.metamodel.spec.ManagedObject; - -import lombok.AccessLevel; -import lombok.RequiredArgsConstructor; -import lombok.val; - -@RequiredArgsConstructor(access = AccessLevel.PROTECTED) -public abstract class PersistenceCallbackHandlerAbstract { - - protected final EventBusService eventBusService; - - // -- HELPER - - @SuppressWarnings({ "unchecked", "rawtypes" }) - protected void postLifecycleEventIfRequired( - final ManagedObject adapter, - final Class<? extends LifecycleEventFacet> lifecycleEventFacetClass) { - - val lifecycleEventFacet = adapter.getSpecification().getFacet(lifecycleEventFacetClass); - if(lifecycleEventFacet == null) { - return; - } - val eventInstance = (AbstractLifecycleEvent) _InstanceUtil - .createInstance(lifecycleEventFacet.getEventType()); - val pojo = adapter.getPojo(); - postEvent(eventInstance, pojo); - - } - - protected void postEvent(final AbstractLifecycleEvent<Object> event, final Object pojo) { - if(eventBusService!=null) { - event.initSource(pojo); - eventBusService.post(event); - } - } - -} diff --git a/persistence/commons/src/main/java/org/apache/isis/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java b/persistence/commons/src/main/java/org/apache/isis/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java index dbf8a49d21..8c9450a0c8 100644 --- a/persistence/commons/src/main/java/org/apache/isis/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java +++ b/persistence/commons/src/main/java/org/apache/isis/persistence/jpa/integration/changetracking/EntityChangeTrackerDefault.java @@ -65,12 +65,12 @@ import org.apache.isis.core.transaction.changetracking.EntityChangeTracker; import org.apache.isis.core.transaction.changetracking.EntityChangesPublisher; import org.apache.isis.core.transaction.changetracking.EntityPropertyChangePublisher; import org.apache.isis.core.transaction.changetracking.HasEnlistedEntityChanges; -import org.apache.isis.core.transaction.changetracking.PersistenceCallbackHandlerAbstract; import org.apache.isis.core.transaction.events.TransactionBeforeCompletionEvent; import lombok.AccessLevel; import lombok.Getter; import lombok.NonNull; +import lombok.RequiredArgsConstructor; import lombok.val; import lombok.extern.log4j.Log4j2; @@ -82,9 +82,9 @@ import lombok.extern.log4j.Log4j2; @Priority(PriorityPrecedence.EARLY) @Qualifier("default") @InteractionScope +@RequiredArgsConstructor(onConstructor_ = {@Inject}) @Log4j2 public class EntityChangeTrackerDefault -extends PersistenceCallbackHandlerAbstract implements MetricsService, EntityChangeTracker, @@ -108,25 +108,13 @@ implements @Getter(AccessLevel.PACKAGE) private final Map<Bookmark, EntityChangeKind> changeKindByEnlistedAdapter = _Maps.newLinkedHashMap(); - private final EntityPropertyChangePublisher entityPropertyChangePublisher; - private final EntityChangesPublisher entityChangesPublisher; - private final Provider<InteractionProvider> interactionProviderProvider; - private final LongAdder numberEntitiesLoaded = new LongAdder(); private final LongAdder entityChangeEventCount = new LongAdder(); private final AtomicBoolean persistentChangesEncountered = new AtomicBoolean(); - @Inject - public EntityChangeTrackerDefault( - final EntityPropertyChangePublisher entityPropertyChangePublisher, - final EntityChangesPublisher entityChangesPublisher, - final EventBusService eventBusService, - final Provider<InteractionProvider> interactionProviderProvider) { - super(eventBusService); - this.entityPropertyChangePublisher = entityPropertyChangePublisher; - this.entityChangesPublisher = entityChangesPublisher; - this.interactionProviderProvider = interactionProviderProvider; - } + private final EntityPropertyChangePublisher entityPropertyChangePublisher; + private final EntityChangesPublisher entityChangesPublisher; + private final Provider<InteractionProvider> interactionProviderProvider; Set<PropertyChangeRecord> snapshotPropertyChangeRecords() { // this code path has side-effects, it locks the result for this transaction, diff --git a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java index 5486678a75..09e698a575 100644 --- a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java +++ b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java @@ -46,6 +46,7 @@ import org.apache.isis.applib.annotation.Property; import org.apache.isis.applib.annotation.PropertyLayout; import org.apache.isis.applib.exceptions.unrecoverable.DomainModelException; import org.apache.isis.applib.id.LogicalType; +import org.apache.isis.applib.services.iactnlayer.InteractionService; import org.apache.isis.commons.collections.Can; import org.apache.isis.core.config.IsisConfiguration; import org.apache.isis.core.config.environment.IsisSystemEnvironment; @@ -91,6 +92,7 @@ import lombok.val; class DomainModelTest_usingBadDomain { @Inject private IsisConfiguration configuration; + @Inject private InteractionService interactionService; @Inject private IsisSystemEnvironment isisSystemEnvironment; @Inject private SpecificationLoader specificationLoader; @Inject private DomainObjectTesterFactory testerFactory; @@ -99,8 +101,10 @@ class DomainModelTest_usingBadDomain { @BeforeEach void setup() { - validator = new DomainModelValidator(specificationLoader, configuration, isisSystemEnvironment); - assertThrows(DomainModelException.class, validator::throwIfInvalid); + interactionService.runAnonymous(() -> { + validator = new DomainModelValidator(specificationLoader, configuration, isisSystemEnvironment); + assertThrows(DomainModelException.class, validator::throwIfInvalid); + }); }
