diff --git a/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java b/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java
index 6f66a77..b250988 100644
--- a/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java
+++ b/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java
@@ -78,7 +78,6 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.function.Consumer;
@@ -288,73 +287,36 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
private ListenableFuture<List<List<AttributeKvEntry>>> getAttributesKvEntries(GetAttributeRequestMsg request) {
ListenableFuture<List<AttributeKvEntry>> clientAttributesFuture;
ListenableFuture<List<AttributeKvEntry>> sharedAttributesFuture;
- if (!clientIsPresent(request) && !sharedIsPresent(request)) {
- clientAttributesFuture = findAllClientAttributes();
- sharedAttributesFuture = findAllSharedAttributes();
- } else if (clientIsPresent(request) && sharedIsPresent(request)) {
- if (clientIsNotEmpty(request) && sharedIsNotEmpty(request)) {
- clientAttributesFuture = findClientAttributes(request);
- sharedAttributesFuture = findSharedAttributes(request);
- } else {
- clientAttributesFuture = findAllClientAttributes();
- sharedAttributesFuture = findAllSharedAttributes();
- }
- } else if (clientIsPresent(request) && !sharedIsPresent(request)) {
- if (clientIsNotEmpty(request)) {
- clientAttributesFuture = findClientAttributes(request);
- } else {
- clientAttributesFuture = findAllClientAttributes();
- }
- sharedAttributesFuture = Futures.immediateFuture(Collections.emptyList());
- } else {
- if (sharedIsNotEmpty(request)) {
- sharedAttributesFuture = findSharedAttributes(request);
- } else {
- sharedAttributesFuture = findAllSharedAttributes();
- }
+ if (listIsEmpty(request.getClientAttributeNamesList()) && listIsEmpty(request.getSharedAttributeNamesList())) {
+ clientAttributesFuture = findAllAttributesByScope(CLIENT_SCOPE);
+ sharedAttributesFuture = findAllAttributesByScope(SHARED_SCOPE);
+ } else if (!listIsEmpty(request.getClientAttributeNamesList()) && !listIsEmpty(request.getSharedAttributeNamesList())) {
+ clientAttributesFuture = findAttributesByScope(toSet(request.getClientAttributeNamesList()), CLIENT_SCOPE);
+ sharedAttributesFuture = findAttributesByScope(toSet(request.getSharedAttributeNamesList()), SHARED_SCOPE);
+ } else if (listIsEmpty(request.getClientAttributeNamesList()) && !listIsEmpty(request.getSharedAttributeNamesList())) {
clientAttributesFuture = Futures.immediateFuture(Collections.emptyList());
+ sharedAttributesFuture = findAttributesByScope(toSet(request.getSharedAttributeNamesList()), SHARED_SCOPE);
+ } else {
+ sharedAttributesFuture = Futures.immediateFuture(Collections.emptyList());
+ clientAttributesFuture = findAttributesByScope(toSet(request.getClientAttributeNamesList()), CLIENT_SCOPE);
}
return Futures.allAsList(Arrays.asList(clientAttributesFuture, sharedAttributesFuture));
}
- private ListenableFuture<List<AttributeKvEntry>> findAllSharedAttributes() {
- return systemContext.getAttributesService().findAll(tenantId, deviceId, SHARED_SCOPE);
- }
-
- private ListenableFuture<List<AttributeKvEntry>> findAllClientAttributes() {
- return systemContext.getAttributesService().findAll(tenantId, deviceId, CLIENT_SCOPE);
- }
-
- private ListenableFuture<List<AttributeKvEntry>> findSharedAttributes(GetAttributeRequestMsg request) {
- return systemContext.getAttributesService().find(tenantId, deviceId, SHARED_SCOPE, getSharedAttributesSet(request));
- }
-
- private ListenableFuture<List<AttributeKvEntry>> findClientAttributes(GetAttributeRequestMsg request) {
- return systemContext.getAttributesService().find(tenantId, deviceId, CLIENT_SCOPE, getClientAttributesSet(request));
- }
-
- private boolean clientIsNotEmpty(GetAttributeRequestMsg request) {
- return !getClientAttributesSet(request).isEmpty();
- }
-
- private boolean sharedIsNotEmpty(GetAttributeRequestMsg request) {
- return !getSharedAttributesSet(request).isEmpty();
+ private ListenableFuture<List<AttributeKvEntry>> findAllAttributesByScope(String scope) {
+ return systemContext.getAttributesService().findAll(tenantId, deviceId, scope);
}
- private Set<String> getSharedAttributesSet(GetAttributeRequestMsg request) {
- return toOptionalSet(request.getSharedAttributeNamesList()).get();
+ private ListenableFuture<List<AttributeKvEntry>> findAttributesByScope(Set<String> attributesSet, String scope) {
+ return systemContext.getAttributesService().find(tenantId, deviceId, scope, attributesSet);
}
- private Set<String> getClientAttributesSet(GetAttributeRequestMsg request) {
- return toOptionalSet(request.getClientAttributeNamesList()).get();
+ private Set<String> toSet(List<String> strings) {
+ return new HashSet<>(strings);
}
- private boolean sharedIsPresent(GetAttributeRequestMsg request) {
- return toOptionalSet(request.getSharedAttributeNamesList()).isPresent();
- }
-
- private boolean clientIsPresent(GetAttributeRequestMsg request) {
- return toOptionalSet(request.getClientAttributeNamesList()).isPresent();
+ private boolean listIsEmpty(List<String> strings) {
+ return strings == null || strings.isEmpty();
}
private void handlePostAttributesRequest(ActorContext context, SessionInfoProto sessionInfo, PostAttributeMsg postAttributes) {
@@ -603,14 +565,6 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
return json;
}
- private Optional<Set<String>> toOptionalSet(List<String> strings) {
- if (strings == null || strings.isEmpty()) {
- return Optional.empty();
- } else {
- return Optional.of(new HashSet<>(strings));
- }
- }
-
private void sendToTransport(GetAttributeResponseMsg responseMsg, SessionInfoProto sessionInfo) {
DeviceActorToTransportMsg msg = DeviceActorToTransportMsg.newBuilder()
.setSessionIdMSB(sessionInfo.getSessionIdMSB())