Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,14 @@
* language
*
* @author Jan N. Klug - Initial contribution
* @author Florian Hotze - Implement script dependency tracking
*/
@NonNullByDefault
@Component(factory = "org.openhab.core.automation.module.script.transformation.factory", service = {
TransformationService.class, ScriptTransformationService.class, ConfigOptionProvider.class,
ConfigDescriptionProvider.class })
public class ScriptTransformationService implements TransformationService, ConfigOptionProvider,
ConfigDescriptionProvider, RegistryChangeListener<Transformation> {
TransformationService.class, ScriptTransformationService.class, ScriptDependencyTracker.Listener.class,
ConfigOptionProvider.class, ConfigDescriptionProvider.class })
public class ScriptTransformationService implements TransformationService, ScriptDependencyTracker.Listener,
ConfigOptionProvider, ConfigDescriptionProvider, RegistryChangeListener<Transformation> {
public static final String SCRIPT_TYPE_PROPERTY_NAME = "openhab.transform.script.scriptType";
public static final String OPENHAB_TRANSFORMATION_SCRIPT = "openhab-transformation-script-";

Expand Down Expand Up @@ -298,6 +299,16 @@ public Collection<ConfigDescription> getConfigDescriptions(@Nullable Locale loca
.withParameterGroups(template.getParameterGroups()).build();
}

@Override
public void onDependencyChange(String scriptId) {
String scriptUid = scriptId.substring(OPENHAB_TRANSFORMATION_SCRIPT.length());
ScriptRecord scriptRecord = scriptCache.get(scriptUid);
if (scriptRecord != null) {
logger.debug("Clearing script cache for script {}", scriptUid);
clearCache(scriptUid);
}
}

private void clearCache(String uid) {
ScriptRecord scriptRecord = scriptCache.remove(uid);
if (scriptRecord != null) {
Expand Down