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