Skip to content
Snippets Groups Projects
Commit 9e26beb0 authored by René Schöne's avatar René Schöne
Browse files

Using EventPublisher in EraserHandler.

parent 3aed9ebf
No related branches found
No related tags found
No related merge requests found
......@@ -7,12 +7,14 @@ import java.util.Set;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.smarthome.core.events.EventPublisher;
import org.eclipse.smarthome.core.items.GenericItem;
import org.eclipse.smarthome.core.items.GroupItem;
import org.eclipse.smarthome.core.items.Item;
import org.eclipse.smarthome.core.items.ItemNotFoundException;
import org.eclipse.smarthome.core.items.ItemRegistry;
import org.eclipse.smarthome.core.items.StateChangeListener;
import org.eclipse.smarthome.core.items.events.ItemEventFactory;
import org.eclipse.smarthome.core.library.types.DateTimeType;
import org.eclipse.smarthome.core.library.types.DecimalType;
import org.eclipse.smarthome.core.library.types.HSBType;
......@@ -22,6 +24,7 @@ import org.eclipse.smarthome.core.thing.ChannelUID;
import org.eclipse.smarthome.core.thing.Thing;
import org.eclipse.smarthome.core.types.Command;
import org.eclipse.smarthome.core.types.State;
import org.eclipse.smarthome.core.types.TypeParser;
import org.openhab.binding.openlicht.BindingConstants;
import org.openhab.binding.openlicht.internal.ConfigurationHolder;
import org.openhab.binding.openlicht.internal.DelegateEraserRegistryChangeListener;
......@@ -41,10 +44,12 @@ public class EraserHandler extends AbstractMqttHandler implements StateChangeLis
private HandlerPhase lastStatusUpdatePhase;
private boolean lastStatusUpdateSuccess;
private String lastStatusUpdateDescription;
private @Nullable EventPublisher eventPublisher;
public EraserHandler(Thing thing, ConfigurationHolder configurationHolder) {
super(thing, configurationHolder);
this.itemRegistry = configurationHolder.getItemRegistry();
this.eventPublisher = configurationHolder.getEventPublisher();
ItemRegistry registry = this.itemRegistry;
if (registry != null) {
delegateListener = new WeakReference<DelegateEraserRegistryChangeListener>(
......@@ -159,14 +164,23 @@ public class EraserHandler extends AbstractMqttHandler implements StateChangeLis
}
// assume this is a GenericItem
GenericItem genericItem = (GenericItem) item;
State newState = parseState(genericItem, new String(payload));
if (newState != null) {
logger.debug("Setting state {} of type {} for {}", newState, newState.getClass().getSimpleName(),
genericItem.getName());
genericItem.setState(newState);
// State newState = parseState(genericItem, new String(payload));
Command command = TypeParser.parseCommand(genericItem.getAcceptedCommandTypes(), new String(payload));
EventPublisher localEventPublisher = this.eventPublisher;
if (command != null && localEventPublisher != null) {
localEventPublisher.post(ItemEventFactory.createCommandEvent(itemName, command));
} else {
logger.warn("Could not set state for {} using '{}'", genericItem, new String(payload));
}
logger.debug("Could not create command for event-publisher {}, item {} and payload {}",
localEventPublisher, itemName, new String(payload));
}
// if (newState != null) {
// logger.debug("Setting state {} of type {} for {}", newState, newState.getClass().getSimpleName(),
// genericItem.getName());
// genericItem.setState(newState);
// } else {
// logger.warn("Could not set state for {} using '{}'", genericItem, new String(payload));
// }
} else {
logger.debug("No item registry to process message");
}
......
......@@ -3,6 +3,7 @@ package org.openhab.binding.openlicht.internal;
import java.util.concurrent.ScheduledExecutorService;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.smarthome.core.events.EventPublisher;
import org.eclipse.smarthome.core.items.ItemRegistry;
import org.eclipse.smarthome.core.thing.ThingRegistry;
import org.eclipse.smarthome.io.transport.mqtt.MqttService;
......@@ -22,6 +23,9 @@ public interface ConfigurationHolder {
@Nullable
ItemRegistry getItemRegistry();
@Nullable
EventPublisher getEventPublisher();
Version getVersion();
}
......@@ -23,6 +23,7 @@ import java.util.stream.Stream;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.smarthome.core.events.EventPublisher;
import org.eclipse.smarthome.core.items.ItemRegistry;
import org.eclipse.smarthome.core.thing.Thing;
import org.eclipse.smarthome.core.thing.ThingRegistry;
......@@ -64,6 +65,7 @@ public class OpenLichtHandlerFactory extends BaseThingHandlerFactory implements
private @Nullable ThingRegistry thingRegistry;
private @Nullable ItemRegistry itemRegistry;
private @Nullable ScheduledExecutorService executor;
private @Nullable EventPublisher eventPublisher;
@Override
public boolean supportsThingType(ThingTypeUID thingTypeUID) {
......@@ -127,6 +129,11 @@ public class OpenLichtHandlerFactory extends BaseThingHandlerFactory implements
return itemRegistry;
}
@Override
public @Nullable EventPublisher getEventPublisher() {
return eventPublisher;
}
@Override
public Version getVersion() {
return FrameworkUtil.getBundle(getClass()).getVersion();
......@@ -164,4 +171,15 @@ public class OpenLichtHandlerFactory extends BaseThingHandlerFactory implements
logger.info("Deleting item registry {}", itemRegistry);
this.itemRegistry = null;
}
@Reference(cardinality = ReferenceCardinality.MANDATORY, policy = ReferencePolicy.STATIC)
public void setEvemtPublisher(EventPublisher eventPublisher) {
logger.info("Setting event publisher to {}", eventPublisher);
this.eventPublisher = eventPublisher;
}
public void unsetEventPublisher(EventPublisher eventPublisher) {
logger.info("Deleting event publisher {}", eventPublisher);
this.eventPublisher = null;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment