summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2013-06-24 22:34:22 +0200
committerAndrew Branson <andrew.branson@cern.ch>2013-06-24 22:34:22 +0200
commit5377997abe18d1dc73d590f914ba21f670778c4a (patch)
treea2092f3bd7b511c6fd791b33671cfb1be1439452
parent4168117e84eaa719006b2fc448a8060e2d6a3045 (diff)
Set agent in module scripts to either current user or system.
-rw-r--r--src/main/java/com/c2kernel/process/module/Module.java2
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleScript.java15
-rw-r--r--src/main/java/com/c2kernel/scripting/Script.java8
3 files changed, 21 insertions, 4 deletions
diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java
index 16f2c29..a7a85bb 100644
--- a/src/main/java/com/c2kernel/process/module/Module.java
+++ b/src/main/java/com/c2kernel/process/module/Module.java
@@ -38,7 +38,7 @@ public class Module {
for (ModuleScript script : scripts) {
if (script.shouldRun(event, isServer)) {
Logger.msg("Running "+script.event+" "+script.target+" script from "+name);
- Object result = script.getScript().execute();
+ Object result = script.getScript(ns).execute();
if (result instanceof ErrorInfo) {
ErrorInfo error = (ErrorInfo) result;
Logger.error(error.toString());
diff --git a/src/main/java/com/c2kernel/process/module/ModuleScript.java b/src/main/java/com/c2kernel/process/module/ModuleScript.java
index 8612843..beed6f9 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleScript.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleScript.java
@@ -1,6 +1,7 @@
package com.c2kernel.process.module;
-import com.c2kernel.scripting.ErrorInfo;
+import com.c2kernel.entity.proxy.AgentProxy;
+import com.c2kernel.process.Gateway;
import com.c2kernel.scripting.Script;
import com.c2kernel.scripting.ScriptingEngineException;
@@ -22,8 +23,16 @@ public class ModuleScript {
this.script = script;
}
- public Script getScript() throws ScriptingEngineException {
- return new Script(lang, script, ErrorInfo.class);
+ public Script getScript(String ns) throws ScriptingEngineException {
+ AgentProxy user = Gateway.getCurrentUser();
+ try {
+ if (user == null) user = (AgentProxy)Gateway.getProxyManager().getProxy(
+ Gateway.getLDAPLookup().getRoleManager().getAgentPath("system"));
+ } catch (Exception ex) {
+ throw new ScriptingEngineException("System agent unavailable");
+ }
+ return new Script(lang, ns+" "+target+" "+event, script, user);
+
}
public boolean shouldRun(String event, boolean isServer) {
diff --git a/src/main/java/com/c2kernel/scripting/Script.java b/src/main/java/com/c2kernel/scripting/Script.java
index ec03cc3..4faade5 100644
--- a/src/main/java/com/c2kernel/scripting/Script.java
+++ b/src/main/java/com/c2kernel/scripting/Script.java
@@ -96,6 +96,14 @@ public class Script
addOutput(null, returnType);
mScript = expr;
}
+
+ public Script(String lang, String name, String expr, AgentProxy agent) throws ScriptingEngineException
+ {
+ this(lang, expr, ErrorInfo.class);
+ mName = name;
+ addInputParam("agent", AgentProxy.class);
+ setInputParamValue("agent", agent);
+ }
public Script(String lang, String expr) throws ScriptingEngineException
{