You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/03/31 07:08:44 UTC

[isis] branch master updated (f385f53 -> 3d8b642)

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

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


    from f385f53  ISIS-2346 - Tab Layout isn't using 100% Width
     new 0e0a676  ISIS-2573: house keeping
     new 3d8b642  ISIS-2573: prepare xray integration f. EntityChangeTrackerDefault

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../core/interaction/scope/InteractionScope.java   |  2 +-
 .../interaction/session/InteractionFactory.java    |  2 +-
 .../interaction/session/InteractionTracker.java    |  2 +-
 .../apache/isis/core/runtime/util/XrayUtil.java    |  2 +-
 .../session/InteractionFactoryDefault.java         |  6 +-
 .../changetracking/EntityChangeTrackerDefault.java | 38 ++++++------
 ...erAndProperty.java => _AdapterAndProperty.java} | 10 ++--
 ...sFactory.java => _ChangingEntitiesFactory.java} |  6 +-
 ...tory.java => _EntityPropertyChangeFactory.java} |  8 +--
 ...reAndPostValues.java => _PreAndPostValues.java} | 22 ++++---
 ...hangeRecord.java => _PropertyChangeRecord.java} |  8 +--
 ...gEntities.java => _SimpleChangingEntities.java} |  5 +-
 .../core/transaction/changetracking/_Xray.java     | 68 ++++++++++++++++++++++
 .../PreAndPostValues_shouldAudit_Test.java         | 10 ++--
 .../javafx/ui/components/object/ObjectViewFx.java  |  2 +-
 .../vaadin/ui/components/object/ObjectViewVaa.java |  2 +-
 .../viewer/vaadin/viewer/IsisServletForVaadin.java |  2 +-
 .../applayer/ApplicationLayerTestFactory.java      |  4 +-
 .../viewer/resources/ResourceAbstract.java         |  2 +-
 .../wicket/ui/app/logout/LogoutHandlerWkt.java     |  2 +-
 .../wicket/ui/panels/FormExecutorDefault.java      |  2 +-
 .../viewer/integration/LocalizerForIsis.java       |  2 +-
 .../viewer/integration/WebRequestCycleForIsis.java |  2 +-
 23 files changed, 137 insertions(+), 72 deletions(-)
 rename core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/{AdapterAndProperty.java => _AdapterAndProperty.java} (89%)
 rename core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/{ChangingEntitiesFactory.java => _ChangingEntitiesFactory.java} (97%)
 rename core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/{EntityPropertyChangeFactory.java => _EntityPropertyChangeFactory.java} (90%)
 rename core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/{PreAndPostValues.java => _PreAndPostValues.java} (85%)
 rename core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/{PropertyChangeRecord.java => _PropertyChangeRecord.java} (81%)
 rename core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/{SimpleChangingEntities.java => _SimpleChangingEntities.java} (95%)
 create mode 100644 core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_Xray.java

[isis] 02/02: ISIS-2573: prepare xray integration f. EntityChangeTrackerDefault

Posted by ah...@apache.org.
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

commit 3d8b6427dba927b62abb27fc6361721a8b5756c3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Mar 31 09:08:23 2021 +0200

    ISIS-2573: prepare xray integration f. EntityChangeTrackerDefault
---
 .../changetracking/EntityChangeTrackerDefault.java |  6 ++++++
 .../core/transaction/changetracking/_Xray.java     | 24 +++++++++++++++++-----
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java
index acf573c..eea4d60 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java
@@ -323,6 +323,7 @@ implements
 
     @Override
     public void enlistCreated(ManagedObject entity) {
+        _Xray.enlistCreated(entity);
         val hasAlreadyBeenEnlisted = isEnlisted(entity);
         enlistCreatedInternal(entity);
 
@@ -334,6 +335,7 @@ implements
 
     @Override
     public void enlistDeleting(ManagedObject entity) {
+        _Xray.enlistDeleting(entity);
         enlistDeletingInternal(entity);
         CallbackFacet.Util.callCallback(entity, RemovingCallbackFacet.class);
         postLifecycleEventIfRequired(entity, RemovingLifecycleEventFacet.class);
@@ -341,6 +343,7 @@ implements
 
     @Override
     public void enlistUpdating(ManagedObject entity) {
+        _Xray.enlistUpdating(entity);
         val hasAlreadyBeenEnlisted = isEnlisted(entity);
         // we call this come what may;
         // additional properties may now have been changed, and the changeKind for publishing might also be modified
@@ -355,6 +358,7 @@ implements
 
     @Override
     public void recognizeLoaded(ManagedObject entity) {
+        _Xray.recognizeLoaded(entity);
         CallbackFacet.Util.callCallback(entity, LoadedCallbackFacet.class);
         postLifecycleEventIfRequired(entity, LoadedLifecycleEventFacet.class);
         numberEntitiesLoaded.increment();
@@ -362,12 +366,14 @@ implements
 
     @Override
     public void recognizePersisting(ManagedObject entity) {
+        _Xray.recognizePersisting(entity);        
         CallbackFacet.Util.callCallback(entity, PersistingCallbackFacet.class);
         postLifecycleEventIfRequired(entity, PersistingLifecycleEventFacet.class);
     }
 
     @Override
     public void recognizeUpdating(ManagedObject entity) {
+        _Xray.recognizeUpdating(entity);
         CallbackFacet.Util.callCallback(entity, UpdatedCallbackFacet.class);
         postLifecycleEventIfRequired(entity, UpdatedLifecycleEventFacet.class);
     }
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_Xray.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_Xray.java
index fae5f40..f87801b 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_Xray.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_Xray.java
@@ -18,37 +18,51 @@
  */
 package org.apache.isis.core.transaction.changetracking;
 
+import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 final class _Xray {
 
     public static void enlistCreated(ManagedObject entity) {
+        if(!XrayUi.isXrayEnabled()) {
+            return;
+        }
         // TODO Auto-generated method stub
     }
 
     public static void enlistDeleting(ManagedObject entity) {
+        if(!XrayUi.isXrayEnabled()) {
+            return;
+        }
         // TODO Auto-generated method stub
-        
     }
 
     public static void enlistUpdating(ManagedObject entity) {
+        if(!XrayUi.isXrayEnabled()) {
+            return;
+        }
         // TODO Auto-generated method stub
-        
     }
 
     public static void recognizeLoaded(ManagedObject entity) {
+        if(!XrayUi.isXrayEnabled()) {
+            return;
+        }
         // TODO Auto-generated method stub
-        
     }
 
     public static void recognizePersisting(ManagedObject entity) {
+        if(!XrayUi.isXrayEnabled()) {
+            return;
+        }
         // TODO Auto-generated method stub
-        
     }
 
     public static void recognizeUpdating(ManagedObject entity) {
+        if(!XrayUi.isXrayEnabled()) {
+            return;
+        }
         // TODO Auto-generated method stub
-        
     }
 
 }

[isis] 01/02: ISIS-2573: house keeping

Posted by ah...@apache.org.
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

commit 0e0a67687d00f4a8c50365605b8f8a7dd0ba69e2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Mar 31 08:33:39 2021 +0200

    ISIS-2573: house keeping
---
 .../core/interaction/scope/InteractionScope.java   |  2 +-
 .../interaction/session/InteractionFactory.java    |  2 +-
 .../interaction/session/InteractionTracker.java    |  2 +-
 .../apache/isis/core/runtime/util/XrayUtil.java    |  2 +-
 .../session/InteractionFactoryDefault.java         |  6 ++--
 .../changetracking/EntityChangeTrackerDefault.java | 32 ++++++++---------
 ...erAndProperty.java => _AdapterAndProperty.java} | 10 +++---
 ...sFactory.java => _ChangingEntitiesFactory.java} |  6 ++--
 ...tory.java => _EntityPropertyChangeFactory.java} |  8 ++---
 ...reAndPostValues.java => _PreAndPostValues.java} | 22 +++++++-----
 ...hangeRecord.java => _PropertyChangeRecord.java} |  8 ++---
 ...gEntities.java => _SimpleChangingEntities.java} |  5 ++-
 .../{PropertyChangeRecord.java => _Xray.java}      | 40 +++++++++++++++++-----
 .../PreAndPostValues_shouldAudit_Test.java         | 10 +++---
 .../javafx/ui/components/object/ObjectViewFx.java  |  2 +-
 .../vaadin/ui/components/object/ObjectViewVaa.java |  2 +-
 .../viewer/vaadin/viewer/IsisServletForVaadin.java |  2 +-
 .../applayer/ApplicationLayerTestFactory.java      |  4 +--
 .../viewer/resources/ResourceAbstract.java         |  2 +-
 .../wicket/ui/app/logout/LogoutHandlerWkt.java     |  2 +-
 .../wicket/ui/panels/FormExecutorDefault.java      |  2 +-
 .../viewer/integration/LocalizerForIsis.java       |  2 +-
 .../viewer/integration/WebRequestCycleForIsis.java |  2 +-
 23 files changed, 94 insertions(+), 81 deletions(-)

diff --git a/core/interaction/src/main/java/org/apache/isis/core/interaction/scope/InteractionScope.java b/core/interaction/src/main/java/org/apache/isis/core/interaction/scope/InteractionScope.java
index 6746274..d73ec8b 100644
--- a/core/interaction/src/main/java/org/apache/isis/core/interaction/scope/InteractionScope.java
+++ b/core/interaction/src/main/java/org/apache/isis/core/interaction/scope/InteractionScope.java
@@ -66,7 +66,7 @@ class InteractionScope implements Scope, InteractionScopeLifecycleHandler {
                     + "InteractionScopeBeanFactoryPostProcessor registered and initialized.", name);
         }
         
-        if(!isisInteractionTracker.isInInteractionSession()) {
+        if(!isisInteractionTracker.isInInteraction()) {
             throw _Exceptions.illegalState("Creation of bean %s with @InteractionScope requires the "
                     + "calling %s to have an open Interaction on the thread-local stack. Running into "
                     + "this issue might be caused by use of ... @Inject MyScopedBean bean ..., instead of "
diff --git a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionFactory.java b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionFactory.java
index 6ef50df..dab91be 100644
--- a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionFactory.java
+++ b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionFactory.java
@@ -71,7 +71,7 @@ public interface InteractionFactory {
     /**
      * @return whether the calling thread is within the context of an open {@link InteractionSession}
      */
-    boolean isInInteractionSession();
+    boolean isInInteraction();
 
     /**
      * Executes a block of code with a new or reused {@link InteractionSession} using a new or
diff --git a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java
index ce63677..6ebe17d 100644
--- a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java
+++ b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.security.authentication.AuthenticationContext;
 public interface InteractionTracker 
 extends InteractionContext, AuthenticationContext {
 
-    boolean isInInteractionSession();
+    boolean isInInteraction();
     
     /** @return the AuthenticationLayer that sits on top of the current 
      * request- or test-scoped InteractionSession's stack*/
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java
index 4d11ddb..e47e425 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java
@@ -67,7 +67,7 @@ public final class XrayUtil {
             final @NonNull InteractionTracker iaTracker,
             final String ... callees) {
 
-        if(!iaTracker.isInInteractionSession()) {
+        if(!iaTracker.isInInteraction()) {
             return Optional.empty();
         }
         
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
index e46b9ac..373c8c4 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
@@ -230,7 +230,7 @@ implements
     }
 
     @Override
-    public boolean isInInteractionSession() {
+    public boolean isInInteraction() {
         return !authenticationStack.get().isEmpty();
     }
 
@@ -276,7 +276,7 @@ implements
     
     @SneakyThrows
     public <R> R callAnonymous(@NonNull final Callable<R> callable) {
-        if(isInInteractionSession()) {
+        if(isInInteraction()) {
             serviceInjector.injectServicesInto(callable);
             return callable.call(); // reuse existing session
         }
@@ -289,7 +289,7 @@ implements
      */
     @SneakyThrows
     public void runAnonymous(@NonNull final ThrowingRunnable runnable) {
-        if(isInInteractionSession()) {
+        if(isInInteraction()) {
             serviceInjector.injectServicesInto(runnable);
             runnable.run(); // reuse existing session
             return;
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java
index 711a0ac..acf573c 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTrackerDefault.java
@@ -107,14 +107,14 @@ implements
      * When {@link #getEntityAuditEntries()} is called, then this is cleared out and
      * {@link #changedObjectProperties} is non-null, containing the actual differences.
      */
-    private final Map<AdapterAndProperty, PreAndPostValues> enlistedEntityPropertiesForAuditing = _Maps.newLinkedHashMap();
+    private final Map<_AdapterAndProperty, _PreAndPostValues> enlistedEntityPropertiesForAuditing = _Maps.newLinkedHashMap();
 
     /**
      * Used for auditing; contains the pre- and post- values of every property of every object that actually changed.
      * <p>
      * Will be null until {@link #getEntityAuditEntries()} is called, thereafter contains the actual changes.
      */
-    private final _Lazy<Set<PropertyChangeRecord>> changedObjectPropertiesRef = _Lazy.threadSafe(this::capturePostValuesAndDrain);
+    private final _Lazy<Set<_PropertyChangeRecord>> changedObjectPropertiesRef = _Lazy.threadSafe(this::capturePostValuesAndDrain);
 
     @Getter(AccessLevel.PACKAGE)
     private final Map<ManagedObject, EntityChangeKind> changeKindByEnlistedAdapter = _Maps.newLinkedHashMap();
@@ -128,7 +128,7 @@ implements
             return;
         }
         enlistForChangeKindAuditing(adapter, EntityChangeKind.CREATE);
-        enlistForPreAndPostValueAuditing(adapter, aap->PreAndPostValues.pre(IsisTransactionPlaceholder.NEW));
+        enlistForPreAndPostValueAuditing(adapter, aap->_PreAndPostValues.pre(IsisTransactionPlaceholder.NEW));
     }
 
     private void enlistUpdatingInternal(final @NonNull ManagedObject adapter) {
@@ -136,7 +136,7 @@ implements
             return;
         }
         enlistForChangeKindAuditing(adapter, EntityChangeKind.UPDATE);
-        enlistForPreAndPostValueAuditing(adapter, aap->PreAndPostValues.pre(aap.getPropertyValue()));
+        enlistForPreAndPostValueAuditing(adapter, aap->_PreAndPostValues.pre(aap.getPropertyValue()));
     }
 
     private void enlistDeletingInternal(final @NonNull ManagedObject adapter) {
@@ -147,10 +147,10 @@ implements
         if(!enlisted) {
             return;
         }
-        enlistForPreAndPostValueAuditing(adapter, aap->PreAndPostValues.pre(aap.getPropertyValue()));
+        enlistForPreAndPostValueAuditing(adapter, aap->_PreAndPostValues.pre(aap.getPropertyValue()));
     }
 
-    private Set<PropertyChangeRecord> getPropertyChangeRecords() {
+    private Set<_PropertyChangeRecord> getPropertyChangeRecords() {
         // this code path has side-effects, it locks the result for this transaction,
         // such that cannot enlist on top of it
         return changedObjectPropertiesRef.get();
@@ -210,7 +210,7 @@ implements
     public Optional<EntityChanges> getEntityChanges(
             final java.sql.Timestamp timestamp,
             final String userName) {
-        return ChangingEntitiesFactory.createChangingEntities(timestamp, userName, this);
+        return _ChangingEntitiesFactory.createChangingEntities(timestamp, userName, this);
     }
 
     Interaction currentInteraction() {
@@ -219,10 +219,6 @@ implements
 
     // -- HELPER
 
-    static String asString(Object object) {
-        return object != null? object.toString(): null;
-    }
-
     /**
      * @return <code>true</code> if successfully enlisted, <code>false</code> if was already enlisted
      */
@@ -263,13 +259,13 @@ implements
 
     private void enlistForPreAndPostValueAuditing(
             final ManagedObject entity,
-            final Function<AdapterAndProperty, PreAndPostValues> pre) {
+            final Function<_AdapterAndProperty, _PreAndPostValues> pre) {
 
         log.debug("enlist entity's property changes for auditing {}", entity);
 
         entity.getSpecification().streamProperties(MixedIn.EXCLUDED)
         .filter(property->!property.isNotPersisted())
-        .map(property->AdapterAndProperty.of(entity, property))
+        .map(property->_AdapterAndProperty.of(entity, property))
         .filter(aap->!enlistedEntityPropertiesForAuditing.containsKey(aap)) // already enlisted, so ignore
         .forEach(aap->{
             enlistedEntityPropertiesForAuditing.put(aap, pre.apply(aap));
@@ -280,12 +276,12 @@ implements
      * For any enlisted Object Properties collects those, that are meant for auditing,
      * then clears enlisted objects.
      */
-    private Set<PropertyChangeRecord> capturePostValuesAndDrain() {
+    private Set<_PropertyChangeRecord> capturePostValuesAndDrain() {
 
         val postValues = enlistedEntityPropertiesForAuditing.entrySet().stream()
                 .peek(this::updatePostOn) // set post values of audits, which have been left empty up to now
-                .filter(PreAndPostValues::shouldAudit)
-                .map(entry->PropertyChangeRecord.of(entry.getKey(), entry.getValue()))
+                .filter(_PreAndPostValues::shouldAudit)
+                .map(entry->_PropertyChangeRecord.of(entry.getKey(), entry.getValue()))
                 .collect(_Sets.toUnmodifiable());
 
         enlistedEntityPropertiesForAuditing.clear();
@@ -294,7 +290,7 @@ implements
 
     }
 
-    private final void updatePostOn(Map.Entry<AdapterAndProperty, PreAndPostValues> enlistedEntry) {
+    private final void updatePostOn(Map.Entry<_AdapterAndProperty, _PreAndPostValues> enlistedEntry) {
         val adapterAndProperty = enlistedEntry.getKey();
         val preAndPostValues = enlistedEntry.getValue();
         val entity = adapterAndProperty.getAdapter();
@@ -412,7 +408,7 @@ implements
             final TransactionId txId) {
 
         return getPropertyChangeRecords().stream()
-                .map(propertyChangeRecord->EntityPropertyChangeFactory
+                .map(propertyChangeRecord->_EntityPropertyChangeFactory
                         .createEntityPropertyChange(timestamp, userName, txId, propertyChangeRecord))
                 .collect(Can.toCan());
     }
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/AdapterAndProperty.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_AdapterAndProperty.java
similarity index 89%
rename from core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/AdapterAndProperty.java
rename to core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_AdapterAndProperty.java
index de45c5a..0a44b97 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/AdapterAndProperty.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_AdapterAndProperty.java
@@ -29,12 +29,10 @@ import lombok.Getter;
 import lombok.NonNull;
 import lombok.ToString;
 import lombok.val;
-import lombok.experimental.PackagePrivate;
 
 @EqualsAndHashCode(of = {"bookmarkStr", "propertyId"})
-@PackagePrivate
 @ToString(of = {"bookmarkStr", "propertyId"})
-final class AdapterAndProperty {
+final class _AdapterAndProperty {
 
     @Getter private final ManagedObject adapter;
     @Getter private final ObjectAssociation property;
@@ -43,13 +41,13 @@ final class AdapterAndProperty {
     
     private final String bookmarkStr;
 
-    public static AdapterAndProperty of(
+    public static _AdapterAndProperty of(
             final @NonNull ManagedObject adapter, 
             final @NonNull ObjectAssociation property) {
-        return new AdapterAndProperty(adapter, property);
+        return new _AdapterAndProperty(adapter, property);
     }
 
-    private AdapterAndProperty(ManagedObject adapter, ObjectAssociation property) {
+    private _AdapterAndProperty(ManagedObject adapter, ObjectAssociation property) {
         
         this.adapter = adapter;
         this.property = property;
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/ChangingEntitiesFactory.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_ChangingEntitiesFactory.java
similarity index 97%
rename from core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/ChangingEntitiesFactory.java
rename to core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_ChangingEntitiesFactory.java
index 12c0110..db0d04b 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/ChangingEntitiesFactory.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_ChangingEntitiesFactory.java
@@ -40,10 +40,8 @@ import org.apache.isis.schema.chg.v2.ObjectsDto;
 import org.apache.isis.schema.common.v2.OidsDto;
 
 import lombok.val;
-import lombok.experimental.UtilityClass;
 
-@UtilityClass
-class ChangingEntitiesFactory {
+final class _ChangingEntitiesFactory {
 
     public static Optional<EntityChanges> createChangingEntities(
             final java.sql.Timestamp completedAt,
@@ -84,7 +82,7 @@ class ChangingEntitiesFactory {
         val interactionId = interaction.getInteractionId();
         final int nextEventSequence = interaction.next(SequenceType.TRANSACTION);
 
-        return new SimpleChangingEntities(
+        return new _SimpleChangingEntities(
                     interactionId, nextEventSequence,
                     userName, completedAt,
                     numberEntitiesLoaded,
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityPropertyChangeFactory.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_EntityPropertyChangeFactory.java
similarity index 90%
rename from core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityPropertyChangeFactory.java
rename to core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_EntityPropertyChangeFactory.java
index 2a8a554..7c320c7 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityPropertyChangeFactory.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_EntityPropertyChangeFactory.java
@@ -26,16 +26,14 @@ import org.apache.isis.applib.services.xactn.TransactionId;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
 
 import lombok.val;
-import lombok.experimental.UtilityClass;
 
-@UtilityClass
-class EntityPropertyChangeFactory {
+final class _EntityPropertyChangeFactory {
 
     public static EntityPropertyChange createEntityPropertyChange(
             final java.sql.Timestamp timestamp,
             final String user,
             final TransactionId txId,
-            final PropertyChangeRecord propertyChangeRecord) {
+            final _PropertyChangeRecord propertyChangeRecord) {
 
         val adapterAndProperty = propertyChangeRecord.getAdapterAndProperty();
         val spec = adapterAndProperty.getAdapter().getSpecification();
@@ -44,7 +42,7 @@ class EntityPropertyChangeFactory {
         final String propertyId = adapterAndProperty.getPropertyId();
         final String memberId = adapterAndProperty.getMemberId();
 
-        final PreAndPostValues papv = propertyChangeRecord.getPreAndPostValues();
+        final _PreAndPostValues papv = propertyChangeRecord.getPreAndPostValues();
         final String preValue = papv.getPreString();
         final String postValue = papv.getPostString();
 
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PreAndPostValues.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_PreAndPostValues.java
similarity index 85%
rename from core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PreAndPostValues.java
rename to core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_PreAndPostValues.java
index 2994850..f8c3527 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PreAndPostValues.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_PreAndPostValues.java
@@ -24,10 +24,8 @@ import java.util.Objects;
 import org.apache.isis.core.transaction.changetracking.events.IsisTransactionPlaceholder;
 
 import lombok.val;
-import lombok.experimental.PackagePrivate;
 
-@PackagePrivate
-final class PreAndPostValues {
+final class _PreAndPostValues {
 
     private final Object pre;
     /**
@@ -44,14 +42,14 @@ final class PreAndPostValues {
      */
     private String postString;
 
-    public static PreAndPostValues pre(Object preValue) {
-        return new PreAndPostValues(preValue, null);
+    public static _PreAndPostValues pre(Object preValue) {
+        return new _PreAndPostValues(preValue, null);
     }
 
-    private PreAndPostValues(Object pre, Object post) {
+    private _PreAndPostValues(Object pre, Object post) {
         this.pre = pre;
         this.post = post;
-        this.preString = EntityChangeTrackerDefault.asString(pre);
+        this.preString = asString(pre);
     }
 
     /**
@@ -79,7 +77,7 @@ final class PreAndPostValues {
 
     public void setPost(Object post) {
         this.post = post;
-        this.postString = EntityChangeTrackerDefault.asString(post);
+        this.postString = asString(post);
     }
 
     @Override
@@ -100,9 +98,15 @@ final class PreAndPostValues {
         return !Objects.equals(getPre(), getPost());
     }
     
-    public static boolean shouldAudit(Map.Entry<?, PreAndPostValues> input) { 
+    public static boolean shouldAudit(Map.Entry<?, _PreAndPostValues> input) { 
         val preAndPostValues = input.getValue();
         return preAndPostValues.shouldAudit();
     }
     
+    // -- HELPER
+    
+    private static String asString(Object object) {
+        return object != null? object.toString(): null;
+    }
+    
 }
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PropertyChangeRecord.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_PropertyChangeRecord.java
similarity index 81%
copy from core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PropertyChangeRecord.java
copy to core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_PropertyChangeRecord.java
index 096b6fe..9c1ad1e 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PropertyChangeRecord.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_PropertyChangeRecord.java
@@ -20,13 +20,11 @@ package org.apache.isis.core.transaction.changetracking;
 
 import lombok.NonNull;
 import lombok.Value;
-import lombok.experimental.PackagePrivate;
 
 @Value(staticConstructor = "of")
-@PackagePrivate
-final class PropertyChangeRecord {
+final class _PropertyChangeRecord {
 
-    private final @NonNull AdapterAndProperty adapterAndProperty;
-    private final @NonNull PreAndPostValues preAndPostValues;
+    private final @NonNull _AdapterAndProperty adapterAndProperty;
+    private final @NonNull _PreAndPostValues preAndPostValues;
     
 }
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/SimpleChangingEntities.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_SimpleChangingEntities.java
similarity index 95%
rename from core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/SimpleChangingEntities.java
rename to core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_SimpleChangingEntities.java
index 76dcbc8..a1673a2 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/SimpleChangingEntities.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_SimpleChangingEntities.java
@@ -23,7 +23,6 @@ import java.sql.Timestamp;
 import java.util.UUID;
 import java.util.function.Supplier;
 
-import org.apache.isis.applib.mixins.system.HasTransactionId;
 import org.apache.isis.applib.services.publishing.spi.EntityChanges;
 import org.apache.isis.schema.chg.v2.ChangesDto;
 
@@ -34,7 +33,7 @@ import lombok.ToString;
  * Captures which objects were created, updated or deleted in the course of a transaction.
  */
 @ToString
-class SimpleChangingEntities implements EntityChanges {
+final class _SimpleChangingEntities implements EntityChanges {
 
     private UUID transactionUuid;
     private final int sequence;
@@ -44,7 +43,7 @@ class SimpleChangingEntities implements EntityChanges {
     private final int numberEntityPropertiesModified;
     private final Supplier<ChangesDto> changesDtoSupplier;
 
-    public SimpleChangingEntities(
+    public _SimpleChangingEntities(
             final @NonNull UUID transactionUuid,
             final int sequence,
             final @NonNull String userName,
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PropertyChangeRecord.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_Xray.java
similarity index 52%
rename from core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PropertyChangeRecord.java
rename to core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_Xray.java
index 096b6fe..fae5f40 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/PropertyChangeRecord.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/_Xray.java
@@ -18,15 +18,37 @@
  */
 package org.apache.isis.core.transaction.changetracking;
 
-import lombok.NonNull;
-import lombok.Value;
-import lombok.experimental.PackagePrivate;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-@Value(staticConstructor = "of")
-@PackagePrivate
-final class PropertyChangeRecord {
+final class _Xray {
+
+    public static void enlistCreated(ManagedObject entity) {
+        // TODO Auto-generated method stub
+    }
+
+    public static void enlistDeleting(ManagedObject entity) {
+        // TODO Auto-generated method stub
+        
+    }
+
+    public static void enlistUpdating(ManagedObject entity) {
+        // TODO Auto-generated method stub
+        
+    }
+
+    public static void recognizeLoaded(ManagedObject entity) {
+        // TODO Auto-generated method stub
+        
+    }
+
+    public static void recognizePersisting(ManagedObject entity) {
+        // TODO Auto-generated method stub
+        
+    }
+
+    public static void recognizeUpdating(ManagedObject entity) {
+        // TODO Auto-generated method stub
+        
+    }
 
-    private final @NonNull AdapterAndProperty adapterAndProperty;
-    private final @NonNull PreAndPostValues preAndPostValues;
-    
 }
diff --git a/core/transaction/src/test/java/org/apache/isis/core/transaction/changetracking/PreAndPostValues_shouldAudit_Test.java b/core/transaction/src/test/java/org/apache/isis/core/transaction/changetracking/PreAndPostValues_shouldAudit_Test.java
index aeb748f..61672e4 100644
--- a/core/transaction/src/test/java/org/apache/isis/core/transaction/changetracking/PreAndPostValues_shouldAudit_Test.java
+++ b/core/transaction/src/test/java/org/apache/isis/core/transaction/changetracking/PreAndPostValues_shouldAudit_Test.java
@@ -29,35 +29,35 @@ public class PreAndPostValues_shouldAudit_Test {
 
     @Test
     public void just_created() {
-        final PreAndPostValues papv = PreAndPostValues.pre(IsisTransactionPlaceholder.NEW);
+        final _PreAndPostValues papv = _PreAndPostValues.pre(IsisTransactionPlaceholder.NEW);
         papv.setPost("Foo");
 
         assertTrue(papv.shouldAudit());
     }
     @Test
     public void just_deleted() {
-        final PreAndPostValues papv = PreAndPostValues.pre("Foo");
+        final _PreAndPostValues papv = _PreAndPostValues.pre("Foo");
         papv.setPost(IsisTransactionPlaceholder.DELETED);
 
         assertTrue(papv.shouldAudit());
     }
     @Test
     public void changed() {
-        final PreAndPostValues papv = PreAndPostValues.pre("Foo");
+        final _PreAndPostValues papv = _PreAndPostValues.pre("Foo");
         papv.setPost("Bar");
 
         assertTrue(papv.shouldAudit());
     }
     @Test
     public void unchanged() {
-        final PreAndPostValues papv = PreAndPostValues.pre("Foo");
+        final _PreAndPostValues papv = _PreAndPostValues.pre("Foo");
         papv.setPost("Foo");
 
         assertFalse(papv.shouldAudit());
     }
     @Test
     public void created_and_then_deleted() {
-        final PreAndPostValues papv = PreAndPostValues.pre(IsisTransactionPlaceholder.NEW);
+        final _PreAndPostValues papv = _PreAndPostValues.pre(IsisTransactionPlaceholder.NEW);
         papv.setPost(IsisTransactionPlaceholder.DELETED);
 
         assertFalse(papv.shouldAudit());
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
index 85f6a72..166f922 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
@@ -77,7 +77,7 @@ public class ObjectViewFx extends VBox {
             final ManagedObject managedObject) {
 
         log.info("binding object interaction to owner {}", managedObject.getSpecification().getIdentifier());
-        _Assert.assertTrue(uiContext.getIsisInteractionFactory().isInInteractionSession(), "requires an active interaction");
+        _Assert.assertTrue(uiContext.getIsisInteractionFactory().isInInteraction(), "requires an active interaction");
 
         val objectTitle = ManagedObjects.titleOf(managedObject);
 
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
index 333c022..c54464e 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
@@ -85,7 +85,7 @@ public class ObjectViewVaa extends VerticalLayout {
             final ManagedObject managedObject) {
 
         log.info("binding object interaction to owner {}", managedObject.getSpecification().getIdentifier());
-        _Assert.assertTrue(uiContext.getIsisInteractionFactory().isInInteractionSession(), "requires an active interaction");
+        _Assert.assertTrue(uiContext.getIsisInteractionFactory().isInInteraction(), "requires an active interaction");
         
         val objectTitle = ManagedObjects.titleOf(managedObject);
 
diff --git a/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisServletForVaadin.java b/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisServletForVaadin.java
index c528de4..c6ab4d1 100644
--- a/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisServletForVaadin.java
+++ b/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisServletForVaadin.java
@@ -79,7 +79,7 @@ extends SpringServlet {
         
         log.debug("request was successfully serviced (authentication={})", authentication);
         
-        if(isisInteractionFactory.isInInteractionSession()) {
+        if(isisInteractionFactory.isInInteraction()) {
             isisInteractionFactory.closeSessionStack();
             log.warn("after servicing current request some interactions have been closed forcefully (authentication={})", authentication);
         }
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java
index 62d9bcb..563c995 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java
@@ -20,6 +20,7 @@ package org.apache.isis.testdomain.applayer;
 
 import static org.apache.isis.applib.services.wrapper.control.AsyncControl.returningVoid;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.fail;
 import static org.junit.jupiter.api.DynamicTest.dynamicTest;
@@ -70,7 +71,6 @@ import org.apache.isis.testdomain.jdo.entities.JdoInventory;
 import org.apache.isis.testdomain.jdo.entities.JdoProduct;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
-import io.smallrye.common.constraint.Assert;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
 import lombok.val;
@@ -176,7 +176,7 @@ public class ApplicationLayerTestFactory {
 
             xrayAddTest(displayName);
             
-            Assert.assertFalse(interactionFactory.isInInteractionSession());
+            assertFalse(interactionFactory.isInInteraction());
             assert_no_initial_tx_context();
             
             final boolean isSuccesfulRun = interactionFactory.callAnonymous(()->{
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
index a5682a0..8f5aa47 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
@@ -104,7 +104,7 @@ public abstract class ResourceAbstract {
             final ResourceDescriptor resourceDescriptor,
             final String urlUnencodedQueryString) {
         
-        if (!isisInteractionTracker.isInInteractionSession()) {
+        if (!isisInteractionTracker.isInInteraction()) {
             throw RestfulObjectsApplicationException.create(HttpStatusCode.UNAUTHORIZED);
         }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/logout/LogoutHandlerWkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/logout/LogoutHandlerWkt.java
index eb438c3..bbaa780 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/logout/LogoutHandlerWkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/logout/LogoutHandlerWkt.java
@@ -42,7 +42,7 @@ public class LogoutHandlerWkt implements LogoutHandler {
             return;
         }
         
-        if(isisInteractionTracker.isInInteractionSession()) {
+        if(isisInteractionTracker.isInInteraction()) {
             isisInteractionTracker.currentInteractionSession()
             .ifPresent(interaction->
                 interaction.setOnClose(currentWktSession::invalidateNow));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index 1a44f66..f7cb7dc 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -136,7 +136,7 @@ implements FormExecutor {
             val resultAdapter = obtainResultAdapter();
             
             // flush any queued changes; any concurrency or violation exceptions will actually be thrown here
-            if(commonContext.getInteractionTracker().isInInteractionSession()) {
+            if(commonContext.getInteractionTracker().isInInteraction()) {
                 commonContext.getTransactionService().flushTransaction();
 
                 if(EntityUtil.isDestroyed(targetAdapter)) {
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/LocalizerForIsis.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/LocalizerForIsis.java
index 654cae9..3993fc7 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/LocalizerForIsis.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/LocalizerForIsis.java
@@ -75,7 +75,7 @@ public class LocalizerForIsis extends Localizer {
     protected String translate(final String key, final Component component) {
         final Class<?> contextClass = determineContextClassElse(component, IsisWicketApplication.class);
         final String context = contextClass.getName();
-        if(isisInteractionTracker.isInInteractionSession()) {
+        if(isisInteractionTracker.isInInteraction()) {
             return translate(key, context);
         } else {
             return isisInteractionFactory.callAnonymous(()->translate(key, context));
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
index 2ecb12b..548fd89 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
@@ -479,7 +479,7 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
     }
 
     private boolean isInInteraction() {
-        return getCommonContext().getInteractionTracker().isInInteractionSession();
+        return getCommonContext().getInteractionTracker().isInInteraction();
     }
 
     private Optional<MessageBroker> getMessageBroker() {