From f88a80ae1cd3694c3be0c7f1265ff9a92b6108de Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 28 Sep 2021 16:54:55 +0200 Subject: [PATCH] [Major] Pass activity locator, not Activity when archiving --- .../src/main/java/li/strolch/execution/Controller.java | 2 +- .../li/strolch/execution/EventBasedExecutionHandler.java | 9 +++++---- .../main/java/li/strolch/execution/ExecutionHandler.java | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/li.strolch.service/src/main/java/li/strolch/execution/Controller.java b/li.strolch.service/src/main/java/li/strolch/execution/Controller.java index 35cd85e8d..c37b3b4f2 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/Controller.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/Controller.java @@ -147,7 +147,7 @@ public class Controller { if (this.activity.getState().isExecuted()) { this.executionHandler.removeFromExecution(this); logger.info("Archiving executed activity " + this.locator + " with state " + this.activity.getState()); - this.executionHandler.archiveActivity(this.realm, this.activity); + this.executionHandler.archiveActivity(this.realm, this.activity.getLocator()); return false; } diff --git a/li.strolch.service/src/main/java/li/strolch/execution/EventBasedExecutionHandler.java b/li.strolch.service/src/main/java/li/strolch/execution/EventBasedExecutionHandler.java index 67be7984f..c9fe16987 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/EventBasedExecutionHandler.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/EventBasedExecutionHandler.java @@ -217,6 +217,7 @@ public class EventBasedExecutionHandler extends ExecutionHandler { return; } + //noinspection SynchronizeOnNonFinalField synchronized (this.controllers) { Map controllers = this.controllers.getMap(realm); if (controllers != null) @@ -409,24 +410,24 @@ public class EventBasedExecutionHandler extends ExecutionHandler { } @Override - public void archiveActivity(String realm, Activity activity) { + public void archiveActivity(String realm, Locator activityLoc) { getExecutor().execute(() -> { try { runAsAgent(ctx -> { try (StrolchTransaction tx = openTx(realm, ctx.getCertificate(), ArchiveActivityCommand.class, false)) { ArchiveActivityCommand command = new ArchiveActivityCommand(tx); - command.setActivityLoc(activity.getLocator()); + command.setActivityLoc(activityLoc); tx.addCommand(command); tx.commitOnClose(); } }); } catch (Exception e) { - logger.error("Failed to archive " + activity.getLocator() + " due to " + e.getMessage(), e); + logger.error("Failed to archive " + activityLoc + " due to " + e.getMessage(), e); if (getContainer().hasComponent(OperationsLog.class)) { getComponent(OperationsLog.class).addMessage( - new LogMessage(realm, SYSTEM_USER_AGENT, activity.getLocator(), LogSeverity.Exception, + new LogMessage(realm, SYSTEM_USER_AGENT, activityLoc, LogSeverity.Exception, LogMessageState.Information, ResourceBundle.getBundle("strolch-service"), "execution.handler.failed.archive").withException(e).value("reason", e)); } diff --git a/li.strolch.service/src/main/java/li/strolch/execution/ExecutionHandler.java b/li.strolch.service/src/main/java/li/strolch/execution/ExecutionHandler.java index da52c62d2..d48ce5ab0 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/ExecutionHandler.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/ExecutionHandler.java @@ -188,10 +188,10 @@ public abstract class ExecutionHandler extends StrolchComponent { * * @param realm * the realm where the activity resides - * @param activity - * the {@link Activity} + * @param activityLoc + * the {@link Locator} of the {@link Activity} to archive */ - public abstract void archiveActivity(String realm, Activity activity); + public abstract void archiveActivity(String realm, Locator activityLoc); /** * Returns the {@link Set} of {@link Locator Locators} of {@link Activity Activities} which are registered for