diff --git a/src/main/java/sirius/biz/process/ProcessContext.java b/src/main/java/sirius/biz/process/ProcessContext.java index 488ad581a..30436b62b 100644 --- a/src/main/java/sirius/biz/process/ProcessContext.java +++ b/src/main/java/sirius/biz/process/ProcessContext.java @@ -262,7 +262,7 @@ public interface ProcessContext extends TaskContextAdapter { TableOutput.ColumnBuilder addTable(String name, String label); /** - * Adds an additional log output to the process. + * Adds a log output to the process. *

* Use {@link ProcessLog#into(String)} to add log entries to this output. * diff --git a/src/main/java/sirius/biz/process/Processes.java b/src/main/java/sirius/biz/process/Processes.java index ddaf1c710..fd0afa932 100644 --- a/src/main/java/sirius/biz/process/Processes.java +++ b/src/main/java/sirius/biz/process/Processes.java @@ -176,6 +176,20 @@ public String createProcess(@Nullable String type, return process.getIdAsString(); } + /** + * Fetches the currently active process. + * + * @return the process for which the current thread is executing or an empty optional if no process is active + */ + public Optional> fetchCurrentProcess() { + TaskContextAdapter adapter = TaskContext.get().getAdapter(); + if (adapter instanceof ProcessEnvironment processEnvironment) { + return Optional.of(() -> fetchRequiredProcess(processEnvironment.getProcessId())); + } else { + return Optional.empty(); + } + } + /** * Creates a new process for the currently active user. * @@ -1086,7 +1100,7 @@ public Optional fetchProcessLogForUser(String processLogId) { * * @param processLog the log entry to modify * @param newState the new state to set - * @param webContext the request to respond to + * @param webContext the request to respond to * @param returnUrl the URL to redirect the request to once the modification has been performed and is visible */ public void updateProcessLogStateAndReturn(ProcessLog processLog, diff --git a/src/main/java/sirius/biz/ide/JobTaskContextAdapter.java b/src/main/java/sirius/biz/scripting/JobTaskContextAdapter.java similarity index 98% rename from src/main/java/sirius/biz/ide/JobTaskContextAdapter.java rename to src/main/java/sirius/biz/scripting/JobTaskContextAdapter.java index f9b863e85..037ed8b5c 100644 --- a/src/main/java/sirius/biz/ide/JobTaskContextAdapter.java +++ b/src/main/java/sirius/biz/scripting/JobTaskContextAdapter.java @@ -6,7 +6,7 @@ * http://www.scireum.de - info@scireum.de */ -package sirius.biz.ide; +package sirius.biz.scripting; import sirius.kernel.async.TaskContextAdapter; import sirius.kernel.commons.RateLimit; diff --git a/src/main/java/sirius/biz/ide/LogMacro.java b/src/main/java/sirius/biz/scripting/LogMacro.java similarity index 93% rename from src/main/java/sirius/biz/ide/LogMacro.java rename to src/main/java/sirius/biz/scripting/LogMacro.java index 6b0ef26b2..5d647c8e4 100644 --- a/src/main/java/sirius/biz/ide/LogMacro.java +++ b/src/main/java/sirius/biz/scripting/LogMacro.java @@ -6,7 +6,7 @@ * http://www.scireum.de - info@scireum.de */ -package sirius.biz.ide; +package sirius.biz.scripting; import sirius.kernel.async.TaskContext; import sirius.kernel.di.std.Register; @@ -15,6 +15,7 @@ import sirius.pasta.noodle.compiler.CompilationContext; import sirius.pasta.noodle.compiler.ir.Node; import sirius.pasta.noodle.macros.BasicMacro; +import sirius.pasta.noodle.sandbox.NoodleSandbox; import javax.annotation.Nonnull; import java.util.List; @@ -23,6 +24,7 @@ * Provides a shortcut to invoke {@link TaskContext#log(String, Object...)}. */ @Register +@NoodleSandbox(NoodleSandbox.Accessibility.GRANTED) public class LogMacro extends BasicMacro { @Override protected Class getType() { diff --git a/src/main/java/sirius/biz/ide/Scripting.java b/src/main/java/sirius/biz/scripting/Scripting.java similarity index 97% rename from src/main/java/sirius/biz/ide/Scripting.java rename to src/main/java/sirius/biz/scripting/Scripting.java index c6e114632..f97fa9b2e 100644 --- a/src/main/java/sirius/biz/ide/Scripting.java +++ b/src/main/java/sirius/biz/scripting/Scripting.java @@ -6,7 +6,7 @@ * http://www.scireum.de - info@scireum.de */ -package sirius.biz.ide; +package sirius.biz.scripting; import com.fasterxml.jackson.databind.node.ObjectNode; import sirius.biz.cluster.Interconnect; @@ -24,7 +24,6 @@ import sirius.kernel.health.Exceptions; import sirius.kernel.health.HandledException; import sirius.kernel.health.Log; -import sirius.pasta.Pasta; import sirius.pasta.noodle.Callable; import sirius.pasta.noodle.ScriptingException; import sirius.pasta.noodle.SimpleEnvironment; @@ -54,6 +53,11 @@ @Register(classes = {Scripting.class, InterconnectHandler.class}) public class Scripting implements InterconnectHandler { + /** + * Contains a global logger to use for errors or messages related to custom scripts. + */ + public static final Log LOG = Log.get("scripting"); + private static final int MAX_MESSAGES = 256; private static final String TASK_TYPE = "type"; @@ -237,7 +241,7 @@ private void handleTaskForNode(ObjectNode event, String jobNumber) { } catch (CompileException | ScriptingException | HandledException exception) { logInTranscript(jobNumber, exception.getMessage()); } catch (Exception exception) { - logInTranscript(jobNumber, Exceptions.handle(Pasta.LOG, exception).getMessage()); + logInTranscript(jobNumber, Exceptions.handle(LOG, exception).getMessage()); } logInTranscript(jobNumber, Strings.apply("Execution completed (%s)", watch.duration())); diff --git a/src/main/java/sirius/biz/ide/ScriptingController.java b/src/main/java/sirius/biz/scripting/ScriptingController.java similarity index 97% rename from src/main/java/sirius/biz/ide/ScriptingController.java rename to src/main/java/sirius/biz/scripting/ScriptingController.java index 45a9a1a38..22d599a85 100644 --- a/src/main/java/sirius/biz/ide/ScriptingController.java +++ b/src/main/java/sirius/biz/scripting/ScriptingController.java @@ -6,7 +6,7 @@ * http://www.scireum.de - info@scireum.de */ -package sirius.biz.ide; +package sirius.biz.scripting; import sirius.biz.web.BizController; import sirius.kernel.commons.Strings; @@ -77,7 +77,7 @@ public void scripting(WebContext webContext) { nodes.addFirst(Tuple.create("Current Machine", Scripting.LOCAL_NODE)); nodes.add(Tuple.create("All Machines", Scripting.ALL_NODES)); - webContext.respondWith().template("/templates/biz/ide/scripting.html.pasta", nodes); + webContext.respondWith().template("/templates/biz/scripting/scripting.html.pasta", nodes); } /** diff --git a/src/main/java/sirius/biz/ide/TranscriptMessage.java b/src/main/java/sirius/biz/scripting/TranscriptMessage.java similarity index 93% rename from src/main/java/sirius/biz/ide/TranscriptMessage.java rename to src/main/java/sirius/biz/scripting/TranscriptMessage.java index 2d5c0273a..acb0f3228 100644 --- a/src/main/java/sirius/biz/ide/TranscriptMessage.java +++ b/src/main/java/sirius/biz/scripting/TranscriptMessage.java @@ -6,12 +6,12 @@ * http://www.scireum.de - info@scireum.de */ -package sirius.biz.ide; +package sirius.biz.scripting; /** * Wraps a transcript message which can be created by a running script and is available on all nodes. */ -class TranscriptMessage { +public class TranscriptMessage { private final String node; private final String jobNumber; diff --git a/src/main/resources/default/templates/biz/ide/scripting.html.pasta b/src/main/resources/default/templates/biz/scripting/scripting.html.pasta similarity index 100% rename from src/main/resources/default/templates/biz/ide/scripting.html.pasta rename to src/main/resources/default/templates/biz/scripting/scripting.html.pasta