[hue] Refactor method to reduce nesting and code duplication(#15971)

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
This commit is contained in:
Jacob Laursen 2023-11-29 12:20:57 +01:00 committed by GitHub
parent e33cccc29c
commit b80273a88a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -635,10 +635,11 @@ public class Clip2ThingHandler extends BaseThingHandler {
* @param resource a Resource object containing the new state. * @param resource a Resource object containing the new state.
*/ */
public void onResource(Resource resource) { public void onResource(Resource resource) {
if (!disposing) { if (disposing) {
return;
}
boolean resourceConsumed = false; boolean resourceConsumed = false;
String incomingResourceId = resource.getId(); if (resourceId.equals(resource.getId())) {
if (resourceId.equals(incomingResourceId)) {
if (resource.hasFullState()) { if (resource.hasFullState()) {
thisResource = resource; thisResource = resource;
if (!updatePropertiesDone) { if (!updatePropertiesDone) {
@ -651,19 +652,12 @@ public class Clip2ThingHandler extends BaseThingHandler {
cancelTask(updateDependenciesTask, false); cancelTask(updateDependenciesTask, false);
updateDependenciesTask = scheduler.submit(() -> updateDependencies()); updateDependenciesTask = scheduler.submit(() -> updateDependencies());
} }
} else if (SUPPORTED_SCENE_TYPES.contains(resource.getType())) {
Resource cachedScene = sceneContributorsCache.get(incomingResourceId);
if (Objects.nonNull(cachedScene)) {
Setters.setResource(resource, cachedScene);
resourceConsumed = updateChannels(resource);
sceneContributorsCache.put(incomingResourceId, resource);
}
} else { } else {
Resource cachedService = serviceContributorsCache.get(incomingResourceId); Resource cachedResource = getResourceFromCache(resource);
if (Objects.nonNull(cachedService)) { if (cachedResource != null) {
Setters.setResource(resource, cachedService); Setters.setResource(resource, cachedResource);
resourceConsumed = updateChannels(resource); resourceConsumed = updateChannels(resource);
serviceContributorsCache.put(incomingResourceId, resource); putResourceToCache(resource);
if (ResourceType.LIGHT == resource.getType() && !updateLightPropertiesDone) { if (ResourceType.LIGHT == resource.getType() && !updateLightPropertiesDone) {
updateLightProperties(resource); updateLightProperties(resource);
} }
@ -673,6 +667,19 @@ public class Clip2ThingHandler extends BaseThingHandler {
logger.debug("{} -> onResource() consumed resource {}", resourceId, resource); logger.debug("{} -> onResource() consumed resource {}", resourceId, resource);
} }
} }
private void putResourceToCache(Resource resource) {
if (SUPPORTED_SCENE_TYPES.contains(resource.getType())) {
sceneContributorsCache.put(resource.getId(), resource);
} else {
serviceContributorsCache.put(resource.getId(), resource);
}
}
private @Nullable Resource getResourceFromCache(Resource resource) {
return SUPPORTED_SCENE_TYPES.contains(resource.getType()) //
? sceneContributorsCache.get(resource.getId())
: serviceContributorsCache.get(resource.getId());
} }
/** /**