|
1 | 1 | package com.beowulfe.hap.impl.json; |
2 | 2 |
|
3 | | -import java.io.ByteArrayInputStream; |
4 | | -import java.io.ByteArrayOutputStream; |
5 | | - |
6 | | -import javax.json.Json; |
7 | | -import javax.json.JsonArray; |
8 | | -import javax.json.JsonArrayBuilder; |
9 | | -import javax.json.JsonObject; |
10 | | -import javax.json.JsonObjectBuilder; |
11 | | -import javax.json.JsonValue; |
12 | | - |
13 | | -import org.slf4j.Logger; |
14 | | -import org.slf4j.LoggerFactory; |
15 | | - |
16 | 3 | import com.beowulfe.hap.characteristics.Characteristic; |
17 | 4 | import com.beowulfe.hap.characteristics.EventableCharacteristic; |
18 | 5 | import com.beowulfe.hap.impl.HomekitRegistry; |
|
21 | 8 | import com.beowulfe.hap.impl.http.HttpRequest; |
22 | 9 | import com.beowulfe.hap.impl.http.HttpResponse; |
23 | 10 | import com.beowulfe.hap.impl.responses.NotFoundResponse; |
| 11 | +import org.slf4j.Logger; |
| 12 | +import org.slf4j.LoggerFactory; |
| 13 | + |
| 14 | +import javax.json.*; |
| 15 | +import java.io.ByteArrayInputStream; |
| 16 | +import java.io.ByteArrayOutputStream; |
| 17 | +import java.util.Map; |
24 | 18 |
|
25 | 19 | public class CharacteristicsController { |
26 | 20 |
|
@@ -49,9 +43,19 @@ public HttpResponse get(HttpRequest request) throws Exception { |
49 | 43 | int aid = Integer.parseInt(parts[0]); |
50 | 44 | int iid = Integer.parseInt(parts[1]); |
51 | 45 | JsonObjectBuilder characteristic = Json.createObjectBuilder(); |
52 | | - registry.getCharacteristics(aid).get(iid).supplyValue(characteristic); |
| 46 | + Map<Integer, Characteristic> characteristicMap = registry.getCharacteristics(aid); |
| 47 | + if (!characteristicMap.isEmpty()) { |
| 48 | + Characteristic targetCharacteristic = characteristicMap.get(iid); |
| 49 | + if (targetCharacteristic != null) { |
| 50 | + targetCharacteristic.supplyValue(characteristic); |
53 | 51 |
|
54 | | - characteristics.add(characteristic.add("aid", aid).add("iid", iid).build()); |
| 52 | + characteristics.add(characteristic.add("aid", aid).add("iid", iid).build()); |
| 53 | + } else { |
| 54 | + logger.warn("Accessory " + aid + " does not have characteristic " + iid + "Request: " + uri); |
| 55 | + } |
| 56 | + } else { |
| 57 | + logger.warn("Accessory " + aid + " has no characteristics or does not exist. Request: " + uri); |
| 58 | + } |
55 | 59 | } |
56 | 60 | try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) { |
57 | 61 | Json.createWriter(baos).write(Json.createObjectBuilder().add("characteristics", characteristics.build()).build()); |
|
0 commit comments