mirror of
https://github.com/danieldemus/openhab-core.git
synced 2026-07-29 12:34:22 +02:00
DSL support for sharedCache/privateCache (#3187)
Signed-off-by: Jan N. Klug <github@klug.nrw>
This commit is contained in:
+8
-1
@@ -31,6 +31,7 @@ import org.eclipse.xtext.resource.XtextResource;
|
||||
import org.eclipse.xtext.xbase.XExpression;
|
||||
import org.eclipse.xtext.xbase.interpreter.IEvaluationContext;
|
||||
import org.eclipse.xtext.xbase.interpreter.impl.DefaultEvaluationContext;
|
||||
import org.openhab.core.automation.module.script.ScriptExtensionAccessor;
|
||||
import org.openhab.core.items.events.ItemEvent;
|
||||
import org.openhab.core.model.script.engine.Script;
|
||||
import org.openhab.core.model.script.engine.ScriptExecutionException;
|
||||
@@ -69,13 +70,15 @@ public class DSLScriptEngine implements javax.script.ScriptEngine {
|
||||
private final org.openhab.core.model.script.engine.ScriptEngine scriptEngine;
|
||||
private final @Nullable DSLScriptContextProvider contextProvider;
|
||||
private final ScriptContext context = new SimpleScriptContext();
|
||||
private final ScriptExtensionAccessor scriptExtensionAccessor;
|
||||
|
||||
private @Nullable Script parsedScript;
|
||||
|
||||
public DSLScriptEngine(org.openhab.core.model.script.engine.ScriptEngine scriptEngine,
|
||||
@Nullable DSLScriptContextProvider contextProvider) {
|
||||
@Nullable DSLScriptContextProvider contextProvider, ScriptExtensionAccessor scriptExtensionAccessor) {
|
||||
this.scriptEngine = scriptEngine;
|
||||
this.contextProvider = contextProvider;
|
||||
this.scriptExtensionAccessor = scriptExtensionAccessor;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -161,6 +164,10 @@ public class DSLScriptEngine implements javax.script.ScriptEngine {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> cachePreset = scriptExtensionAccessor.findPreset("cache", (String) context.getAttribute("oh.engine-identifier", ScriptContext.ENGINE_SCOPE));
|
||||
evalContext.newValue(QualifiedName.create("sharedCache"), cachePreset.get("sharedCache"));
|
||||
evalContext.newValue(QualifiedName.create("privateCache"), cachePreset.get("privateCache"));
|
||||
// now add specific implicit vars, where we have to map the right content
|
||||
Object value = context.getAttribute(OUTPUT_EVENT);
|
||||
if (value instanceof ChannelTriggeredEvent) {
|
||||
|
||||
+5
-2
@@ -18,6 +18,7 @@ import java.util.Map;
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.core.automation.module.script.ScriptEngineFactory;
|
||||
import org.openhab.core.automation.module.script.ScriptExtensionAccessor;
|
||||
import org.openhab.core.model.script.engine.ScriptEngine;
|
||||
import org.openhab.core.model.script.runtime.DSLScriptContextProvider;
|
||||
import org.osgi.service.component.annotations.Activate;
|
||||
@@ -38,13 +39,15 @@ public class DSLScriptEngineFactory implements ScriptEngineFactory {
|
||||
private static final String SCRIPT_TYPE = "dsl";
|
||||
|
||||
private final ScriptEngine scriptEngine;
|
||||
private final ScriptExtensionAccessor scriptExtensionAccessor;
|
||||
|
||||
@Reference(cardinality = ReferenceCardinality.OPTIONAL, policyOption = ReferencePolicyOption.GREEDY)
|
||||
protected @Nullable DSLScriptContextProvider contextProvider;
|
||||
|
||||
@Activate
|
||||
public DSLScriptEngineFactory(@Reference ScriptEngine scriptEngine) {
|
||||
public DSLScriptEngineFactory(@Reference ScriptEngine scriptEngine, @Reference ScriptExtensionAccessor scriptExtensionAccessor) {
|
||||
this.scriptEngine = scriptEngine;
|
||||
this.scriptExtensionAccessor = scriptExtensionAccessor;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -58,7 +61,7 @@ public class DSLScriptEngineFactory implements ScriptEngineFactory {
|
||||
|
||||
@Override
|
||||
public javax.script.@Nullable ScriptEngine createScriptEngine(String scriptType) {
|
||||
return new DSLScriptEngine(scriptEngine, contextProvider);
|
||||
return new DSLScriptEngine(scriptEngine, contextProvider, scriptExtensionAccessor);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user