import org.openhab.binding.hue.internal.dto.Util;
import org.openhab.binding.hue.internal.exceptions.ApiException;
import org.openhab.binding.hue.internal.exceptions.DeviceOffException;
+import org.openhab.binding.hue.internal.exceptions.EmptyResponseException;
import org.openhab.binding.hue.internal.exceptions.EntityNotAvailableException;
import org.openhab.binding.hue.internal.exceptions.GroupTableFullException;
import org.openhab.binding.hue.internal.exceptions.InvalidCommandException;
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("GET request 'lights' returned an unexpected empty reponse");
+ }
+
Map<String, T> lightMap = safeFromJson(result.body, gsonType);
List<T> lights = new ArrayList<>();
lightMap.forEach((id, light) -> {
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("GET request 'sensors' returned an unexpected empty reponse");
+ }
+
Map<String, FullSensor> sensorMap = safeFromJson(result.body, FullSensor.GSON_TYPE);
List<FullSensor> sensors = new ArrayList<>();
sensorMap.forEach((id, sensor) -> {
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("GET request 'lights/new' returned an unexpected empty reponse");
+ }
+
String lastScan = safeFromJson(result.body, NewLightsResponse.class).lastscan;
switch (lastScan) {
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException(
+ "GET request 'lights/" + enc(light.getId()) + "' returned an unexpected empty reponse");
+ }
+
FullHueObject fullLight = safeFromJson(result.body, FullLight.class);
fullLight.setId(light.getId());
return fullLight;
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException(
+ "PUT request 'lights/" + enc(light.getId()) + "' returned an unexpected empty reponse");
+ }
+
List<SuccessResponse> entries = safeFromJson(result.body, SuccessResponse.GSON_TYPE);
SuccessResponse response = entries.get(0);
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("GET request 'groups' returned an unexpected empty reponse");
+ }
+
Map<String, FullGroup> groupMap = safeFromJson(result.body, FullGroup.GSON_TYPE);
List<FullGroup> groups = new ArrayList<>();
if (groupMap.get("0") == null) {
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("POST request 'groups' returned an unexpected empty reponse");
+ }
+
List<SuccessResponse> entries = safeFromJson(result.body, SuccessResponse.GSON_TYPE);
SuccessResponse response = entries.get(0);
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("POST request 'groups' returned an unexpected empty reponse");
+ }
+
List<SuccessResponse> entries = safeFromJson(result.body, SuccessResponse.GSON_TYPE);
SuccessResponse response = entries.get(0);
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException(
+ "GET request 'groups/" + enc(group.getId()) + "' returned an unexpected empty reponse");
+ }
+
FullGroup fullGroup = safeFromJson(result.body, FullGroup.class);
fullGroup.setId(group.getId());
return fullGroup;
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException(
+ "PUT request 'groups/" + enc(group.getId()) + "' returned an unexpected empty reponse");
+ }
+
List<SuccessResponse> entries = safeFromJson(result.body, SuccessResponse.GSON_TYPE);
SuccessResponse response = entries.get(0);
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException(
+ "PUT request 'groups/" + enc(group.getId()) + "' returned an unexpected empty reponse");
+ }
+
List<SuccessResponse> entries = safeFromJson(result.body, SuccessResponse.GSON_TYPE);
SuccessResponse response = entries.get(0);
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("GET request 'schedules' returned an unexpected empty reponse");
+ }
+
Map<String, Schedule> scheduleMap = safeFromJson(result.body, Schedule.GSON_TYPE);
List<Schedule> schedules = new ArrayList<>();
scheduleMap.forEach((id, schedule) -> {
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("GET request 'scenes' returned an unexpected empty reponse");
+ }
+
Map<String, Scene> sceneMap = safeFromJson(result.body, Scene.GSON_TYPE);
return sceneMap.entrySet().stream()//
.map(e -> {
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("POST request (link) returned an unexpected empty reponse");
+ }
+
List<SuccessResponse> entries = safeFromJson(result.body, SuccessResponse.GSON_TYPE);
SuccessResponse response = entries.get(0);
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("GET request 'config' returned an unexpected empty reponse");
+ }
+
return safeFromJson(result.body, Config.class);
}
handleErrors(result);
+ if (result.body.isBlank()) {
+ throw new EmptyResponseException("GET request (getFullConfig) returned an unexpected empty reponse");
+ }
+
FullConfig fullConfig = gson.fromJson(result.body, FullConfig.class);
return Objects.requireNonNull(fullConfig);
}