/** * Copyright (c) 2014-2017 by the respective copyright holders. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.eclipse.smarthome.model.rule.jvmmodel; import java.util.Collection; import org.eclipse.smarthome.core.items.Item; import org.eclipse.smarthome.core.items.ItemRegistry; import org.eclipse.smarthome.core.items.ItemRegistryChangeListener; /** * The {@link RulesItemRefresher} is responsible for reloading rules resources every time an item is added or removed. * * @author Oliver Libutzki - Initial contribution * @author Kai Kreuzer - added delayed execution * @author Maoliang Huang - refactor * */ public class RulesItemRefresher extends RulesRefresher implements ItemRegistryChangeListener { private ItemRegistry itemRegistry; public void setItemRegistry(ItemRegistry itemRegistry) { this.itemRegistry = itemRegistry; this.itemRegistry.addRegistryChangeListener(this); } public void unsetItemRegistry(ItemRegistry itemRegistry) { this.itemRegistry.removeRegistryChangeListener(this); this.itemRegistry = null; } @Override public void added(Item element) { scheduleRuleRefresh(); } @Override public void removed(Item element) { scheduleRuleRefresh(); } @Override public void updated(Item oldElement, Item element) { } @Override public void allItemsChanged(Collection<String> oldItemNames) { scheduleRuleRefresh(); } }