You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2024/06/19 12:21:54 UTC

(causeway) 03/09: CAUSEWAY-3781: moves logging onto ObjcetActionMixedIn and ObjectActionDefault

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

danhaywood pushed a commit to branch maintenance-branch
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 5da5c77a3e2af354e96cfbb31760a23a1abf2273
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jun 18 13:57:11 2024 +0100

    CAUSEWAY-3781: moves logging onto ObjcetActionMixedIn and ObjectActionDefault
---
 .../core/metamodel/execution/ActionExecutor.java   | 28 -----------------
 .../specloader/specimpl/ObjectActionDefault.java   | 35 ++++++++++++++++++++++
 .../specloader/specimpl/ObjectActionMixedIn.java   | 21 +++++++++++--
 3 files changed, 53 insertions(+), 31 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/execution/ActionExecutor.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/execution/ActionExecutor.java
index 0f6c080429..f79d726431 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/execution/ActionExecutor.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/execution/ActionExecutor.java
@@ -149,12 +149,6 @@ implements
             val invocationDto =
                     getInteractionDtoServiceInternal().asActionInvocationDto(owningAction, head, arguments);
             currentExecution.setDto(invocationDto);
-
-            if(log.isInfoEnabled()) {
-                log.info("Executing: {} {} {} {}",
-                        invocationDto.getLogicalMemberIdentifier(),
-                        currentExecution.getInteraction().getInteractionId(), ownerBookmarkIfAny.get().toString(), argsFor(owningAction.getParameters(), arguments));
-            }
         }
 
         if(!isPostable()) {
@@ -206,28 +200,6 @@ implements
         }
     }
 
-    private String argsFor(Can<ObjectActionParameter> parameters, Can<ManagedObject> arguments) {
-        if(parameters.size() != arguments.size()) {
-            return "???"; // shouldn't happen
-        }
-        return parameters.stream().map(IndexedFunction.zeroBased((i, param) -> {
-            val id = param.getId();
-            val argStr = argStr(id, arguments, i);
-            return id + "=" + argStr;
-        })).collect(Collectors.joining(","));
-    }
-
-    private static String argStr(String paramId, Can<ManagedObject> arguments, int i) {
-        return isSensitiveName(paramId) ? "********" : arguments.get(i).map(ManagedObject::getTitle).orElse(null);
-    }
-
-    private static boolean isSensitiveName(String name) {
-        return name.equalsIgnoreCase("password") ||
-                name.equalsIgnoreCase("secret") ||
-                name.equalsIgnoreCase("apikey") ||
-                name.equalsIgnoreCase("token");
-    }
-
     @SneakyThrows
     private Object executeWithoutEvents(final Can<ManagedObject> arguments) {
         // invoke method
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index 67bc72cb7d..10f9a23902 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -22,6 +22,7 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.UUID;
 import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.Action;
@@ -29,9 +30,11 @@ import org.apache.causeway.applib.annotation.ActionLayout;
 import org.apache.causeway.applib.annotation.SemanticsOf;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.applib.exceptions.RecoverableException;
+import org.apache.causeway.applib.services.bookmark.Bookmark;
 import org.apache.causeway.applib.services.command.Command;
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.commons.collections.CanVector;
+import org.apache.causeway.commons.functional.IndexedFunction;
 import org.apache.causeway.commons.internal.assertions._Assert;
 import org.apache.causeway.commons.internal.base._Lazy;
 import org.apache.causeway.commons.internal.exceptions._Exceptions;
@@ -455,8 +458,17 @@ implements ObjectAction {
         _Assert.assertEquals(this.getParameterCount(), argumentAdapters.size(),
                 "action's parameter count and provided argument count must match");
 
+        final ManagedObject owner = head.getOwner();
+
         if(!interactionInitiatedBy.isPassThrough()) {
             setupCommand(head, argumentAdapters);
+            if(log.isInfoEnabled()) {
+                log.info("Executing: {} {} {}",
+                        getFeatureIdentifier(),
+                        owner.getBookmark().map(Bookmark::toString).orElse(null),
+                        argsFor(getParameters(), argumentAdapters));
+            }
+
         }
 
         return this.executeInternal(head, argumentAdapters, interactionInitiatedBy);
@@ -574,6 +586,29 @@ implements ObjectAction {
 
     // -- HELPER
 
+    protected String argsFor(Can<ObjectActionParameter> parameters, Can<ManagedObject> arguments) {
+        if(parameters.size() != arguments.size()) {
+            return "???"; // shouldn't happen
+        }
+        return parameters.stream().map(IndexedFunction.zeroBased((i, param) -> {
+            val id = param.getId();
+            val argStr = argStr(id, arguments, i);
+            return id + "=" + argStr;
+        })).collect(Collectors.joining(","));
+    }
+
+    private static String argStr(String paramId, Can<ManagedObject> arguments, int i) {
+        return isSensitiveName(paramId) ? "********" : arguments.get(i).map(ManagedObject::getTitle).orElse(null);
+    }
+
+    private static boolean isSensitiveName(String name) {
+        return name.equalsIgnoreCase("password") ||
+                name.equalsIgnoreCase("secret") ||
+                name.equalsIgnoreCase("apikey") ||
+                name.equalsIgnoreCase("token");
+    }
+
+
     private CommandDto commandDtoFor(
             final UUID interactionId,
             final InteractionHead head,
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
index be592c5be6..e5a946d2ce 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
@@ -22,8 +22,10 @@ import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.Domain;
 import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.applib.id.LogicalType;
+import org.apache.causeway.applib.services.bookmark.Bookmark;
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.commons.collections.CanVector;
+import org.apache.causeway.commons.functional.IndexedFunction;
 import org.apache.causeway.commons.internal.assertions._Assert;
 import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
@@ -36,11 +38,16 @@ import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
 import org.apache.causeway.core.metamodel.spec.feature.MixedInMember;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
+import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter;
 
 import lombok.Getter;
 import lombok.NonNull;
+import lombok.extern.log4j.Log4j2;
 import lombok.val;
 
+import java.util.stream.Collectors;
+
+@Log4j2
 public class ObjectActionMixedIn
 extends ObjectActionDefault
 implements MixedInMember {
@@ -164,7 +171,7 @@ implements MixedInMember {
     @Override
     public ManagedObject execute(
             final InteractionHead head,
-            final Can<ManagedObject> arguments,
+            final Can<ManagedObject> argumentAdapters,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
         final ManagedObject owner = head.getOwner();
@@ -174,13 +181,21 @@ implements MixedInMember {
 
         if(!interactionInitiatedBy.isPassThrough()) {
             // skip if is PASS_THROUGH
-            setupCommand(head, arguments);
+            setupCommand(head, argumentAdapters);
+            if(log.isInfoEnabled()) {
+                log.info("Executing: {} {} {}",
+                        getFeatureIdentifier(),
+                        owner.getBookmark().map(Bookmark::toString).orElse(null),
+                        argsFor(getParameters(), argumentAdapters));
+            }
         }
+
         return mixinAction.executeInternal(
-                head, arguments,
+                head, argumentAdapters,
                 interactionInitiatedBy);
     }
 
+
     @Override
     public ObjectSpecification getMixinType() {
         return getSpecificationLoader().loadSpecification(mixinType);