From 41f14bd78b46b10f36dc8d42953871d3cf6deba5 Mon Sep 17 00:00:00 2001 From: michaeloffner Date: Wed, 4 Sep 2024 21:42:34 +0200 Subject: [PATCH] add gateway functions --- .../functions/gateway/GatewayAction.java | 25 +++++++++++++ .../functions/gateway/GatewayState.java | 16 +++++++++ .../lucee/runtime/gateway/GatewayUtil.java | 9 +++++ .../listener/ModernApplicationContext.java | 2 +- core/src/main/java/resource/fld/core-base.fld | 36 +++++++++++++++++++ loader/build.xml | 2 +- loader/pom.xml | 2 +- 7 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 core/src/main/java/lucee/runtime/functions/gateway/GatewayAction.java create mode 100644 core/src/main/java/lucee/runtime/functions/gateway/GatewayState.java diff --git a/core/src/main/java/lucee/runtime/functions/gateway/GatewayAction.java b/core/src/main/java/lucee/runtime/functions/gateway/GatewayAction.java new file mode 100644 index 0000000000..28adedf790 --- /dev/null +++ b/core/src/main/java/lucee/runtime/functions/gateway/GatewayAction.java @@ -0,0 +1,25 @@ +package lucee.runtime.functions.gateway; + +import lucee.runtime.PageContext; +import lucee.runtime.config.ConfigWebPro; +import lucee.runtime.exp.FunctionException; +import lucee.runtime.exp.PageException; +import lucee.runtime.ext.function.Function; +import lucee.runtime.gateway.GatewayEngineImpl; + +public final class GatewayAction implements Function { + + private static final long serialVersionUID = -4801573283953497373L; + + public static String call(PageContext pc, String gatewayID, String action) throws PageException { + GatewayEngineImpl g = ((GatewayEngineImpl) ((ConfigWebPro) pc.getConfig()).getGatewayEngine()); + + action = action.trim().toLowerCase(); + + if ("start".equals(action)) g.start(gatewayID); + else if ("stop".equals(action)) g.stop(gatewayID); + else if ("restart".equals(action)) g.restart(gatewayID); + else new FunctionException(pc, "GatewayAction", 2, "action", "invalid action [" + action + "], valid values are [start,stop,restart]"); + return null; + } +} \ No newline at end of file diff --git a/core/src/main/java/lucee/runtime/functions/gateway/GatewayState.java b/core/src/main/java/lucee/runtime/functions/gateway/GatewayState.java new file mode 100644 index 0000000000..4acc7754ea --- /dev/null +++ b/core/src/main/java/lucee/runtime/functions/gateway/GatewayState.java @@ -0,0 +1,16 @@ +package lucee.runtime.functions.gateway; + +import lucee.runtime.PageContext; +import lucee.runtime.config.ConfigWebPro; +import lucee.runtime.exp.PageException; +import lucee.runtime.ext.function.Function; +import lucee.runtime.gateway.GatewayEngineImpl; +import lucee.runtime.gateway.GatewayUtil; + +public final class GatewayState implements Function { + + public static String call(PageContext pc, String gatewayID) throws PageException { + GatewayEngineImpl g = ((GatewayEngineImpl) ((ConfigWebPro) pc.getConfig()).getGatewayEngine()); + return GatewayUtil.toState(g.getState(gatewayID), "UNDEFINED"); + } +} \ No newline at end of file diff --git a/core/src/main/java/lucee/runtime/gateway/GatewayUtil.java b/core/src/main/java/lucee/runtime/gateway/GatewayUtil.java index 568c667f70..52d62aa1bc 100755 --- a/core/src/main/java/lucee/runtime/gateway/GatewayUtil.java +++ b/core/src/main/java/lucee/runtime/gateway/GatewayUtil.java @@ -58,4 +58,13 @@ public static int getState(GatewayEntry ge) { // this method only exists to make return ge.getGateway().getState(); } + public static String toState(int state, String defaultValue) { + if (Gateway.FAILED == state) return "failed"; + if (Gateway.RUNNING == state) return "running"; + if (Gateway.STARTING == state) return "starting"; + if (Gateway.STOPPED == state) return "stopped"; + if (Gateway.STOPPING == state) return "stopping"; + return defaultValue; + } + } \ No newline at end of file diff --git a/core/src/main/java/lucee/runtime/listener/ModernApplicationContext.java b/core/src/main/java/lucee/runtime/listener/ModernApplicationContext.java index 6d8d748105..fca2567db0 100644 --- a/core/src/main/java/lucee/runtime/listener/ModernApplicationContext.java +++ b/core/src/main/java/lucee/runtime/listener/ModernApplicationContext.java @@ -1829,8 +1829,8 @@ public JavaSettings getJavaSettings() { getRPCClassLoader(); } catch (IOException e) { - return ((ConfigPro) config).getJavaSettings(); } + if (javaSettings == null) return ((ConfigPro) config).getJavaSettings(); return javaSettings; } diff --git a/core/src/main/java/resource/fld/core-base.fld b/core/src/main/java/resource/fld/core-base.fld index 6dcaca29fa..1182f7c524 100755 --- a/core/src/main/java/resource/fld/core-base.fld +++ b/core/src/main/java/resource/fld/core-base.fld @@ -12404,6 +12404,42 @@ You can find a list of all available timezones in the Lucee administrator (Setti string + + + GatewayState + lucee.runtime.functions.gateway.GatewayState + Return the current state for the given gateway id. + + gatewayID + string + Yes + Identifier of the gateway to get info for. + + + string + + + + + GatewayAction + lucee.runtime.functions.gateway.GatewayAction + Executes a specifc action for a gateway instance. + + gatewayID + string + Yes + Identifier of the gateway to do the action on. + + + action + string + Yes + action to execute, possible values are [start,stop and restart] + + + string + + diff --git a/loader/build.xml b/loader/build.xml index 5992163582..40f9f25c2a 100644 --- a/loader/build.xml +++ b/loader/build.xml @@ -2,7 +2,7 @@ - + diff --git a/loader/pom.xml b/loader/pom.xml index d0e7f7338f..9c95c5fb3f 100644 --- a/loader/pom.xml +++ b/loader/pom.xml @@ -3,7 +3,7 @@ org.lucee lucee - 6.2.0.75-SNAPSHOT + 6.2.0.76-SNAPSHOT jar Lucee Loader Build