diff --git a/pom.xml b/pom.xml index 9575212..41e7721 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.bwssystems.HABridge ha-bridge - 1.1.0b + 1.1.0c jar HA Bridge diff --git a/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java b/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java index 74be736..dda0d15 100644 --- a/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java +++ b/src/main/java/com/bwssystems/HABridge/hue/HueMulator.java @@ -59,7 +59,7 @@ public class HueMulator { private HarmonyHandler myHarmony; private HttpClient httpClient; private ObjectMapper mapper; - private Integer lastCount; + private Map lastUserIdCount; private BridgeSettings bridgeSettings; @@ -70,7 +70,7 @@ public class HueMulator { repository = aDeviceRepository; myHarmony = theHandler; bridgeSettings = theBridgeSettings; - lastCount = 0; + lastUserIdCount = new HashMap<>(); } // This function sets up the sparkjava rest calls for the hue api @@ -79,17 +79,29 @@ public class HueMulator { // http://ip_address:port/api/{userId}/lights returns json objects of all lights configured get(HUE_CONTEXT + "/:userid/lights", "application/json", (request, response) -> { String userId = request.params(":userid"); + if(bridgeSettings.isTraceupnp()) + log.info("Traceupnp: hue lights list requested: " + userId + " from " + request.ip()); log.debug("hue lights list requested: " + userId + " from " + request.ip()); List deviceList = repository.findAll(); Map deviceResponseMap = new HashMap<>(); + Integer lastCount = lastUserIdCount.get(userId); + if(lastCount == null) + { + lastCount = new Integer(0); + lastUserIdCount.put(userId, lastCount); + } for (int i = 0; i < bridgeSettings.getUpnpResponseDevices(); i++) { - if(lastCount == deviceList.size()) + if(lastCount >= deviceList.size()) + { lastCount = 0; + break; + } DeviceDescriptor device = deviceList.get(lastCount); DeviceResponse deviceResponse = DeviceResponse.createResponse(device.getName(), device.getId()); deviceResponseMap.put(device.getId(), deviceResponse); lastCount++; } + lastUserIdCount.replace(userId, lastCount); response.type("application/json; charset=utf-8"); response.status(HttpStatus.SC_OK); return deviceResponseMap; @@ -110,6 +122,8 @@ public class HueMulator { String newUser = null; String aDeviceType = null; + if(bridgeSettings.isTraceupnp()) + log.info("Traceupnp: hue api user create requested: " + request.body() + " from " + request.ip()); log.debug("hue api user create requested: " + request.body() + " from " + request.ip()); if(request.body() != null && !request.body().isEmpty()) { @@ -122,6 +136,8 @@ public class HueMulator { if(aDeviceType == null) aDeviceType = ""; + if(bridgeSettings.isTraceupnp()) + log.info("Traceupnp: hue api user create requested for device type: " + aDeviceType + " and username: " + newUser); log.debug("hue api user create requested for device type: " + aDeviceType + " and username: " + newUser); response.header("Access-Control-Allow-Origin", request.headers("Origin")); diff --git a/src/main/java/com/bwssystems/vera/VeraInfo.java b/src/main/java/com/bwssystems/vera/VeraInfo.java index 50ee625..e1989d0 100644 --- a/src/main/java/com/bwssystems/vera/VeraInfo.java +++ b/src/main/java/com/bwssystems/vera/VeraInfo.java @@ -30,7 +30,7 @@ public class VeraInfo { public VeraInfo(String addressString, Boolean isValidVera) { super(); - httpClient = HttpClients.createMinimal(); + httpClient = HttpClients.createDefault(); veraAddressString = addressString; validVera = isValidVera; }