You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2025/02/21 06:24:16 UTC

(causeway) branch main updated: CAUSEWAY-3859: Java record refactoring (part 32)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 8ef77e8c66c CAUSEWAY-3859: Java record refactoring (part 32)
8ef77e8c66c is described below

commit 8ef77e8c66cfe7b0c200115f53420446777695db
Author: andi-huber <ah...@apache.org>
AuthorDate: Fri Feb 21 07:24:10 2025 +0100

    CAUSEWAY-3859: Java record refactoring (part 32)
---
 .../interaction/session/CausewayInteraction.java   | 10 +++---
 .../metamodel/execution/InteractionInternal.java   | 16 ++++-----
 .../facets/object/entity/EntityFacet.java          | 23 ++++++-------
 .../core/metamodel/object/MmDebugUtils.java        | 30 ++++++++--------
 .../progmodel/ProgrammingModelAbstract.java        | 40 +++++++++++++---------
 .../valuesemantics/temporal/TemporalAdjust.java    | 21 +++++-------
 .../temporal/TemporalValueSemanticsProvider.java   | 26 +++++++-------
 .../facets/value/temporal/TemporalAdjustTest.java  | 20 +++++------
 .../executor/MemberExecutorServiceDefault.java     |  8 ++---
 9 files changed, 94 insertions(+), 100 deletions(-)

diff --git a/core/interaction/src/main/java/org/apache/causeway/core/interaction/session/CausewayInteraction.java b/core/interaction/src/main/java/org/apache/causeway/core/interaction/session/CausewayInteraction.java
index 27ad564b322..4c276e45f9a 100644
--- a/core/interaction/src/main/java/org/apache/causeway/core/interaction/session/CausewayInteraction.java
+++ b/core/interaction/src/main/java/org/apache/causeway/core/interaction/session/CausewayInteraction.java
@@ -105,7 +105,7 @@ public Object execute(
         try {
             return executeInternal(memberExecutor, actionInvocation, context);
         } finally {
-            popAndComplete(context.getClockService(), context.getMetricsService());
+            popAndComplete(context.clockService(), context.metricsService());
         }
     }
 
@@ -120,7 +120,7 @@ public Object execute(
         try {
             return executeInternal(memberExecutor, propertyEdit, context);
         } finally {
-            popAndComplete(context.getClockService(), context.getMetricsService());
+            popAndComplete(context.clockService(), context.metricsService());
         }
     }
 
@@ -140,7 +140,7 @@ private <T extends Execution<?,?>> Object executeInternal(
             // examples are IllegalArgument- or NullPointer- exceptions being swallowed when using the
             // WrapperFactory utilizing async calls
 
-            if(context.getDeadlockRecognizer().isDeadlock(ex)) {
+            if(context.deadlockRecognizer().isDeadlock(ex)) {
                 if(log.isDebugEnabled()) {
                     log.debug("failed to execute an interaction due to a deadlock", ex);
                 } else if(log.isInfoEnabled()) {
@@ -193,12 +193,12 @@ private void start(
         // set the startedAt (and update command if this is the top-most member execution)
         // (this isn't done within Interaction#execute(...) because it requires the DTO
         // to have been set on the current execution).
-        var startedAt = execution.start(context.getClockService(), context.getMetricsService());
+        var startedAt = execution.start(context.clockService(), context.metricsService());
         if(getCommand().getStartedAt() == null) {
             getCommand().updater().setStartedAt(startedAt);
             getCommand().updater().setPublishingPhase(Command.CommandPublishingPhase.STARTED);
         }
-        context.getCommandPublisher().start(getCommand());
+        context.commandPublisher().start(getCommand());
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/execution/InteractionInternal.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/execution/InteractionInternal.java
index 376a708ddf0..d39c4a56827 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/execution/InteractionInternal.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/execution/InteractionInternal.java
@@ -21,6 +21,8 @@
 import java.util.concurrent.Callable;
 import java.util.concurrent.atomic.LongAdder;
 
+import org.jspecify.annotations.NonNull;
+
 import org.apache.causeway.applib.services.clock.ClockService;
 import org.apache.causeway.applib.services.iactn.ActionInvocation;
 import org.apache.causeway.applib.services.iactn.Execution;
@@ -31,9 +33,6 @@
 import org.apache.causeway.core.metamodel.services.deadlock.DeadlockRecognizer;
 import org.apache.causeway.core.metamodel.services.publishing.CommandPublisher;
 
-import org.jspecify.annotations.NonNull;
-import lombok.Value;
-
 /**
  * @since 2.0
  */
@@ -48,12 +47,11 @@ interface MemberExecutor<T extends Execution<?,?>> {
         Object execute(final T currentExecution);
     }
 
-    @Value(staticConstructor = "of")
-    class Context {
-        ClockService clockService;
-        MetricsService metricsService;
-        CommandPublisher commandPublisher;
-        DeadlockRecognizer deadlockRecognizer;
+    record Context(
+            ClockService clockService,
+            MetricsService metricsService,
+            CommandPublisher commandPublisher,
+            DeadlockRecognizer deadlockRecognizer) {
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/entity/EntityFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/entity/EntityFacet.java
index b8f4d827676..ac62cfb94fa 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/entity/EntityFacet.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/entity/EntityFacet.java
@@ -47,22 +47,21 @@
  */
 public interface EntityFacet extends Facet {
 
-    @lombok.Value(staticConstructor = "of")
-    static class PrimaryKeyType<T> {
-        private final @NonNull Class<?> owningEntityClass;
-        private final @NonNull IdStringifier<T> idStringifier;
-        private final @NonNull Class<T> primaryKeyClass;
+    record PrimaryKeyType<T>(
+            @NonNull Class<?> owningEntityClass,
+            @NonNull IdStringifier<T> idStringifier,
+            @NonNull Class<T> primaryKeyClass) {
+
         public String enstring(final T primaryKey) {
             return idStringifier.enstring(primaryKey);
         }
         public String enstringWithCast(final Object primaryKey) {
             return _Casts.castTo(primaryKeyClass, primaryKey)
-            .map(idStringifier::enstring)
-            .orElseThrow(()->_Exceptions.illegalArgument(
-                    "failed to cast primary-key '%s' to expected type %s",
-                        ""+primaryKey,
-                        primaryKeyClass.getName()))
-            ;
+                .map(idStringifier::enstring)
+                .orElseThrow(()->_Exceptions.illegalArgument(
+                        "failed to cast primary-key '%s' to expected type %s",
+                            ""+primaryKey,
+                            primaryKeyClass.getName()));
         }
         public T destring(final String stringifiedPrimaryKey) {
             return idStringifier.destring(owningEntityClass, stringifiedPrimaryKey);
@@ -77,7 +76,7 @@ public static <T> PrimaryKeyType<T> getInstance(
                 final @NonNull Class<?> owningEntityClass,
                 final @NonNull Function<Class<T>, IdStringifier<T>> stringifierLookup,
                 final @NonNull Class<T> primaryKeyClass){
-            return of(
+            return new PrimaryKeyType<>(
                     owningEntityClass,
                     stringifierLookup.apply(primaryKeyClass),
                     _Casts.uncheckedCast(ClassUtils.resolvePrimitiveIfNecessary(primaryKeyClass)));
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmDebugUtils.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmDebugUtils.java
index d9367698a51..5b6cd717e05 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmDebugUtils.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmDebugUtils.java
@@ -28,20 +28,17 @@
 import org.apache.causeway.core.metamodel.interactions.managed.PropertyNegotiationModel;
 
 import lombok.Builder;
-import lombok.Value;
-import lombok.experimental.UtilityClass;
 
-@UtilityClass
-public final class MmDebugUtils {
+public record MmDebugUtils() {
 
     // -- PARAM
 
-    @Value @Builder
-    public static class ParamUpdateData {
-        final String action; // feature-id
-        final int index;
-        final String name;
-        final Can<? extends ManagedParameter> allParams;
+    @Builder
+    public record ParamUpdateData(
+            String action, // feature-id
+            int index,
+            String name,
+            Can<? extends ManagedParameter> allParams) {
         public String formatted() {
             return String.format("[actionId=%s,paramIndex=%d,paramName=%s]\n%s",
                     action, index, name,
@@ -70,11 +67,12 @@ public static ParamUpdateData paramUpdateDataFor(
 
     // -- PROP
 
-    @Value @Builder
-    public static class PropUpdateData {
-        final String property;  // feature-id
-        final String name;
-        final ManagedObject pendingValue;
+    @Builder
+    public record PropUpdateData(
+            String property,  // feature-id
+            String name,
+            ManagedObject pendingValue
+            ) {
         public String formatted() {
             return String.format("[propertyId=%s,propertyName=%s] -> %s)",
                     property, name, formatPendingValue(pendingValue));
@@ -91,7 +89,7 @@ public static PropUpdateData propUpdateDataFor(final PropertyNegotiationModel pr
 
     // -- HELPER
 
-    private String formatPendingValue(final @Nullable ManagedObject managedObject) {
+    private static String formatPendingValue(final @Nullable ManagedObject managedObject) {
         return ManagedObjects.isSpecified(managedObject)
                 ? String.format("(%s,cls=%s) pojo=%s",
                     managedObject.getSpecialization().name(),
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/progmodel/ProgrammingModelAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/progmodel/ProgrammingModelAbstract.java
index 5075af51f69..2d7b8cdd886 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/progmodel/ProgrammingModelAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/progmodel/ProgrammingModelAbstract.java
@@ -21,6 +21,7 @@
 import java.util.Collections;
 import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Stream;
 
 import org.apache.causeway.commons.internal.collections._Lists;
@@ -34,9 +35,7 @@
 import org.apache.causeway.core.metamodel.postprocessors.MetaModelPostProcessor;
 import org.apache.causeway.core.metamodel.specloader.validator.MetaModelValidator;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
-import lombok.Value;
 
 public abstract class ProgrammingModelAbstract
 implements
@@ -86,7 +85,7 @@ public <T extends FacetFactory> void addFactory(
 
         assertNotInitialized();
         metaModelContext.getServiceInjector().injectServicesInto(instance);
-        var factoryEntry = ProgrammingModelEntry.of(instance, markers);
+        var factoryEntry = new ProgrammingModelEntry<>(instance, markers);
         factoryEntriesByOrder.putElement(order, factoryEntry);
     }
 
@@ -98,7 +97,7 @@ public <T extends MetaModelValidator> void addValidator(
 
         assertNotInitialized();
         metaModelContext.getServiceInjector().injectServicesInto(instance);
-        var validatorEntry = ProgrammingModelEntry.of(instance, markers);
+        var validatorEntry = new ProgrammingModelEntry<>(instance, markers);
         validatorEntriesByOrder.putElement(order, validatorEntry);
     }
 
@@ -110,7 +109,7 @@ public <T extends MetaModelPostProcessor> void addPostProcessor(
 
         assertNotInitialized();
         metaModelContext.getServiceInjector().injectServicesInto(instance);
-        var postProcessorEntry = ProgrammingModelEntry.of(instance, markers);
+        var postProcessorEntry = new ProgrammingModelEntry<>(instance, markers);
         postProcessorEntriesByOrder.putElement(order, postProcessorEntry);
     }
 
@@ -136,10 +135,19 @@ public Stream<MetaModelPostProcessor> streamPostProcessors() {
 
     // -- VALUE TYPE
 
-    @Value(staticConstructor = "of") @EqualsAndHashCode(of = "instance")
-    static final class ProgrammingModelEntry<T> {
-        T instance;
-        Marker[] markers;
+    record ProgrammingModelEntry<T>(
+            T instance,
+            Marker[] markers) {
+        @Override
+        public final boolean equals(final Object obj) {
+            return obj instanceof ProgrammingModelEntry other
+                    ? Objects.equals(this.instance(), other.instance())
+                    : false;
+        }
+        @Override
+        public final int hashCode() {
+            return Objects.hash(instance);
+        }
     }
 
     // -- SNAPSHOT HELPER
@@ -156,8 +164,8 @@ private List<FacetFactory> snapshotFactories(
             var factoryEntrySet = factoryEntriesByOrder.get(order);
             if(factoryEntrySet==null)  continue;
             for(var factoryEntry : factoryEntrySet) {
-                if(filter.acceptFactoryType(factoryEntry.getInstance().getClass(), factoryEntry.getMarkers())) {
-                    factories.add(factoryEntry.getInstance());
+                if(filter.acceptFactoryType(factoryEntry.instance().getClass(), factoryEntry.markers())) {
+                    factories.add(factoryEntry.instance());
                 }
             }
         }
@@ -177,8 +185,8 @@ private List<MetaModelValidator> snapshotValidators(
             if(validatorEntrySet==null) continue;
 
             for(var validatorEntry : validatorEntrySet) {
-                if(filter.acceptValidator(validatorEntry.getInstance().getClass(), validatorEntry.getMarkers())) {
-                    validators.add(validatorEntry.getInstance());
+                if(filter.acceptValidator(validatorEntry.instance().getClass(), validatorEntry.markers())) {
+                    validators.add(validatorEntry.instance());
                 }
             }
         }
@@ -199,9 +207,9 @@ private List<MetaModelPostProcessor> snapshotPostProcessors(
 
             for(var postProcessorEntry : postProcessorEntrySet) {
                 if(filter.acceptPostProcessor(
-                        postProcessorEntry.getInstance().getClass(),
-                        postProcessorEntry.getMarkers())) {
-                    postProcessors.add(postProcessorEntry.getInstance());
+                        postProcessorEntry.instance().getClass(),
+                        postProcessorEntry.markers())) {
+                    postProcessors.add(postProcessorEntry.instance());
                 }
             }
         }
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/TemporalAdjust.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/TemporalAdjust.java
index 3e3f476f4bc..4b69c50f280 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/TemporalAdjust.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/TemporalAdjust.java
@@ -31,21 +31,16 @@
 
 import org.apache.causeway.commons.internal.exceptions._Exceptions;
 
-import lombok.Value;
-
 /**
- *
  * @since 2.0
  * @see TemporalAdjuster
  */
-@Value(staticConstructor = "of")
-public class TemporalAdjust {
-
-    private int years;
-    private int months;
-    private int days;
-    private int hours;
-    private int minutes;
+public record TemporalAdjust(
+         int years,
+         int months,
+         int days,
+         int hours,
+         int minutes) {
 
     public static TemporalAdjust parse(String str) {
         int hours = 0;
@@ -76,7 +71,7 @@ public static TemporalAdjust parse(String str) {
             days = Integer.valueOf(str).intValue();
         }
 
-        return TemporalAdjust.of(years, months, days, hours, minutes);
+        return new TemporalAdjust(years, months, days, hours, minutes);
     }
 
     public TemporalAdjust sign(final int sign) {
@@ -84,7 +79,7 @@ public TemporalAdjust sign(final int sign) {
             return this;
         }
         if(sign==-1) {
-            return of(-this.years, -this.months, -this.days, -this.hours, -this.minutes);
+            return new TemporalAdjust(-this.years, -this.months, -this.days, -this.hours, -this.minutes);
         }
         throw _Exceptions.unsupportedOperation();
     }
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
index 2f2cc66383f..76a6fb27e6f 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
@@ -56,7 +56,6 @@
 
 import lombok.Getter;
 import org.jspecify.annotations.NonNull;
-import lombok.Value;
 import lombok.experimental.Accessors;
 
 /**
@@ -219,14 +218,14 @@ protected Function<T, String> getRenderingFormatter(
         var dateTimePattern = mmc.getConfiguration().getValueTypes().getTemporal().getDisplay().getDateTimePattern();
         var temporalNoZoneRenderingFormat = getTemporalNoZoneRenderingFormat(
                 context, temporalCharacteristic, offsetCharacteristic,
-                dateAndTimeFormatStyle.getDateFormatStyle(),
-                dateAndTimeFormatStyle.getTimeFormatStyle(),
+                dateAndTimeFormatStyle.dateFormatStyle(),
+                dateAndTimeFormatStyle.timeFormatStyle(),
                 datePattern, dateTimePattern);
 
         var temporalZoneOnlyRenderingFormat = getTemporalZoneOnlyRenderingFormat(
                 context, temporalCharacteristic, offsetCharacteristic).orElse(null);
 
-        var timeZoneTranslation = dateAndTimeFormatStyle.getTimeZoneTranslation();
+        var timeZoneTranslation = dateAndTimeFormatStyle.timeZoneTranslation();
 
         return time-> {
 
@@ -334,7 +333,7 @@ protected DateTimeFormatter getEditingOutputFormat(final ValueSemanticsProvider.
         var dateAndTimeFormatStyle = DateAndTimeFormatStyle.forContext(mmc, context);
 
         return getTemporalEditingFormat(context, temporalCharacteristic, offsetCharacteristic,
-                dateAndTimeFormatStyle.getTimePrecision(),
+                dateAndTimeFormatStyle.timePrecision(),
                 EditingFormatDirection.OUTPUT,
                 temporalEditingPattern());
     }
@@ -347,7 +346,7 @@ protected DateTimeFormatter getEditingInputFormat(final ValueSemanticsProvider.C
         var dateAndTimeFormatStyle = DateAndTimeFormatStyle.forContext(mmc, context);
 
         return getTemporalEditingFormat(context, temporalCharacteristic, offsetCharacteristic,
-                dateAndTimeFormatStyle.getTimePrecision(),
+                dateAndTimeFormatStyle.timePrecision(),
                 EditingFormatDirection.INPUT,
                 temporalEditingPattern());
     }
@@ -359,7 +358,7 @@ public String getPattern(final ValueSemanticsProvider.Context context) {
 
         return temporalEditingPattern()
                 .getEditingFormatAsPattern(temporalCharacteristic, offsetCharacteristic,
-                        dateAndTimeFormatStyle.getTimePrecision(),
+                        dateAndTimeFormatStyle.timePrecision(),
                         EditingFormatDirection.OUTPUT);
     }
 
@@ -372,12 +371,11 @@ protected DateTimeFormatter getIsoFormat() {
 
     // -- HELPER
 
-    @Value(staticConstructor = "of")
-    static class DateAndTimeFormatStyle {
-        @NonNull FormatStyle dateFormatStyle;
-        @NonNull FormatStyle timeFormatStyle;
-        @NonNull TimePrecision timePrecision;
-        @NonNull TimeZoneTranslation timeZoneTranslation;
+    record DateAndTimeFormatStyle(
+            @NonNull FormatStyle dateFormatStyle,
+            @NonNull FormatStyle timeFormatStyle,
+            @NonNull TimePrecision timePrecision,
+            @NonNull TimeZoneTranslation timeZoneTranslation) {
 
         static DateAndTimeFormatStyle forContext(
                 final @Nullable MetaModelContext mmc, // nullable .. JUnit support
@@ -411,7 +409,7 @@ static DateAndTimeFormatStyle forContext(
                     .map(TimeZoneTranslationFacet::getTimeZoneTranslation)
                     .orElse(TimeZoneTranslation.TO_LOCAL_TIMEZONE);
 
-            return of(dateFormatStyle, timeFormatStyle, timePrecision, timeZoneTranslation);
+            return new DateAndTimeFormatStyle(dateFormatStyle, timeFormatStyle, timePrecision, timeZoneTranslation);
         }
 
     }
diff --git a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/value/temporal/TemporalAdjustTest.java b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/value/temporal/TemporalAdjustTest.java
index 88a94509f54..143ac1cb2f0 100644
--- a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/value/temporal/TemporalAdjustTest.java
+++ b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/value/temporal/TemporalAdjustTest.java
@@ -36,20 +36,20 @@
 
 class TemporalAdjustTest {
 
-    final TemporalAdjust plus1Year = TemporalAdjust.of(1, 0, 0, 0, 0);
-    final TemporalAdjust minus1Year = TemporalAdjust.of(-1, 0, 0, 0, 0);
+    final TemporalAdjust plus1Year = new TemporalAdjust(1, 0, 0, 0, 0);
+    final TemporalAdjust minus1Year = new TemporalAdjust(-1, 0, 0, 0, 0);
 
-    final TemporalAdjust plus1Month = TemporalAdjust.of(0, 1, 0, 0, 0);
-    final TemporalAdjust minus1Month = TemporalAdjust.of(0, -1, 0, 0, 0);
+    final TemporalAdjust plus1Month = new TemporalAdjust(0, 1, 0, 0, 0);
+    final TemporalAdjust minus1Month = new TemporalAdjust(0, -1, 0, 0, 0);
 
-    final TemporalAdjust plus1Day = TemporalAdjust.of(0, 0, 1, 0, 0);
-    final TemporalAdjust minus1Day = TemporalAdjust.of(0, 0, -1, 0, 0);
+    final TemporalAdjust plus1Day = new TemporalAdjust(0, 0, 1, 0, 0);
+    final TemporalAdjust minus1Day = new TemporalAdjust(0, 0, -1, 0, 0);
 
-    final TemporalAdjust plus1Hour = TemporalAdjust.of(0, 0, 0, 1, 0);
-    final TemporalAdjust minus1Hour = TemporalAdjust.of(0, 0, 0, -1, 0);
+    final TemporalAdjust plus1Hour = new TemporalAdjust(0, 0, 0, 1, 0);
+    final TemporalAdjust minus1Hour = new TemporalAdjust(0, 0, 0, -1, 0);
 
-    final TemporalAdjust plus1Minute = TemporalAdjust.of(0, 0, 0, 0, 1);
-    final TemporalAdjust minus1Minute = TemporalAdjust.of(0, 0, 0, 0, -1);
+    final TemporalAdjust plus1Minute = new TemporalAdjust(0, 0, 0, 0, 1);
+    final TemporalAdjust minus1Minute = new TemporalAdjust(0, 0, 0, 0, -1);
 
     // java.time
     final LocalTime localTime = LocalTime.of(9, 54, 1);
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java
index 3c634596139..7981eb645d5 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java
@@ -172,7 +172,7 @@ private ManagedObject invokeActionInternally(
                         interaction, actionId, targetPojo, argumentPojos);
 
         // sets up startedAt and completedAt on the execution, also manages the execution call graph
-        interaction.execute(actionExecutor, actionInvocation, InteractionInternal.Context.of(clockService, metricsService(), commandPublisherProvider.get(), deadlockRecognizer));
+        interaction.execute(actionExecutor, actionInvocation, new InteractionInternal.Context(clockService, metricsService(), commandPublisherProvider.get(), deadlockRecognizer));
 
         // handle any exceptions
         var priorExecution = interaction.getPriorExecutionOrThrowIfAnyException(actionInvocation);
@@ -250,9 +250,7 @@ private ManagedObject setOrClearPropertyInternally(
 
         var interaction = getInteractionElseFail();
         var command = interaction.getCommand();
-        if( command==null ) {
-            return domainObject;
-        }
+        if( command==null ) return domainObject;
 
         var owningProperty = propertyModifier.getOwningProperty();
 
@@ -270,7 +268,7 @@ private ManagedObject setOrClearPropertyInternally(
 
         // sets up startedAt and completedAt on the execution, also manages the execution call graph
         var targetPojo = interaction.execute(propertyModifier, propertyEdit,
-                InteractionInternal.Context.of(clockService, metricsService(), commandPublisherProvider.get(), deadlockRecognizer));
+                new InteractionInternal.Context(clockService, metricsService(), commandPublisherProvider.get(), deadlockRecognizer));
 
         // handle any exceptions
         final Execution<?, ?> priorExecution = interaction.getPriorExecution();