subscriber.setItemName(item.getName());
mqttService.registerMessageConsumer(subscriber.getBroker(), subscriber);
}
// add binding change listener to clean up message consumers on item removal
addBindingChangeListener(new BindingChangeListener() {
@Override
public void bindingChanged(BindingProvider provider, String changedItemName) {
if (itemName.equals(changedItemName) && !provider.providesBindingFor(itemName)) {
logger.debug("Removing message consumers for item {}", itemName);
for (MqttMessageSubscriber subscriber : itemConfig.getMessageSubscribers()) {
mqttService.unregisterMessageConsumer(subscriber.getBroker(), subscriber);
}
removeBindingChangeListener(this);
}
}
@Override
public void allBindingsChanged(BindingProvider provider) {
if (!provider.providesBindingFor(itemName)) {
logger.debug("Removing message consumers for item {}", itemName);
for (MqttMessageSubscriber subscriber : itemConfig.getMessageSubscribers()) {
mqttService.unregisterMessageConsumer(subscriber.getBroker(), subscriber);
}
removeBindingChangeListener(this);
}
}
});
// register all message producers
for (MqttMessagePublisher publisher : itemConfig.getMessagePublishers()) {
publisher.setItemName(item.getName());
mqttService.registerMessageProducer(publisher.getBroker(), publisher);
}
// add binding change listener to clean up message publishers on item
// removal
addBindingChangeListener(new BindingChangeListener() {
@Override
public void bindingChanged(BindingProvider provider, String changedItemName) {
if (itemName.equals(changedItemName) && !provider.providesBindingFor(itemName)) {
logger.debug("Removing message publishers for item {}", itemName);