Avoids NPE if no station provided by API (#15832)

Signed-off-by: clinique <gael@lhopital.org>
This commit is contained in:
Gaël L'hopital 2023-11-03 18:17:36 +01:00 committed by GitHub
parent 740f80fff1
commit 15a673a027
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 11 deletions

View File

@ -34,6 +34,7 @@ import org.openhab.binding.vigicrues.internal.StationConfiguration;
import org.openhab.binding.vigicrues.internal.api.ApiHandler; import org.openhab.binding.vigicrues.internal.api.ApiHandler;
import org.openhab.binding.vigicrues.internal.api.VigiCruesException; import org.openhab.binding.vigicrues.internal.api.VigiCruesException;
import org.openhab.binding.vigicrues.internal.dto.hubeau.HubEauResponse; import org.openhab.binding.vigicrues.internal.dto.hubeau.HubEauResponse;
import org.openhab.binding.vigicrues.internal.dto.hubeau.HubEauResponse.StationData;
import org.openhab.binding.vigicrues.internal.dto.opendatasoft.OpenDatasoftResponse; import org.openhab.binding.vigicrues.internal.dto.opendatasoft.OpenDatasoftResponse;
import org.openhab.binding.vigicrues.internal.dto.vigicrues.CdStationHydro; import org.openhab.binding.vigicrues.internal.dto.vigicrues.CdStationHydro;
import org.openhab.binding.vigicrues.internal.dto.vigicrues.InfoVigiCru; import org.openhab.binding.vigicrues.internal.dto.vigicrues.InfoVigiCru;
@ -129,6 +130,8 @@ public class VigiCruesHandler extends BaseThingHandler {
try { try {
HubEauResponse stationDetails = apiHandler.discoverStations(config.id); HubEauResponse stationDetails = apiHandler.discoverStations(config.id);
List<StationData> stations = stationDetails.stations;
if (stations != null && stations.size() > 0) {
stationDetails.stations.stream().findFirst().ifPresent(station -> { stationDetails.stations.stream().findFirst().ifPresent(station -> {
PointType stationLocation = new PointType( PointType stationLocation = new PointType(
String.format(Locale.US, "%f,%f", station.latitudeStation, station.longitudeStation)); String.format(Locale.US, "%f,%f", station.latitudeStation, station.longitudeStation));
@ -140,6 +143,9 @@ public class VigiCruesHandler extends BaseThingHandler {
} }
properties.put(RIVER, station.libelleCoursEau); properties.put(RIVER, station.libelleCoursEau);
}); });
} else {
throw new VigiCruesException("No stations provided");
}
} catch (VigiCruesException e) { } catch (VigiCruesException e) {
logger.info("Unable to retrieve station location details {} : {}", config.id, e.getMessage()); logger.info("Unable to retrieve station location details {} : {}", config.id, e.getMessage());
} }