Commit b4ef3fe7 authored by Vasilis Katopodis's avatar Vasilis Katopodis
Browse files

fix: remove duplicate subscription in automation service

parent 8cd8e0d9
Loading
Loading
Loading
Loading
+40 −42
Original line number Diff line number Diff line
@@ -46,11 +46,12 @@ public class AutomationServiceImpl implements AutomationService {
        deserializedDeviceUni
                .onFailure()
                .recoverWithNull()
                .subscribe()
                .with(
                        device -> {
                            final var id = deviceId;
                .invoke(device -> processDevice(device, deviceId));
    
        return deserializedDeviceUni;
    }
    
    private void processDevice(Device device, String deviceId) {
        if (device == null) {
            LOGGER.warnf("%s is null. Ignoring...", device);
            return;
@@ -61,32 +62,29 @@ public class AutomationServiceImpl implements AutomationService {
            return;
        }
    
                            // LOGGER.infof(MESSAGE, device);
        enableAndConfigureDevice(device, deviceId);
    }
    
                            final var initialConfiguration =
                                    deviceService.getInitialConfiguration(device.getDeviceId());
    private void enableAndConfigureDevice(Device device, String deviceId) {
        final var initialConfiguration = deviceService.getInitialConfiguration(device.getDeviceId());
    
        device.enableDevice();
                            LOGGER.infof("Enabled device [%s]", id);
        LOGGER.infof("Enabled device [%s]", deviceId);
    
        initialConfiguration
                .subscribe()
                                    .with(
                                            deviceConfig -> {
                .with(deviceConfig -> setDeviceConfiguration(device, deviceId, deviceConfig));
    }
    
    private void setDeviceConfiguration(Device device, String deviceId, DeviceConfig deviceConfig) {
        device.setDeviceConfiguration(deviceConfig);
        final var configuredDeviceIdUni = deviceService.configureDevice(device);
    
        configuredDeviceIdUni
                .subscribe()
                                                        .with(
                                                                configuredDeviceId ->
                                                                        LOGGER.infof(
                .with(configuredDeviceId -> LOGGER.infof(
                        "Device [%s] has been successfully enabled and configured with %s.\n",
                                                                                id, deviceConfig));
                                            });
                        });

        return deserializedDeviceUni;
                        deviceId, deviceConfig));
    }
    
    @Override