From b7ce4b355cce81765168b65248b9f6f7a2bf589c Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Mon, 17 May 2021 18:03:06 +0200 Subject: [PATCH] [Minor] Added StrolchAgent.runAsWithResult() --- .../li/strolch/agent/api/StrolchAgent.java | 19 +++++++++++++++++-- .../DefaultStrolchPrivilegeHandler.java | 5 +++++ .../runtime/privilege/PrivilegeHandler.java | 18 ++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/li.strolch.agent/src/main/java/li/strolch/agent/api/StrolchAgent.java b/li.strolch.agent/src/main/java/li/strolch/agent/api/StrolchAgent.java index f2f6ef217..ad46b05ae 100644 --- a/li.strolch.agent/src/main/java/li/strolch/agent/api/StrolchAgent.java +++ b/li.strolch.agent/src/main/java/li/strolch/agent/api/StrolchAgent.java @@ -129,14 +129,29 @@ public class StrolchAgent { } /** - * @see ComponentContainer#runAsAgent(PrivilegedRunnable) + * @see PrivilegeHandler#runAs(String, PrivilegedRunnable) + */ + public void runAs(String systemUser, PrivilegedRunnable runnable) throws PrivilegeException, Exception { + getPrivilegeHandler().runAs(systemUser, runnable); + } + + /** + * @see PrivilegeHandler#runAsAgent(PrivilegedRunnable) */ public void runAsAgent(PrivilegedRunnable runnable) throws PrivilegeException, Exception { getPrivilegeHandler().runAsAgent(runnable); } /** - * @see ComponentContainer#runAsAgentWithResult(PrivilegedRunnableWithResult) + * @see PrivilegeHandler#runAsAgentWithResult(PrivilegedRunnableWithResult) + */ + public T runAsWithResult(String systemUser, PrivilegedRunnableWithResult runnable) + throws PrivilegeException, Exception { + return getPrivilegeHandler().runAsWithResult(systemUser, runnable); + } + + /** + * @see PrivilegeHandler#runAsAgentWithResult(PrivilegedRunnableWithResult) */ public T runAsAgentWithResult(PrivilegedRunnableWithResult runnable) throws PrivilegeException, Exception { return getPrivilegeHandler().runAsAgentWithResult(runnable); diff --git a/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/DefaultStrolchPrivilegeHandler.java b/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/DefaultStrolchPrivilegeHandler.java index 41e1cf4b4..e23962399 100644 --- a/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/DefaultStrolchPrivilegeHandler.java +++ b/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/DefaultStrolchPrivilegeHandler.java @@ -264,6 +264,11 @@ public class DefaultStrolchPrivilegeHandler extends StrolchComponent implements .runWithResult(StrolchConstants.SYSTEM_USER_AGENT, new StrolchSystemActionWithResult<>(runnable)); } + @Override + public T runAsWithResult(String username, PrivilegedRunnableWithResult runnable) throws Exception { + return this.privilegeHandler.runWithResult(username, new StrolchSystemActionWithResult<>(runnable)); + } + @Override public PrivilegeContext openAgentSystemUserContext() throws PrivilegeException { return this.privilegeHandler.openSystemUserContext(StrolchConstants.SYSTEM_USER_AGENT); diff --git a/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/PrivilegeHandler.java b/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/PrivilegeHandler.java index c3d55cd25..fe7c9cf49 100644 --- a/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/PrivilegeHandler.java +++ b/li.strolch.agent/src/main/java/li/strolch/runtime/privilege/PrivilegeHandler.java @@ -298,6 +298,24 @@ public interface PrivilegeHandler { */ T runAsAgentWithResult(PrivilegedRunnableWithResult runnable) throws PrivilegeException, Exception; + /** + * Run the given {@link PrivilegedRunnableWithResult} as the given system user + * + * @param username + * the system username + * @param runnable + * the runnable to perform + * + * @return the result + * + * @throws PrivilegeException + * if there is something wrong + * @throws Exception + * if anything else goes wrong during execution + */ + T runAsWithResult(String username, PrivilegedRunnableWithResult runnable) + throws PrivilegeException, Exception; + /** * Opens a {@link PrivilegeContext} as the system user {@link StrolchConstants#SYSTEM_USER_AGENT} *