Skip to content

Commit

Permalink
[miio] fix bundle restart error (openhab#10190)
Browse files Browse the repository at this point in the history
Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
  • Loading branch information
marcelrv authored and computergeek1507 committed Jul 13, 2021
1 parent 1b0415e commit ec35b9f
Showing 1 changed file with 26 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import static org.openhab.binding.miio.internal.MiIoBindingConstants.*;

import java.util.Map;
import java.util.concurrent.Future;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ScheduledExecutorService;

import org.eclipse.jdt.annotation.NonNullByDefault;
Expand All @@ -35,7 +37,10 @@
import org.openhab.core.thing.type.ChannelTypeRegistry;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* The {@link MiIoHandlerFactory} is responsible for creating things and thing
Expand All @@ -49,17 +54,20 @@ public class MiIoHandlerFactory extends BaseThingHandlerFactory {
private static final String THING_HANDLER_THREADPOOL_NAME = "thingHandler";
protected final ScheduledExecutorService scheduler = ThreadPoolManager
.getScheduledPool(THING_HANDLER_THREADPOOL_NAME);

private MiIoDatabaseWatchService miIoDatabaseWatchService;
private CloudConnector cloudConnector;
private ChannelTypeRegistry channelTypeRegistry;
private BasicChannelTypeProvider basicChannelTypeProvider;
private @Nullable Future<Boolean> scheduledTask;
private final Logger logger = LoggerFactory.getLogger(MiIoHandlerFactory.class);

@Activate
public MiIoHandlerFactory(@Reference ChannelTypeRegistry channelTypeRegistry,
@Reference MiIoDatabaseWatchService miIoDatabaseWatchService, @Reference CloudConnector cloudConnector,
@Reference BasicChannelTypeProvider basicChannelTypeProvider, Map<String, Object> properties) {
this.miIoDatabaseWatchService = miIoDatabaseWatchService;
this.channelTypeRegistry = channelTypeRegistry;
this.basicChannelTypeProvider = basicChannelTypeProvider;
this.cloudConnector = cloudConnector;
@Nullable
String username = (String) properties.get("username");
Expand All @@ -68,9 +76,23 @@ public MiIoHandlerFactory(@Reference ChannelTypeRegistry channelTypeRegistry,
@Nullable
String country = (String) properties.get("country");
cloudConnector.setCredentials(username, password, country);
scheduler.submit(() -> cloudConnector.isConnected());
this.channelTypeRegistry = channelTypeRegistry;
this.basicChannelTypeProvider = basicChannelTypeProvider;
try {
if (!scheduler.isShutdown()) {
scheduledTask = scheduler.submit(() -> cloudConnector.isConnected());
} else {
logger.debug("Unexpected: ScheduledExecutorService is shutdown.");
}
} catch (RejectedExecutionException e) {
logger.debug("Unexpected: ScheduledExecutorService task rejected.", e);
}
}

@Deactivate
private void dispose() {
final Future<Boolean> scheduledTask = this.scheduledTask;
if (scheduledTask != null && !scheduledTask.isDone()) {
scheduledTask.cancel(true);
}
}

@Override
Expand Down

0 comments on commit ec35b9f

Please sign in to comment.