Browse Source

Merge pull request #5843 from smatvienko-tb/device-actor-performance

[3.3.3] Device actor session inactivity performance + heap workout
pull/5908/head
Andrew Shvayka 5 years ago
committed by GitHub
parent
commit
c15b4ceec3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      application/src/main/java/org/thingsboard/server/actors/app/AppActor.java
  2. 42
      application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java
  3. 4
      application/src/main/java/org/thingsboard/server/actors/shared/AbstractContextAwareMsgProcessor.java
  4. 2
      application/src/main/java/org/thingsboard/server/controller/BaseController.java
  5. 2
      application/src/main/java/org/thingsboard/server/controller/DashboardController.java
  6. 2
      application/src/main/java/org/thingsboard/server/controller/DeviceController.java
  7. 6
      application/src/main/java/org/thingsboard/server/controller/EventController.java
  8. 6
      application/src/main/java/org/thingsboard/server/controller/TenantController.java
  9. 2
      application/src/main/java/org/thingsboard/server/controller/UserController.java
  10. 2
      application/src/main/java/org/thingsboard/server/controller/WidgetTypeController.java
  11. 2
      application/src/main/java/org/thingsboard/server/service/apiusage/DefaultTbApiUsageStateService.java
  12. 2
      application/src/main/java/org/thingsboard/server/service/edge/DefaultEdgeNotificationService.java
  13. 4
      application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/TelemetryEdgeProcessor.java
  14. 2
      application/src/main/java/org/thingsboard/server/service/install/DatabaseHelper.java
  15. 4
      application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java
  16. 2
      application/src/main/java/org/thingsboard/server/service/mail/DefaultMailService.java
  17. 2
      application/src/main/java/org/thingsboard/server/service/ota/DefaultOtaPackageStateService.java
  18. 2
      application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java
  19. 12
      application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java
  20. 6
      application/src/main/java/org/thingsboard/server/service/queue/DefaultTbRuleEngineConsumerService.java
  21. 2
      application/src/main/java/org/thingsboard/server/service/queue/processing/SequentialByTenantIdTbRuleEngineSubmitStrategy.java
  22. 2
      application/src/main/java/org/thingsboard/server/service/security/AccessValidator.java
  23. 4
      application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java
  24. 2
      application/src/main/java/org/thingsboard/server/service/security/model/token/JwtTokenFactory.java
  25. 2
      application/src/main/java/org/thingsboard/server/service/sms/DefaultSmsService.java
  26. 2
      application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java
  27. 2
      application/src/main/java/org/thingsboard/server/service/stats/DefaultRuleEngineStatisticsService.java
  28. 6
      application/src/main/java/org/thingsboard/server/service/subscription/TbSubscriptionUtils.java
  29. 8
      application/src/main/java/org/thingsboard/server/service/transport/DefaultTransportApiService.java
  30. 2
      application/src/main/java/org/thingsboard/server/service/transport/msg/TransportToDeviceActorMsgWrapper.java
  31. 2
      application/src/test/java/org/thingsboard/server/service/resource/sql/BaseTbResourceServiceTest.java
  32. 2
      common/data/src/main/java/org/thingsboard/server/common/data/id/EntityIdFactory.java
  33. 18
      common/data/src/main/java/org/thingsboard/server/common/data/id/TenantId.java
  34. 22
      common/message/src/main/java/org/thingsboard/server/common/msg/TbMsgMetaData.java
  35. 2
      common/queue/src/main/java/org/thingsboard/server/queue/common/DefaultTbQueueRequestTemplate.java
  36. 2
      common/queue/src/main/java/org/thingsboard/server/queue/discovery/DefaultTbServiceInfoProvider.java
  37. 4
      common/queue/src/main/java/org/thingsboard/server/queue/discovery/HashPartitionService.java
  38. 2
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/client/LwM2mClient.java
  39. 14
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/session/DefaultLwM2MSessionManager.java
  40. 4
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/uplink/DefaultLwM2mUplinkMsgHandler.java
  41. 7
      common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java
  42. 15
      common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/GatewaySessionHandler.java
  43. 36
      common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java
  44. 2
      dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java
  45. 2
      dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java
  46. 2
      dao/src/main/java/org/thingsboard/server/dao/entity/BaseEntityService.java
  47. 2
      dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java
  48. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractAlarmEntity.java
  49. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractAssetEntity.java
  50. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractDeviceEntity.java
  51. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractEdgeEntity.java
  52. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractEntityViewEntity.java
  53. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractTenantEntity.java
  54. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractWidgetTypeEntity.java
  55. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/ApiUsageStateEntity.java
  56. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AuditLogEntity.java
  57. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/CustomerEntity.java
  58. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java
  59. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardInfoEntity.java
  60. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceProfileEntity.java
  61. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/EdgeEventEntity.java
  62. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityAlarmEntity.java
  63. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/EventEntity.java
  64. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ParamsEntity.java
  65. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/OtaPackageEntity.java
  66. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/OtaPackageInfoEntity.java
  67. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/RpcEntity.java
  68. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/RuleChainEntity.java
  69. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TbResourceEntity.java
  70. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TbResourceInfoEntity.java
  71. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/UserEntity.java
  72. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetsBundleEntity.java
  73. 2
      dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java
  74. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java
  75. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java
  76. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaEdgeDao.java
  77. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java
  78. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/query/AlarmDataAdapter.java
  79. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDao.java
  80. 8
      dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java
  81. 2
      dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java
  82. 2
      dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java
  83. 2
      dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java
  84. 2
      dao/src/test/java/org/thingsboard/server/dao/nosql/CassandraPartitionsCacheTest.java
  85. 4
      dao/src/test/java/org/thingsboard/server/dao/service/AbstractServiceTest.java
  86. 2
      dao/src/test/java/org/thingsboard/server/dao/service/BaseAssetServiceTest.java
  87. 2
      dao/src/test/java/org/thingsboard/server/dao/service/BaseCustomerServiceTest.java
  88. 2
      dao/src/test/java/org/thingsboard/server/dao/service/BaseDashboardServiceTest.java
  89. 2
      dao/src/test/java/org/thingsboard/server/dao/service/BaseDeviceServiceTest.java
  90. 6
      dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeEventServiceTest.java
  91. 2
      dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeServiceTest.java
  92. 2
      dao/src/test/java/org/thingsboard/server/dao/service/BaseOtaPackageServiceTest.java
  93. 2
      dao/src/test/java/org/thingsboard/server/dao/service/BaseRuleChainServiceTest.java
  94. 4
      dao/src/test/java/org/thingsboard/server/dao/service/BaseWidgetTypeServiceTest.java
  95. 12
      dao/src/test/java/org/thingsboard/server/dao/service/BaseWidgetsBundleServiceTest.java
  96. 4
      dao/src/test/java/org/thingsboard/server/dao/service/event/BaseEventServiceTest.java
  97. 8
      dao/src/test/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDaoTest.java
  98. 6
      dao/src/test/java/org/thingsboard/server/dao/sql/asset/JpaAssetDaoTest.java
  99. 4
      dao/src/test/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDaoTest.java
  100. 2
      dao/src/test/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDaoTest.java

4
application/src/main/java/org/thingsboard/server/actors/app/AppActor.java

@ -175,7 +175,7 @@ public class AppActor extends ContextAwareActor {
}
} else {
if (EntityType.TENANT.equals(msg.getEntityId().getEntityType())) {
TenantId tenantId = new TenantId(msg.getEntityId().getId());
TenantId tenantId = TenantId.fromUUID(msg.getEntityId().getId());
if (msg.getEvent() == ComponentLifecycleEvent.DELETED) {
log.info("[{}] Handling tenant deleted notification: {}", msg.getTenantId(), msg);
deletedTenants.add(tenantId);
@ -237,7 +237,7 @@ public class AppActor extends ContextAwareActor {
@Override
public TbActorId createActorId() {
return new TbEntityActorId(new TenantId(EntityId.NULL_UUID));
return new TbEntityActorId(TenantId.SYS_TENANT_ID);
}
@Override

42
application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java

@ -97,6 +97,7 @@ import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.ConcurrentModificationException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
@ -116,6 +117,7 @@ import java.util.stream.Collectors;
@Slf4j
class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
static final String SESSION_TIMEOUT_MESSAGE = "session timeout!";
final TenantId tenantId;
final DeviceId deviceId;
final LinkedHashMapRemoveEldest<UUID, SessionInfoMetaData> sessions;
@ -960,19 +962,35 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
}
void checkSessionsTimeout() {
log.debug("[{}] checkSessionsTimeout started. Size before check {}", deviceId, sessions.size());
long expTime = System.currentTimeMillis() - systemContext.getSessionInactivityTimeout();
Map<UUID, SessionInfoMetaData> sessionsToRemove = sessions.entrySet().stream().filter(kv -> kv.getValue().getLastActivityTime() < expTime).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
sessionsToRemove.forEach((sessionId, sessionMD) -> {
sessions.remove(sessionId);
rpcSubscriptions.remove(sessionId);
attributeSubscriptions.remove(sessionId);
notifyTransportAboutClosedSession(sessionId, sessionMD, "session timeout!");
});
if (!sessionsToRemove.isEmpty()) {
dumpSessions();
final long expTime = System.currentTimeMillis() - systemContext.getSessionInactivityTimeout();
List<UUID> expiredIds = null;
for (Map.Entry<UUID, SessionInfoMetaData> kv : sessions.entrySet()) { //entry set are cached for stable sessions
if (kv.getValue().getLastActivityTime() < expTime) {
final UUID id = kv.getKey();
if (expiredIds == null) {
expiredIds = new ArrayList<>(1); //most of the expired sessions is a single event
}
expiredIds.add(id);
}
}
log.debug("[{}] checkSessionsTimeout finished. Size after check {}", deviceId, sessions.size());
if (expiredIds != null) {
int removed = 0;
for (UUID id : expiredIds) {
final SessionInfoMetaData session = sessions.remove(id);
rpcSubscriptions.remove(id);
attributeSubscriptions.remove(id);
if (session != null) {
removed++;
notifyTransportAboutClosedSession(id, session, SESSION_TIMEOUT_MESSAGE);
}
}
if (removed != 0) {
dumpSessions();
}
}
}
}

4
application/src/main/java/org/thingsboard/server/actors/shared/AbstractContextAwareMsgProcessor.java

@ -22,13 +22,13 @@ import org.thingsboard.server.actors.TbActorCtx;
import org.thingsboard.server.common.msg.TbActorMsg;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@Slf4j
public abstract class AbstractContextAwareMsgProcessor {
protected final static ObjectMapper mapper = new ObjectMapper();
protected final ActorSystemContext systemContext;
protected final ObjectMapper mapper = new ObjectMapper();
protected AbstractContextAwareMsgProcessor(ActorSystemContext systemContext) {
super();

2
application/src/main/java/org/thingsboard/server/controller/BaseController.java

@ -482,7 +482,7 @@ public abstract class BaseController {
checkCustomerId(new CustomerId(entityId.getId()), operation);
return;
case TENANT:
checkTenantId(new TenantId(entityId.getId()), operation);
checkTenantId(TenantId.fromUUID(entityId.getId()), operation);
return;
case TENANT_PROFILE:
checkTenantProfileId(new TenantProfileId(entityId.getId()), operation);

2
application/src/main/java/org/thingsboard/server/controller/DashboardController.java

@ -585,7 +585,7 @@ public class DashboardController extends BaseController {
@ApiParam(value = SORT_ORDER_DESCRIPTION, allowableValues = SORT_ORDER_ALLOWABLE_VALUES)
@RequestParam(required = false) String sortOrder) throws ThingsboardException {
try {
TenantId tenantId = new TenantId(toUUID(strTenantId));
TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
checkTenantId(tenantId, Operation.READ);
PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
return checkNotNull(dashboardService.findDashboardsByTenantId(tenantId, pageLink));

2
application/src/main/java/org/thingsboard/server/controller/DeviceController.java

@ -807,7 +807,7 @@ public class DeviceController extends BaseController {
DeviceId deviceId = new DeviceId(toUUID(strDeviceId));
Device device = checkDeviceId(deviceId, Operation.ASSIGN_TO_TENANT);
TenantId newTenantId = new TenantId(toUUID(strTenantId));
TenantId newTenantId = TenantId.fromUUID(toUUID(strTenantId));
Tenant newTenant = tenantService.findTenantById(newTenantId);
if (newTenant == null) {
throw new ThingsboardException("Could not find the specified Tenant!", ThingsboardErrorCode.BAD_REQUEST_PARAMS);

6
application/src/main/java/org/thingsboard/server/controller/EventController.java

@ -136,7 +136,7 @@ public class EventController extends BaseController {
checkParameter("EntityId", strEntityId);
checkParameter("EntityType", strEntityType);
try {
TenantId tenantId = new TenantId(toUUID(strTenantId));
TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
EntityId entityId = EntityIdFactory.getByTypeAndId(strEntityType, strEntityId);
checkEntityId(entityId, Operation.READ);
@ -177,7 +177,7 @@ public class EventController extends BaseController {
checkParameter("EntityId", strEntityId);
checkParameter("EntityType", strEntityType);
try {
TenantId tenantId = new TenantId(toUUID(strTenantId));
TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
EntityId entityId = EntityIdFactory.getByTypeAndId(strEntityType, strEntityId);
checkEntityId(entityId, Operation.READ);
@ -224,7 +224,7 @@ public class EventController extends BaseController {
checkParameter("EntityId", strEntityId);
checkParameter("EntityType", strEntityType);
try {
TenantId tenantId = new TenantId(toUUID(strTenantId));
TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
EntityId entityId = EntityIdFactory.getByTypeAndId(strEntityType, strEntityId);
checkEntityId(entityId, Operation.READ);

6
application/src/main/java/org/thingsboard/server/controller/TenantController.java

@ -82,7 +82,7 @@ public class TenantController extends BaseController {
@PathVariable(TENANT_ID) String strTenantId) throws ThingsboardException {
checkParameter(TENANT_ID, strTenantId);
try {
TenantId tenantId = new TenantId(toUUID(strTenantId));
TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
Tenant tenant = checkTenantId(tenantId, Operation.READ);
if (!tenant.getAdditionalInfo().isNull()) {
processDashboardIdFromAdditionalInfo((ObjectNode) tenant.getAdditionalInfo(), HOME_DASHBOARD);
@ -104,7 +104,7 @@ public class TenantController extends BaseController {
@PathVariable(TENANT_ID) String strTenantId) throws ThingsboardException {
checkParameter(TENANT_ID, strTenantId);
try {
TenantId tenantId = new TenantId(toUUID(strTenantId));
TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
return checkTenantInfoId(tenantId, Operation.READ);
} catch (Exception e) {
throw handleException(e);
@ -154,7 +154,7 @@ public class TenantController extends BaseController {
@PathVariable(TENANT_ID) String strTenantId) throws ThingsboardException {
checkParameter(TENANT_ID, strTenantId);
try {
TenantId tenantId = new TenantId(toUUID(strTenantId));
TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
Tenant tenant = checkTenantId(tenantId, Operation.DELETE);
tenantService.deleteTenant(tenantId);
tenantProfileCache.evict(tenantId);

2
application/src/main/java/org/thingsboard/server/controller/UserController.java

@ -375,7 +375,7 @@ public class UserController extends BaseController {
@RequestParam(required = false) String sortOrder) throws ThingsboardException {
checkParameter("tenantId", strTenantId);
try {
TenantId tenantId = new TenantId(toUUID(strTenantId));
TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
return checkNotNull(userService.findTenantAdmins(tenantId, pageLink));
} catch (Exception e) {

2
application/src/main/java/org/thingsboard/server/controller/WidgetTypeController.java

@ -216,7 +216,7 @@ public class WidgetTypeController extends BaseController {
try {
TenantId tenantId;
if (isSystem) {
tenantId = new TenantId(ModelConstants.NULL_UUID);
tenantId = TenantId.fromUUID(ModelConstants.NULL_UUID);
} else {
tenantId = getCurrentUser().getTenantId();
}

2
application/src/main/java/org/thingsboard/server/service/apiusage/DefaultTbApiUsageStateService.java

@ -164,7 +164,7 @@ public class DefaultTbApiUsageStateService extends TbApplicationEventListener<Pa
public void process(TbProtoQueueMsg<ToUsageStatsServiceMsg> msg, TbCallback callback) {
ToUsageStatsServiceMsg statsMsg = msg.getValue();
TenantId tenantId = new TenantId(new UUID(statsMsg.getTenantIdMSB(), statsMsg.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(statsMsg.getTenantIdMSB(), statsMsg.getTenantIdLSB()));
EntityId entityId;
if (statsMsg.getCustomerIdMSB() != 0 && statsMsg.getCustomerIdLSB() != 0) {
entityId = new CustomerId(new UUID(statsMsg.getCustomerIdMSB(), statsMsg.getCustomerIdLSB()));

2
application/src/main/java/org/thingsboard/server/service/edge/DefaultEdgeNotificationService.java

@ -124,7 +124,7 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService {
public void pushNotificationToEdge(TransportProtos.EdgeNotificationMsgProto edgeNotificationMsg, TbCallback callback) {
log.trace("Pushing notification to edge {}", edgeNotificationMsg);
try {
TenantId tenantId = new TenantId(new UUID(edgeNotificationMsg.getTenantIdMSB(), edgeNotificationMsg.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(edgeNotificationMsg.getTenantIdMSB(), edgeNotificationMsg.getTenantIdLSB()));
EdgeEventType type = EdgeEventType.valueOf(edgeNotificationMsg.getType());
switch (type) {
case EDGE:

4
application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/TelemetryEdgeProcessor.java

@ -276,7 +276,7 @@ public class TelemetryEdgeProcessor extends BaseEdgeProcessor {
case DASHBOARD:
return new DashboardId(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
case TENANT:
return new TenantId(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
return TenantId.fromUUID(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
case CUSTOMER:
return new CustomerId(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
case USER:
@ -303,7 +303,7 @@ public class TelemetryEdgeProcessor extends BaseEdgeProcessor {
entityId = new DashboardId(edgeEvent.getEntityId());
break;
case TENANT:
entityId = new TenantId(edgeEvent.getEntityId());
entityId = TenantId.fromUUID(edgeEvent.getEntityId());
break;
case CUSTOMER:
entityId = new CustomerId(edgeEvent.getEntityId());

2
application/src/main/java/org/thingsboard/server/service/install/DatabaseHelper.java

@ -99,7 +99,7 @@ public class DatabaseHelper {
}
}
for (CustomerId customerId : customerIds) {
dashboardService.assignDashboardToCustomer(new TenantId(EntityId.NULL_UUID), dashboardId, customerId);
dashboardService.assignDashboardToCustomer(TenantId.SYS_TENANT_ID, dashboardId, customerId);
}
});
}

4
application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java

@ -169,7 +169,7 @@ public class InstallScripts {
ruleChain = ruleChainService.saveRuleChain(ruleChain);
ruleChainMetaData.setRuleChainId(ruleChain.getId());
ruleChainService.saveRuleChainMetaData(new TenantId(EntityId.NULL_UUID), ruleChainMetaData);
ruleChainService.saveRuleChainMetaData(TenantId.SYS_TENANT_ID, ruleChainMetaData);
return ruleChain;
}
@ -217,7 +217,7 @@ public class InstallScripts {
dashboard.setTenantId(tenantId);
Dashboard savedDashboard = dashboardService.saveDashboard(dashboard);
if (customerId != null && !customerId.isNullUid()) {
dashboardService.assignDashboardToCustomer(new TenantId(EntityId.NULL_UUID), savedDashboard.getId(), customerId);
dashboardService.assignDashboardToCustomer(TenantId.SYS_TENANT_ID, savedDashboard.getId(), customerId);
}
} catch (Exception e) {
log.error("Unable to load dashboard from json: [{}]", path.toString());

2
application/src/main/java/org/thingsboard/server/service/mail/DefaultMailService.java

@ -95,7 +95,7 @@ public class DefaultMailService implements MailService {
@Override
public void updateMailConfiguration() {
AdminSettings settings = adminSettingsService.findAdminSettingsByKey(new TenantId(EntityId.NULL_UUID), "mail");
AdminSettings settings = adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, "mail");
if (settings != null) {
JsonNode jsonConfig = settings.getJsonValue();
mailSender = createMailSender(jsonConfig);

2
application/src/main/java/org/thingsboard/server/service/ota/DefaultOtaPackageStateService.java

@ -206,7 +206,7 @@ public class DefaultOtaPackageStateService implements OtaPackageStateService {
boolean isSuccess = false;
OtaPackageId targetOtaPackageId = new OtaPackageId(new UUID(msg.getOtaPackageIdMSB(), msg.getOtaPackageIdLSB()));
DeviceId deviceId = new DeviceId(new UUID(msg.getDeviceIdMSB(), msg.getDeviceIdLSB()));
TenantId tenantId = new TenantId(new UUID(msg.getTenantIdMSB(), msg.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(msg.getTenantIdMSB(), msg.getTenantIdLSB()));
OtaPackageType firmwareType = OtaPackageType.valueOf(msg.getType());
long ts = msg.getTs();

2
application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java

@ -140,7 +140,7 @@ public class DefaultTbClusterService implements TbClusterService {
public void pushMsgToRuleEngine(TenantId tenantId, EntityId entityId, TbMsg tbMsg, TbQueueCallback callback) {
if (tenantId.isNullUid()) {
if (entityId.getEntityType().equals(EntityType.TENANT)) {
tenantId = new TenantId(entityId.getId());
tenantId = TenantId.fromUUID(entityId.getId());
} else {
log.warn("[{}][{}] Received invalid message: {}", tenantId, entityId, tbMsg);
return;

12
application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java

@ -453,37 +453,37 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
} else if (msg.hasTsUpdate()) {
TbTimeSeriesUpdateProto proto = msg.getTsUpdate();
subscriptionManagerService.onTimeSeriesUpdate(
new TenantId(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TbSubscriptionUtils.toEntityId(proto.getEntityType(), proto.getEntityIdMSB(), proto.getEntityIdLSB()),
TbSubscriptionUtils.toTsKvEntityList(proto.getDataList()), callback);
} else if (msg.hasAttrUpdate()) {
TbAttributeUpdateProto proto = msg.getAttrUpdate();
subscriptionManagerService.onAttributesUpdate(
new TenantId(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TbSubscriptionUtils.toEntityId(proto.getEntityType(), proto.getEntityIdMSB(), proto.getEntityIdLSB()),
proto.getScope(), TbSubscriptionUtils.toAttributeKvList(proto.getDataList()), callback);
} else if (msg.hasAttrDelete()) {
TbAttributeDeleteProto proto = msg.getAttrDelete();
subscriptionManagerService.onAttributesDelete(
new TenantId(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TbSubscriptionUtils.toEntityId(proto.getEntityType(), proto.getEntityIdMSB(), proto.getEntityIdLSB()),
proto.getScope(), proto.getKeysList(), callback);
} else if (msg.hasTsDelete()) {
TbTimeSeriesDeleteProto proto = msg.getTsDelete();
subscriptionManagerService.onTimeSeriesDelete(
new TenantId(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TbSubscriptionUtils.toEntityId(proto.getEntityType(), proto.getEntityIdMSB(), proto.getEntityIdLSB()),
proto.getKeysList(), callback);
} else if (msg.hasAlarmUpdate()) {
TbAlarmUpdateProto proto = msg.getAlarmUpdate();
subscriptionManagerService.onAlarmUpdate(
new TenantId(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TbSubscriptionUtils.toEntityId(proto.getEntityType(), proto.getEntityIdMSB(), proto.getEntityIdLSB()),
JacksonUtil.fromString(proto.getAlarm(), Alarm.class), callback);
} else if (msg.hasAlarmDelete()) {
TbAlarmDeleteProto proto = msg.getAlarmDelete();
subscriptionManagerService.onAlarmDeleted(
new TenantId(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
TbSubscriptionUtils.toEntityId(proto.getEntityType(), proto.getEntityIdMSB(), proto.getEntityIdLSB()),
JacksonUtil.fromString(proto.getAlarm(), Alarm.class), callback);
} else {

6
application/src/main/java/org/thingsboard/server/service/queue/DefaultTbRuleEngineConsumerService.java

@ -321,7 +321,7 @@ public class DefaultTbRuleEngineConsumerService extends AbstractConsumerService<
void submitMessage(TbRuleEngineQueueConfiguration configuration, TbRuleEngineConsumerStats stats, TbMsgPackProcessingContext ctx, UUID id, TbProtoQueueMsg<ToRuleEngineMsg> msg) {
log.trace("[{}] Creating callback for topic {} message: {}", id, configuration.getName(), msg.getValue());
ToRuleEngineMsg toRuleEngineMsg = msg.getValue();
TenantId tenantId = new TenantId(new UUID(toRuleEngineMsg.getTenantIdMSB(), toRuleEngineMsg.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(toRuleEngineMsg.getTenantIdMSB(), toRuleEngineMsg.getTenantIdLSB()));
TbMsgCallback callback = prometheusStatsEnabled ?
new TbMsgPackCallback(id, tenantId, ctx, stats.getTimer(tenantId, SUCCESSFUL_STATUS), stats.getTimer(tenantId, FAILED_STATUS)) :
new TbMsgPackCallback(id, tenantId, ctx);
@ -344,9 +344,9 @@ public class DefaultTbRuleEngineConsumerService extends AbstractConsumerService<
TbMsg tmpMsg = TbMsg.fromBytes(configuration.getName(), tmp.getTbMsg().toByteArray(), TbMsgCallback.EMPTY);
RuleNodeInfo ruleNodeInfo = ctx.getLastVisitedRuleNode(pending.getKey());
if (printAll) {
log.trace("[{}] {} to process message: {}, Last Rule Node: {}", new TenantId(new UUID(tmp.getTenantIdMSB(), tmp.getTenantIdLSB())), prefix, tmpMsg, ruleNodeInfo);
log.trace("[{}] {} to process message: {}, Last Rule Node: {}", TenantId.fromUUID(new UUID(tmp.getTenantIdMSB(), tmp.getTenantIdLSB())), prefix, tmpMsg, ruleNodeInfo);
} else {
log.info("[{}] {} to process message: {}, Last Rule Node: {}", new TenantId(new UUID(tmp.getTenantIdMSB(), tmp.getTenantIdLSB())), prefix, tmpMsg, ruleNodeInfo);
log.info("[{}] {} to process message: {}, Last Rule Node: {}", TenantId.fromUUID(new UUID(tmp.getTenantIdMSB(), tmp.getTenantIdLSB())), prefix, tmpMsg, ruleNodeInfo);
break;
}
}

2
application/src/main/java/org/thingsboard/server/service/queue/processing/SequentialByTenantIdTbRuleEngineSubmitStrategy.java

@ -29,6 +29,6 @@ public class SequentialByTenantIdTbRuleEngineSubmitStrategy extends SequentialBy
@Override
protected EntityId getEntityId(TransportProtos.ToRuleEngineMsg msg) {
return new TenantId(new UUID(msg.getTenantIdMSB(), msg.getTenantIdLSB()));
return TenantId.fromUUID(new UUID(msg.getTenantIdMSB(), msg.getTenantIdLSB()));
}
}

2
application/src/main/java/org/thingsboard/server/service/security/AccessValidator.java

@ -450,7 +450,7 @@ public class AccessValidator {
} else if (currentUser.isSystemAdmin()) {
callback.onSuccess(ValidationResult.ok(null));
} else {
ListenableFuture<Tenant> tenantFuture = tenantService.findTenantByIdAsync(currentUser.getTenantId(), new TenantId(entityId.getId()));
ListenableFuture<Tenant> tenantFuture = tenantService.findTenantByIdAsync(currentUser.getTenantId(), TenantId.fromUUID(entityId.getId()));
Futures.addCallback(tenantFuture, getCallback(callback, tenant -> {
if (tenant == null) {
return ValidationResult.entityNotFound("Tenant with requested id wasn't found!");

4
application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java

@ -75,7 +75,7 @@ public class RefreshTokenAuthenticationProvider implements AuthenticationProvide
}
private SecurityUser authenticateByUserId(UserId userId) {
TenantId systemId = new TenantId(EntityId.NULL_UUID);
TenantId systemId = TenantId.SYS_TENANT_ID;
User user = userService.findUserById(systemId, userId);
if (user == null) {
throw new UsernameNotFoundException("User not found by refresh token");
@ -99,7 +99,7 @@ public class RefreshTokenAuthenticationProvider implements AuthenticationProvide
}
private SecurityUser authenticateByPublicId(String publicId) {
TenantId systemId = new TenantId(EntityId.NULL_UUID);
TenantId systemId = TenantId.SYS_TENANT_ID;
CustomerId customerId;
try {
customerId = new CustomerId(UUID.fromString(publicId));

2
application/src/main/java/org/thingsboard/server/service/security/model/token/JwtTokenFactory.java

@ -126,7 +126,7 @@ public class JwtTokenFactory {
securityUser.setUserPrincipal(principal);
String tenantId = claims.get(TENANT_ID, String.class);
if (tenantId != null) {
securityUser.setTenantId(new TenantId(UUID.fromString(tenantId)));
securityUser.setTenantId(TenantId.fromUUID(UUID.fromString(tenantId)));
}
String customerId = claims.get(CUSTOMER_ID, String.class);
if (customerId != null) {

2
application/src/main/java/org/thingsboard/server/service/sms/DefaultSmsService.java

@ -71,7 +71,7 @@ public class DefaultSmsService implements SmsService {
@Override
public void updateSmsConfiguration() {
AdminSettings settings = adminSettingsService.findAdminSettingsByKey(new TenantId(EntityId.NULL_UUID), "sms");
AdminSettings settings = adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, "sms");
if (settings != null) {
try {
JsonNode jsonConfig = settings.getJsonValue();

2
application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java

@ -237,7 +237,7 @@ public class DefaultDeviceStateService extends TbApplicationEventListener<Partit
@Override
public void onQueueMsg(TransportProtos.DeviceStateServiceMsgProto proto, TbCallback callback) {
try {
TenantId tenantId = new TenantId(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB()));
DeviceId deviceId = new DeviceId(new UUID(proto.getDeviceIdMSB(), proto.getDeviceIdLSB()));
if (proto.getDeleted()) {
onDeviceDeleted(tenantId, deviceId);

2
application/src/main/java/org/thingsboard/server/service/stats/DefaultRuleEngineStatisticsService.java

@ -77,7 +77,7 @@ public class DefaultRuleEngineStatisticsService implements RuleEngineStatisticsS
public void reportQueueStats(long ts, TbRuleEngineConsumerStats ruleEngineStats) {
String queueName = ruleEngineStats.getQueueName();
ruleEngineStats.getTenantStats().forEach((id, stats) -> {
TenantId tenantId = new TenantId(id);
TenantId tenantId = TenantId.fromUUID(id);
try {
AssetId serviceAssetId = getServiceAssetId(tenantId, queueName);
if (stats.getTotalMsgCounter().get() > 0) {

6
application/src/main/java/org/thingsboard/server/service/subscription/TbSubscriptionUtils.java

@ -125,7 +125,7 @@ public class TbSubscriptionUtils {
.sessionId(subProto.getSessionId())
.subscriptionId(subProto.getSubscriptionId())
.entityId(EntityIdFactory.getByTypeAndUuid(subProto.getEntityType(), new UUID(subProto.getEntityIdMSB(), subProto.getEntityIdLSB())))
.tenantId(new TenantId(new UUID(subProto.getTenantIdMSB(), subProto.getTenantIdLSB())));
.tenantId(TenantId.fromUUID(new UUID(subProto.getTenantIdMSB(), subProto.getTenantIdLSB())));
builder.scope(TbAttributeSubscriptionScope.valueOf(attributeSub.getScope()));
builder.allKeys(attributeSub.getAllKeys());
@ -142,7 +142,7 @@ public class TbSubscriptionUtils {
.sessionId(subProto.getSessionId())
.subscriptionId(subProto.getSubscriptionId())
.entityId(EntityIdFactory.getByTypeAndUuid(subProto.getEntityType(), new UUID(subProto.getEntityIdMSB(), subProto.getEntityIdLSB())))
.tenantId(new TenantId(new UUID(subProto.getTenantIdMSB(), subProto.getTenantIdLSB())));
.tenantId(TenantId.fromUUID(new UUID(subProto.getTenantIdMSB(), subProto.getTenantIdLSB())));
builder.allKeys(telemetrySub.getAllKeys());
Map<String, Long> keyStates = new HashMap<>();
@ -161,7 +161,7 @@ public class TbSubscriptionUtils {
.sessionId(subProto.getSessionId())
.subscriptionId(subProto.getSubscriptionId())
.entityId(EntityIdFactory.getByTypeAndUuid(subProto.getEntityType(), new UUID(subProto.getEntityIdMSB(), subProto.getEntityIdLSB())))
.tenantId(new TenantId(new UUID(subProto.getTenantIdMSB(), subProto.getTenantIdLSB())));
.tenantId(TenantId.fromUUID(new UUID(subProto.getTenantIdMSB(), subProto.getTenantIdLSB())));
builder.ts(alarmSub.getTs());
return builder.build();
}

8
application/src/main/java/org/thingsboard/server/service/transport/DefaultTransportApiService.java

@ -380,7 +380,7 @@ public class DefaultTransportApiService implements TransportApiService {
DeviceProfile deviceProfile = deviceProfileCache.find(deviceProfileId);
builder.setData(ByteString.copyFrom(dataDecodingEncodingService.encode(deviceProfile)));
} else if (entityType.equals(EntityType.TENANT)) {
TenantId tenantId = new TenantId(entityUuid);
TenantId tenantId = TenantId.fromUUID(entityUuid);
TenantProfile tenantProfile = tenantProfileCache.get(tenantId);
ApiUsageState state = apiUsageStateService.getApiUsageState(tenantId);
builder.setData(ByteString.copyFrom(dataDecodingEncodingService.encode(tenantProfile)));
@ -425,7 +425,7 @@ public class DefaultTransportApiService implements TransportApiService {
private ListenableFuture<TransportApiResponseMsg> handle(GetResourceRequestMsg requestMsg) {
TenantId tenantId = new TenantId(new UUID(requestMsg.getTenantIdMSB(), requestMsg.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(requestMsg.getTenantIdMSB(), requestMsg.getTenantIdLSB()));
ResourceType resourceType = ResourceType.valueOf(requestMsg.getResourceType());
String resourceKey = requestMsg.getResourceKey();
TransportProtos.GetResourceResponseMsg.Builder builder = TransportProtos.GetResourceResponseMsg.newBuilder();
@ -542,7 +542,7 @@ public class DefaultTransportApiService implements TransportApiService {
}
private ListenableFuture<TransportApiResponseMsg> handle(TransportProtos.GetOtaPackageRequestMsg requestMsg) {
TenantId tenantId = new TenantId(new UUID(requestMsg.getTenantIdMSB(), requestMsg.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(requestMsg.getTenantIdMSB(), requestMsg.getTenantIdLSB()));
DeviceId deviceId = new DeviceId(new UUID(requestMsg.getDeviceIdMSB(), requestMsg.getDeviceIdLSB()));
OtaPackageType otaPackageType = OtaPackageType.valueOf(requestMsg.getType());
Device device = deviceService.findDeviceById(tenantId, deviceId);
@ -592,7 +592,7 @@ public class DefaultTransportApiService implements TransportApiService {
}
private ListenableFuture<TransportApiResponseMsg> handleRegistration(TransportProtos.LwM2MRegistrationRequestMsg msg) {
TenantId tenantId = new TenantId(UUID.fromString(msg.getTenantId()));
TenantId tenantId = TenantId.fromUUID(UUID.fromString(msg.getTenantId()));
String deviceName = msg.getEndpoint();
Lock deviceCreationLock = deviceCreationLocks.computeIfAbsent(deviceName, id -> new ReentrantLock());
deviceCreationLock.lock();

2
application/src/main/java/org/thingsboard/server/service/transport/msg/TransportToDeviceActorMsgWrapper.java

@ -44,7 +44,7 @@ public class TransportToDeviceActorMsgWrapper implements TbActorMsg, DeviceAware
public TransportToDeviceActorMsgWrapper(TransportToDeviceActorMsg msg, TbCallback callback) {
this.msg = msg;
this.callback = callback;
this.tenantId = new TenantId(new UUID(msg.getSessionInfo().getTenantIdMSB(), msg.getSessionInfo().getTenantIdLSB()));
this.tenantId = TenantId.fromUUID(new UUID(msg.getSessionInfo().getTenantIdMSB(), msg.getSessionInfo().getTenantIdLSB()));
this.deviceId = new DeviceId(new UUID(msg.getSessionInfo().getDeviceIdMSB(), msg.getSessionInfo().getDeviceIdLSB()));
}

2
application/src/test/java/org/thingsboard/server/service/resource/sql/BaseTbResourceServiceTest.java

@ -277,7 +277,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
@Test(expected = DataValidationException.class)
public void testSaveTbResourceWithInvalidTenant() throws Exception {
TbResource resource = new TbResource();
resource.setTenantId(new TenantId(Uuids.timeBased()));
resource.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME);

2
common/data/src/main/java/org/thingsboard/server/common/data/id/EntityIdFactory.java

@ -40,7 +40,7 @@ public class EntityIdFactory {
public static EntityId getByTypeAndUuid(EntityType type, UUID uuid) {
switch (type) {
case TENANT:
return new TenantId(uuid);
return TenantId.fromUUID(uuid);
case CUSTOMER:
return new CustomerId(uuid);
case USER:

18
common/data/src/main/java/org/thingsboard/server/common/data/id/TenantId.java

@ -15,23 +15,33 @@
*/
package org.thingsboard.server.common.data.id;
import java.util.UUID;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.util.ConcurrentReferenceHashMap;
import org.springframework.util.ConcurrentReferenceHashMap.ReferenceType;
import org.thingsboard.server.common.data.EntityType;
import java.util.UUID;
public final class TenantId extends UUIDBased implements EntityId {
@JsonIgnore
public static final TenantId SYS_TENANT_ID = new TenantId(EntityId.NULL_UUID);
static final ConcurrentReferenceHashMap<UUID, TenantId> tenants = new ConcurrentReferenceHashMap<>(16, ReferenceType.SOFT);
@JsonIgnore
public static final TenantId SYS_TENANT_ID = TenantId.fromUUID(EntityId.NULL_UUID);
private static final long serialVersionUID = 1L;
@JsonCreator
public TenantId(@JsonProperty("id") UUID id) {
public static TenantId fromUUID(@JsonProperty("id") UUID id) {
return tenants.computeIfAbsent(id, TenantId::new);
}
//default constructor is still available due to possible usage in extensions
public TenantId(UUID id) {
super(id);
}

22
common/message/src/main/java/org/thingsboard/server/common/msg/TbMsgMetaData.java

@ -15,9 +15,7 @@
*/
package org.thingsboard.server.common.msg;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Collections;
@ -29,15 +27,25 @@ import java.util.concurrent.ConcurrentHashMap;
* Created by ashvayka on 13.01.18.
*/
@Data
@NoArgsConstructor
public final class TbMsgMetaData implements Serializable {
public static final TbMsgMetaData EMPTY = new TbMsgMetaData(Collections.emptyMap());
public static final TbMsgMetaData EMPTY = new TbMsgMetaData(0);
private final Map<String, String> data = new ConcurrentHashMap<>();
private final Map<String, String> data;
public TbMsgMetaData() {
this.data = new ConcurrentHashMap<>();
}
public TbMsgMetaData(Map<String, String> data) {
data.forEach((key, val) -> putValue(key, val));
this.data = new ConcurrentHashMap<>(data);
}
/**
* Internal constructor to create immutable TbMsgMetaData.EMPTY
* */
private TbMsgMetaData(int ignored) {
this.data = Collections.emptyMap();
}
public String getValue(String key) {
@ -55,6 +63,6 @@ public final class TbMsgMetaData implements Serializable {
}
public TbMsgMetaData copy() {
return new TbMsgMetaData(new ConcurrentHashMap<>(data));
return new TbMsgMetaData(data);
}
}

2
common/queue/src/main/java/org/thingsboard/server/queue/common/DefaultTbQueueRequestTemplate.java

@ -210,7 +210,7 @@ public class DefaultTbQueueRequestTemplate<Request extends TbQueueMsg, Response
@Override
public ListenableFuture<Response> send(Request request, long requestTimeoutNs) {
if (pendingRequests.mappingCount() >= maxPendingRequests) {
log.warn("Pending request map is full [{}]! Consider to increase maxPendingRequests or increase processing performance", maxPendingRequests);
log.warn("Pending request map is full [{}]! Consider to increase maxPendingRequests or increase processing performance. Request is {}", maxPendingRequests, request);
return Futures.immediateFailedFuture(new RuntimeException("Pending request map is full!"));
}
UUID requestId = UUID.randomUUID();

2
common/queue/src/main/java/org/thingsboard/server/queue/discovery/DefaultTbServiceInfoProvider.java

@ -88,7 +88,7 @@ public class DefaultTbServiceInfoProvider implements TbServiceInfoProvider {
UUID tenantId;
if (!StringUtils.isEmpty(tenantIdStr)) {
tenantId = UUID.fromString(tenantIdStr);
isolatedTenant = new TenantId(tenantId);
isolatedTenant = TenantId.fromUUID(tenantId);
} else {
tenantId = TenantId.NULL_UUID;
}

4
common/queue/src/main/java/org/thingsboard/server/queue/discovery/HashPartitionService.java

@ -279,7 +279,7 @@ public class HashPartitionService implements PartitionService {
tpi.tenantId(tenantId);
myPartitionsSearchKey = new ServiceQueueKey(serviceQueue, tenantId);
} else {
myPartitionsSearchKey = new ServiceQueueKey(serviceQueue, new TenantId(TenantId.NULL_UUID));
myPartitionsSearchKey = new ServiceQueueKey(serviceQueue, TenantId.SYS_TENANT_ID);
}
List<Integer> partitions = myPartitions.get(myPartitionsSearchKey);
if (partitions != null) {
@ -327,7 +327,7 @@ public class HashPartitionService implements PartitionService {
}
private TenantId getSystemOrIsolatedTenantId(TransportProtos.ServiceInfo serviceInfo) {
return new TenantId(new UUID(serviceInfo.getTenantIdMSB(), serviceInfo.getTenantIdLSB()));
return TenantId.fromUUID(new UUID(serviceInfo.getTenantIdMSB(), serviceInfo.getTenantIdLSB()));
}
private void addNode(Map<ServiceQueueKey, List<ServiceInfo>> queueServiceList, ServiceInfo instance) {

2
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/client/LwM2mClient.java

@ -148,7 +148,7 @@ public class LwM2mClient implements Serializable {
public void init(ValidateDeviceCredentialsResponse credentials, UUID sessionId) {
this.session = createSession(nodeId, sessionId, credentials);
this.tenantId = new TenantId(new UUID(session.getTenantIdMSB(), session.getTenantIdLSB()));
this.tenantId = TenantId.fromUUID(new UUID(session.getTenantIdMSB(), session.getTenantIdLSB()));
this.deviceId = new UUID(session.getDeviceIdMSB(), session.getDeviceIdLSB());
this.profileId = new UUID(session.getDeviceProfileIdMSB(), session.getDeviceProfileIdLSB());
this.powerMode = credentials.getDeviceInfo().getPowerMode();

14
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/session/DefaultLwM2MSessionManager.java

@ -19,7 +19,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.transport.TransportService;
import org.thingsboard.server.common.transport.service.DefaultTransportService;
import org.thingsboard.server.gen.transport.TransportProtos;
import org.thingsboard.server.queue.util.TbLwM2mTransportComponent;
import org.thingsboard.server.transport.lwm2m.server.LwM2mSessionMsgListener;
@ -27,6 +26,11 @@ import org.thingsboard.server.transport.lwm2m.server.attributes.LwM2MAttributesS
import org.thingsboard.server.transport.lwm2m.server.rpc.LwM2MRpcRequestHandler;
import org.thingsboard.server.transport.lwm2m.server.uplink.LwM2mUplinkMsgHandler;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SESSION_EVENT_MSG_CLOSED;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SESSION_EVENT_MSG_OPEN;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SUBSCRIBE_TO_ATTRIBUTE_UPDATES_ASYNC_MSG;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SUBSCRIBE_TO_RPC_ASYNC_MSG;
@Slf4j
@Service
@TbLwM2mTransportComponent
@ -52,16 +56,16 @@ public class DefaultLwM2MSessionManager implements LwM2MSessionManager {
transportService.registerAsyncSession(sessionInfo, new LwM2mSessionMsgListener(uplinkHandler, attributesService, rpcHandler, sessionInfo, transportService));
TransportProtos.TransportToDeviceActorMsg msg = TransportProtos.TransportToDeviceActorMsg.newBuilder()
.setSessionInfo(sessionInfo)
.setSessionEvent(DefaultTransportService.getSessionEventMsg(TransportProtos.SessionEvent.OPEN))
.setSubscribeToAttributes(TransportProtos.SubscribeToAttributeUpdatesMsg.newBuilder().setSessionType(TransportProtos.SessionType.ASYNC).build())
.setSubscribeToRPC(TransportProtos.SubscribeToRPCMsg.newBuilder().setSessionType(TransportProtos.SessionType.ASYNC).build())
.setSessionEvent(SESSION_EVENT_MSG_OPEN)
.setSubscribeToAttributes(SUBSCRIBE_TO_ATTRIBUTE_UPDATES_ASYNC_MSG)
.setSubscribeToRPC(SUBSCRIBE_TO_RPC_ASYNC_MSG)
.build();
transportService.process(msg, null);
}
@Override
public void deregister(TransportProtos.SessionInfoProto sessionInfo) {
transportService.process(sessionInfo, DefaultTransportService.getSessionEventMsg(TransportProtos.SessionEvent.CLOSED), null);
transportService.process(sessionInfo, SESSION_EVENT_MSG_CLOSED, null);
transportService.deregisterSession(sessionInfo);
}
}

4
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/uplink/DefaultLwM2mUplinkMsgHandler.java

@ -428,7 +428,7 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
@Override
public void onResourceUpdate(TransportProtos.ResourceUpdateMsg resourceUpdateMsgOpt) {
String idVer = resourceUpdateMsgOpt.getResourceKey();
TenantId tenantId = new TenantId(new UUID(resourceUpdateMsgOpt.getTenantIdMSB(), resourceUpdateMsgOpt.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(resourceUpdateMsgOpt.getTenantIdMSB(), resourceUpdateMsgOpt.getTenantIdLSB()));
modelProvider.evict(tenantId, idVer);
clientContext.getLwM2mClients().forEach(e -> e.updateResourceModel(idVer, modelProvider));
}
@ -436,7 +436,7 @@ public class DefaultLwM2mUplinkMsgHandler extends LwM2MExecutorAwareService impl
@Override
public void onResourceDelete(TransportProtos.ResourceDeleteMsg resourceDeleteMsgOpt) {
String pathIdVer = resourceDeleteMsgOpt.getResourceKey();
TenantId tenantId = new TenantId(new UUID(resourceDeleteMsgOpt.getTenantIdMSB(), resourceDeleteMsgOpt.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(resourceDeleteMsgOpt.getTenantIdMSB(), resourceDeleteMsgOpt.getTenantIdLSB()));
modelProvider.evict(tenantId, pathIdVer);
clientContext.getLwM2mClients().forEach(e -> e.deleteResources(pathIdVer, modelProvider));
}

7
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java

@ -65,7 +65,6 @@ import org.thingsboard.server.common.transport.service.SessionMetaData;
import org.thingsboard.server.common.transport.util.SslUtil;
import org.thingsboard.server.gen.transport.TransportProtos;
import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceResponseMsg;
import org.thingsboard.server.gen.transport.TransportProtos.SessionEvent;
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceX509CertRequestMsg;
import org.thingsboard.server.queue.scheduler.SchedulerComponent;
import org.thingsboard.server.transport.mqtt.adaptors.MqttTransportAdaptor;
@ -101,6 +100,8 @@ import static io.netty.handler.codec.mqtt.MqttMessageType.UNSUBACK;
import static io.netty.handler.codec.mqtt.MqttQoS.AT_LEAST_ONCE;
import static io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE;
import static io.netty.handler.codec.mqtt.MqttQoS.FAILURE;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SESSION_EVENT_MSG_CLOSED;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SESSION_EVENT_MSG_OPEN;
/**
* @author Andrew Shvayka
@ -921,7 +922,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
public void doDisconnect() {
if (deviceSessionCtx.isConnected()) {
log.debug("[{}] Client disconnected!", sessionId);
transportService.process(deviceSessionCtx.getSessionInfo(), DefaultTransportService.getSessionEventMsg(SessionEvent.CLOSED), null);
transportService.process(deviceSessionCtx.getSessionInfo(), SESSION_EVENT_MSG_CLOSED, null);
transportService.deregisterSession(deviceSessionCtx.getSessionInfo());
if (gatewaySessionHandler != null) {
gatewaySessionHandler.onGatewayDisconnect();
@ -942,7 +943,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
deviceSessionCtx.setDeviceInfo(msg.getDeviceInfo());
deviceSessionCtx.setDeviceProfile(msg.getDeviceProfile());
deviceSessionCtx.setSessionInfo(SessionInfoCreator.create(msg, context, sessionId));
transportService.process(deviceSessionCtx.getSessionInfo(), DefaultTransportService.getSessionEventMsg(SessionEvent.OPEN), new TransportServiceCallback<Void>() {
transportService.process(deviceSessionCtx.getSessionInfo(), SESSION_EVENT_MSG_OPEN, new TransportServiceCallback<Void>() {
@Override
public void onSuccess(Void msg) {
SessionMetaData sessionMetaData = transportService.registerAsyncSession(deviceSessionCtx.getSessionInfo(), MqttTransportHandler.this);

15
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/GatewaySessionHandler.java

@ -44,7 +44,6 @@ import org.thingsboard.server.common.transport.adaptor.JsonConverter;
import org.thingsboard.server.common.transport.adaptor.ProtoConverter;
import org.thingsboard.server.common.transport.auth.GetOrCreateDeviceFromGatewayResponse;
import org.thingsboard.server.common.transport.auth.TransportDeviceInfo;
import org.thingsboard.server.common.transport.service.DefaultTransportService;
import org.thingsboard.server.gen.transport.TransportApiProtos;
import org.thingsboard.server.gen.transport.TransportProtos;
import org.thingsboard.server.gen.transport.TransportProtos.GetOrCreateDeviceFromGatewayRequestMsg;
@ -68,6 +67,10 @@ import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import static org.springframework.util.ConcurrentReferenceHashMap.ReferenceType;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SESSION_EVENT_MSG_CLOSED;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SESSION_EVENT_MSG_OPEN;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SUBSCRIBE_TO_ATTRIBUTE_UPDATES_ASYNC_MSG;
import static org.thingsboard.server.common.transport.service.DefaultTransportService.SUBSCRIBE_TO_RPC_ASYNC_MSG;
/**
* Created by ashvayka on 19.01.17.
@ -267,11 +270,9 @@ public class GatewaySessionHandler {
transportService.registerAsyncSession(deviceSessionInfo, deviceSessionCtx);
transportService.process(TransportProtos.TransportToDeviceActorMsg.newBuilder()
.setSessionInfo(deviceSessionInfo)
.setSessionEvent(DefaultTransportService.getSessionEventMsg(TransportProtos.SessionEvent.OPEN))
.setSubscribeToAttributes(TransportProtos.SubscribeToAttributeUpdatesMsg.newBuilder()
.setSessionType(TransportProtos.SessionType.ASYNC).build())
.setSubscribeToRPC(TransportProtos.SubscribeToRPCMsg.newBuilder()
.setSessionType(TransportProtos.SessionType.ASYNC).build())
.setSessionEvent(SESSION_EVENT_MSG_OPEN)
.setSubscribeToAttributes(SUBSCRIBE_TO_ATTRIBUTE_UPDATES_ASYNC_MSG)
.setSubscribeToRPC(SUBSCRIBE_TO_RPC_ASYNC_MSG)
.build(), null);
}
futureToSet.set(devices.get(deviceName));
@ -720,7 +721,7 @@ public class GatewaySessionHandler {
private void deregisterSession(String deviceName, GatewayDeviceSessionCtx deviceSessionCtx) {
transportService.deregisterSession(deviceSessionCtx.getSessionInfo());
transportService.process(deviceSessionCtx.getSessionInfo(), DefaultTransportService.getSessionEventMsg(TransportProtos.SessionEvent.CLOSED), null);
transportService.process(deviceSessionCtx.getSessionInfo(), SESSION_EVENT_MSG_CLOSED, null);
log.debug("[{}] Removed device [{}] from the gateway session", sessionId, deviceName);
}

36
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java

@ -21,7 +21,6 @@ import com.google.common.util.concurrent.MoreExecutors;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.protobuf.ByteString;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationEventPublisher;
@ -124,6 +123,15 @@ import java.util.stream.Collectors;
public class DefaultTransportService implements TransportService {
public static final String OVERWRITE_ACTIVITY_TIME = "overwriteActivityTime";
public static final String SESSION_EXPIRED_MESSAGE = "Session has expired due to last activity time!";
public static final TransportProtos.SessionEventMsg SESSION_EVENT_MSG_OPEN = getSessionEventMsg(TransportProtos.SessionEvent.OPEN);
public static final TransportProtos.SessionEventMsg SESSION_EVENT_MSG_CLOSED = getSessionEventMsg(TransportProtos.SessionEvent.CLOSED);
public static final TransportProtos.SessionCloseNotificationProto SESSION_CLOSE_NOTIFICATION_PROTO = TransportProtos.SessionCloseNotificationProto.newBuilder()
.setMessage(SESSION_EXPIRED_MESSAGE).build();
public static final TransportProtos.SubscribeToAttributeUpdatesMsg SUBSCRIBE_TO_ATTRIBUTE_UPDATES_ASYNC_MSG = TransportProtos.SubscribeToAttributeUpdatesMsg.newBuilder()
.setSessionType(TransportProtos.SessionType.ASYNC).build();
public static final TransportProtos.SubscribeToRPCMsg SUBSCRIBE_TO_RPC_ASYNC_MSG = TransportProtos.SubscribeToRPCMsg.newBuilder()
.setSessionType(TransportProtos.SessionType.ASYNC).build();
private final AtomicInteger atomicTs = new AtomicInteger(0);
@ -272,9 +280,7 @@ public class DefaultTransportService implements TransportService {
@Override
public SessionMetaData registerAsyncSession(TransportProtos.SessionInfoProto sessionInfo, SessionMsgListener listener) {
SessionMetaData newValue = new SessionMetaData(sessionInfo, TransportProtos.SessionType.ASYNC, listener);
SessionMetaData oldValue = sessions.putIfAbsent(toSessionId(sessionInfo), newValue);
return oldValue != null ? oldValue : newValue;
return sessions.computeIfAbsent(toSessionId(sessionInfo), (x) -> new SessionMetaData(sessionInfo, TransportProtos.SessionType.ASYNC, listener));
}
@Override
@ -456,7 +462,7 @@ public class DefaultTransportService implements TransportService {
private TransportDeviceInfo getTransportDeviceInfo(TransportProtos.DeviceInfoProto di) {
TransportDeviceInfo tdi = new TransportDeviceInfo();
tdi.setTenantId(new TenantId(new UUID(di.getTenantIdMSB(), di.getTenantIdLSB())));
tdi.setTenantId(TenantId.fromUUID(new UUID(di.getTenantIdMSB(), di.getTenantIdLSB())));
tdi.setCustomerId(new CustomerId(new UUID(di.getCustomerIdMSB(), di.getCustomerIdLSB())));
tdi.setDeviceId(new DeviceId(new UUID(di.getDeviceIdMSB(), di.getDeviceIdLSB())));
tdi.setDeviceProfileId(new DeviceProfileId(new UUID(di.getDeviceProfileIdMSB(), di.getDeviceProfileIdLSB())));
@ -724,12 +730,8 @@ public class DefaultTransportService implements TransportService {
}
sessions.remove(uuid);
sessionsToRemove.add(uuid);
process(sessionInfo, getSessionEventMsg(TransportProtos.SessionEvent.CLOSED), null);
TransportProtos.SessionCloseNotificationProto sessionCloseNotificationProto = TransportProtos.SessionCloseNotificationProto
.newBuilder()
.setMessage("Session has expired due to last activity time!")
.build();
sessionMD.getListener().onRemoteSessionCloseCommand(uuid, sessionCloseNotificationProto);
process(sessionInfo, SESSION_EVENT_MSG_CLOSED, null);
sessionMD.getListener().onRemoteSessionCloseCommand(uuid, SESSION_CLOSE_NOTIFICATION_PROTO);
}
} else {
if (lastActivityTime > sessionAD.getLastReportedActivityTime()) {
@ -810,7 +812,7 @@ public class DefaultTransportService implements TransportService {
if (log.isTraceEnabled()) {
log.trace("[{}] Processing msg: {}", toSessionId(sessionInfo), msg);
}
TenantId tenantId = new TenantId(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB()));
DeviceId deviceId = new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB()));
EntityType rateLimitedEntityType = rateLimitService.checkLimits(tenantId, deviceId, dataPoints);
@ -900,14 +902,14 @@ public class DefaultTransportService implements TransportService {
} else if (EntityType.TENANT_PROFILE.equals(entityType)) {
tenantProfileCache.remove(new TenantProfileId(entityUuid));
} else if (EntityType.TENANT.equals(entityType)) {
rateLimitService.remove(new TenantId(entityUuid));
rateLimitService.remove(TenantId.fromUUID(entityUuid));
} else if (EntityType.DEVICE.equals(entityType)) {
rateLimitService.remove(new DeviceId(entityUuid));
onDeviceDeleted(new DeviceId(entityUuid));
}
} else if (toSessionMsg.hasResourceUpdateMsg()) {
TransportProtos.ResourceUpdateMsg msg = toSessionMsg.getResourceUpdateMsg();
TenantId tenantId = new TenantId(new UUID(msg.getTenantIdMSB(), msg.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(msg.getTenantIdMSB(), msg.getTenantIdLSB()));
ResourceType resourceType = ResourceType.valueOf(msg.getResourceType());
String resourceId = msg.getResourceKey();
transportResourceCache.update(tenantId, resourceType, resourceId);
@ -918,7 +920,7 @@ public class DefaultTransportService implements TransportService {
} else if (toSessionMsg.hasResourceDeleteMsg()) {
TransportProtos.ResourceDeleteMsg msg = toSessionMsg.getResourceDeleteMsg();
TenantId tenantId = new TenantId(new UUID(msg.getTenantIdMSB(), msg.getTenantIdLSB()));
TenantId tenantId = TenantId.fromUUID(new UUID(msg.getTenantIdMSB(), msg.getTenantIdLSB()));
ResourceType resourceType = ResourceType.valueOf(msg.getResourceType());
String resourceId = msg.getResourceKey();
transportResourceCache.evict(tenantId, resourceType, resourceId);
@ -1006,7 +1008,7 @@ public class DefaultTransportService implements TransportService {
}
protected TenantId getTenantId(TransportProtos.SessionInfoProto sessionInfo) {
return new TenantId(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB()));
return TenantId.fromUUID(new UUID(sessionInfo.getTenantIdMSB(), sessionInfo.getTenantIdLSB()));
}
protected CustomerId getCustomerId(TransportProtos.SessionInfoProto sessionInfo) {
@ -1023,7 +1025,7 @@ public class DefaultTransportService implements TransportService {
return new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB()));
}
public static TransportProtos.SessionEventMsg getSessionEventMsg(TransportProtos.SessionEvent event) {
private static TransportProtos.SessionEventMsg getSessionEventMsg(TransportProtos.SessionEvent event) {
return TransportProtos.SessionEventMsg.newBuilder()
.setSessionType(TransportProtos.SessionType.ASYNC)
.setEvent(event).build();

2
dao/src/main/java/org/thingsboard/server/dao/component/BaseComponentDescriptorService.java

@ -51,7 +51,7 @@ public class BaseComponentDescriptorService implements ComponentDescriptorServic
@Override
public ComponentDescriptor saveComponent(TenantId tenantId, ComponentDescriptor component) {
componentValidator.validate(component, data -> new TenantId(EntityId.NULL_UUID));
componentValidator.validate(component, data -> TenantId.SYS_TENANT_ID);
Optional<ComponentDescriptor> result = componentDescriptorDao.saveIfNotExist(tenantId, component);
return result.orElseGet(() -> componentDescriptorDao.findByClazz(tenantId, component.getClazz()));
}

2
dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java

@ -73,7 +73,7 @@ public class DeviceCredentialsServiceImpl extends AbstractEntityService implemen
public DeviceCredentials findDeviceCredentialsByCredentialsId(String credentialsId) {
log.trace("Executing findDeviceCredentialsByCredentialsId [{}]", credentialsId);
validateString(credentialsId, "Incorrect credentialsId " + credentialsId);
return deviceCredentialsDao.findByCredentialsId(new TenantId(EntityId.NULL_UUID), credentialsId);
return deviceCredentialsDao.findByCredentialsId(TenantId.SYS_TENANT_ID, credentialsId);
}
@Override

2
dao/src/main/java/org/thingsboard/server/dao/entity/BaseEntityService.java

@ -142,7 +142,7 @@ public class BaseEntityService extends AbstractEntityService implements EntitySe
hasName = entityViewService.findEntityViewByIdAsync(tenantId, new EntityViewId(entityId.getId()));
break;
case TENANT:
hasName = tenantService.findTenantByIdAsync(tenantId, new TenantId(entityId.getId()));
hasName = tenantService.findTenantByIdAsync(tenantId, TenantId.fromUUID(entityId.getId()));
break;
case CUSTOMER:
hasName = customerService.findCustomerByIdAsync(tenantId, new CustomerId(entityId.getId()));

2
dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java

@ -28,7 +28,7 @@ public class ModelConstants {
}
public static final UUID NULL_UUID = Uuids.startOf(0);
public static final TenantId SYSTEM_TENANT = new TenantId(ModelConstants.NULL_UUID);
public static final TenantId SYSTEM_TENANT = TenantId.fromUUID(ModelConstants.NULL_UUID);
// this is the difference between midnight October 15, 1582 UTC and midnight January 1, 1970 UTC as 100 nanosecond units
public static final long EPOCH_DIFF = 122192928000000000L;

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractAlarmEntity.java

@ -166,7 +166,7 @@ public abstract class AbstractAlarmEntity<T extends Alarm> extends BaseSqlEntity
Alarm alarm = new Alarm(new AlarmId(id));
alarm.setCreatedTime(createdTime);
if (tenantId != null) {
alarm.setTenantId(new TenantId(tenantId));
alarm.setTenantId(TenantId.fromUUID(tenantId));
}
if (customerId != null) {
alarm.setCustomerId(new CustomerId(customerId));

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractAssetEntity.java

@ -119,7 +119,7 @@ public abstract class AbstractAssetEntity<T extends Asset> extends BaseSqlEntity
Asset asset = new Asset(new AssetId(id));
asset.setCreatedTime(createdTime);
if (tenantId != null) {
asset.setTenantId(new TenantId(tenantId));
asset.setTenantId(TenantId.fromUUID(tenantId));
}
if (customerId != null) {
asset.setCustomerId(new CustomerId(customerId));

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractDeviceEntity.java

@ -145,7 +145,7 @@ public abstract class AbstractDeviceEntity<T extends Device> extends BaseSqlEnti
Device device = new Device(new DeviceId(getUuid()));
device.setCreatedTime(createdTime);
if (tenantId != null) {
device.setTenantId(new TenantId(tenantId));
device.setTenantId(TenantId.fromUUID(tenantId));
}
if (customerId != null) {
device.setCustomerId(new CustomerId(customerId));

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractEdgeEntity.java

@ -153,7 +153,7 @@ public abstract class AbstractEdgeEntity<T extends Edge> extends BaseSqlEntity<T
Edge edge = new Edge(new EdgeId(getUuid()));
edge.setCreatedTime(createdTime);
if (tenantId != null) {
edge.setTenantId(new TenantId(tenantId));
edge.setTenantId(TenantId.fromUUID(tenantId));
}
if (customerId != null) {
edge.setCustomerId(new CustomerId(customerId));

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractEntityViewEntity.java

@ -158,7 +158,7 @@ public abstract class AbstractEntityViewEntity<T extends EntityView> extends Bas
entityView.setEntityId(EntityIdFactory.getByTypeAndUuid(entityType.name(), entityId));
}
if (tenantId != null) {
entityView.setTenantId(new TenantId(tenantId));
entityView.setTenantId(TenantId.fromUUID(tenantId));
}
if (customerId != null) {
entityView.setCustomerId(new CustomerId(customerId));

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractTenantEntity.java

@ -138,7 +138,7 @@ public abstract class AbstractTenantEntity<T extends Tenant> extends BaseSqlEnti
}
protected Tenant toTenant() {
Tenant tenant = new Tenant(new TenantId(this.getUuid()));
Tenant tenant = new Tenant(TenantId.fromUUID(this.getUuid()));
tenant.setCreatedTime(createdTime);
tenant.setTitle(title);
tenant.setRegion(region);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractWidgetTypeEntity.java

@ -75,7 +75,7 @@ public abstract class AbstractWidgetTypeEntity<T extends BaseWidgetType> extends
BaseWidgetType widgetType = new BaseWidgetType(new WidgetTypeId(getUuid()));
widgetType.setCreatedTime(createdTime);
if (tenantId != null) {
widgetType.setTenantId(new TenantId(tenantId));
widgetType.setTenantId(TenantId.fromUUID(tenantId));
}
widgetType.setBundleAlias(bundleAlias);
widgetType.setAlias(alias);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/ApiUsageStateEntity.java

@ -102,7 +102,7 @@ public class ApiUsageStateEntity extends BaseSqlEntity<ApiUsageState> implements
ApiUsageState ur = new ApiUsageState(new ApiUsageStateId(this.getUuid()));
ur.setCreatedTime(createdTime);
if (tenantId != null) {
ur.setTenantId(new TenantId(tenantId));
ur.setTenantId(TenantId.fromUUID(tenantId));
}
if (entityId != null) {
ur.setEntityId(EntityIdFactory.getByTypeAndUuid(entityType, entityId));

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/AuditLogEntity.java

@ -132,7 +132,7 @@ public class AuditLogEntity extends BaseSqlEntity<AuditLog> implements BaseEntit
AuditLog auditLog = new AuditLog(new AuditLogId(this.getUuid()));
auditLog.setCreatedTime(createdTime);
if (tenantId != null) {
auditLog.setTenantId(new TenantId(tenantId));
auditLog.setTenantId(TenantId.fromUUID(tenantId));
}
if (customerId != null) {
auditLog.setCustomerId(new CustomerId(customerId));

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/CustomerEntity.java

@ -113,7 +113,7 @@ public final class CustomerEntity extends BaseSqlEntity<Customer> implements Sea
public Customer toData() {
Customer customer = new Customer(new CustomerId(this.getUuid()));
customer.setCreatedTime(createdTime);
customer.setTenantId(new TenantId(tenantId));
customer.setTenantId(TenantId.fromUUID(tenantId));
customer.setTitle(title);
customer.setCountry(country);
customer.setState(state);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java

@ -119,7 +119,7 @@ public final class DashboardEntity extends BaseSqlEntity<Dashboard> implements S
Dashboard dashboard = new Dashboard(new DashboardId(this.getUuid()));
dashboard.setCreatedTime(this.getCreatedTime());
if (tenantId != null) {
dashboard.setTenantId(new TenantId(tenantId));
dashboard.setTenantId(TenantId.fromUUID(tenantId));
}
dashboard.setTitle(title);
dashboard.setImage(image);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardInfoEntity.java

@ -113,7 +113,7 @@ public class DashboardInfoEntity extends BaseSqlEntity<DashboardInfo> implements
DashboardInfo dashboardInfo = new DashboardInfo(new DashboardId(this.getUuid()));
dashboardInfo.setCreatedTime(createdTime);
if (tenantId != null) {
dashboardInfo.setTenantId(new TenantId(tenantId));
dashboardInfo.setTenantId(TenantId.fromUUID(tenantId));
}
dashboardInfo.setTitle(title);
dashboardInfo.setImage(image);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/DeviceProfileEntity.java

@ -158,7 +158,7 @@ public final class DeviceProfileEntity extends BaseSqlEntity<DeviceProfile> impl
DeviceProfile deviceProfile = new DeviceProfile(new DeviceProfileId(this.getUuid()));
deviceProfile.setCreatedTime(createdTime);
if (tenantId != null) {
deviceProfile.setTenantId(new TenantId(tenantId));
deviceProfile.setTenantId(TenantId.fromUUID(tenantId));
}
deviceProfile.setName(name);
deviceProfile.setType(type);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/EdgeEventEntity.java

@ -111,7 +111,7 @@ public class EdgeEventEntity extends BaseSqlEntity<EdgeEvent> implements BaseEnt
public EdgeEvent toData() {
EdgeEvent edgeEvent = new EdgeEvent(new EdgeEventId(this.getUuid()));
edgeEvent.setCreatedTime(createdTime);
edgeEvent.setTenantId(new TenantId(tenantId));
edgeEvent.setTenantId(TenantId.fromUUID(tenantId));
edgeEvent.setEdgeId(new EdgeId(edgeId));
if (entityId != null) {
edgeEvent.setEntityId(entityId);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityAlarmEntity.java

@ -85,7 +85,7 @@ public final class EntityAlarmEntity implements ToData<EntityAlarm> {
@Override
public EntityAlarm toData() {
EntityAlarm result = new EntityAlarm();
result.setTenantId(new TenantId(tenantId));
result.setTenantId(TenantId.fromUUID(tenantId));
result.setEntityId(EntityIdFactory.getByTypeAndUuid(entityType, entityId));
result.setAlarmId(new AlarmId(alarmId));
result.setAlarmType(alarmType);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/EventEntity.java

@ -103,7 +103,7 @@ public class EventEntity extends BaseSqlEntity<Event> implements BaseEntity<Even
public Event toData() {
Event event = new Event(new EventId(this.getUuid()));
event.setCreatedTime(createdTime);
event.setTenantId(new TenantId(tenantId));
event.setTenantId(TenantId.fromUUID(tenantId));
event.setEntityId(EntityIdFactory.getByTypeAndUuid(entityType, entityId));
event.setBody(body);
event.setType(eventType);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ParamsEntity.java

@ -58,7 +58,7 @@ public class OAuth2ParamsEntity extends BaseSqlEntity<OAuth2Params> {
OAuth2Params oauth2Params = new OAuth2Params();
oauth2Params.setId(new OAuth2ParamsId(id));
oauth2Params.setCreatedTime(createdTime);
oauth2Params.setTenantId(new TenantId(tenantId));
oauth2Params.setTenantId(TenantId.fromUUID(tenantId));
oauth2Params.setEnabled(enabled);
return oauth2Params;
}

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/OtaPackageEntity.java

@ -151,7 +151,7 @@ public class OtaPackageEntity extends BaseSqlEntity<OtaPackage> implements Searc
public OtaPackage toData() {
OtaPackage otaPackage = new OtaPackage(new OtaPackageId(id));
otaPackage.setCreatedTime(createdTime);
otaPackage.setTenantId(new TenantId(tenantId));
otaPackage.setTenantId(TenantId.fromUUID(tenantId));
if (deviceProfileId != null) {
otaPackage.setDeviceProfileId(new DeviceProfileId(deviceProfileId));
}

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/OtaPackageInfoEntity.java

@ -170,7 +170,7 @@ public class OtaPackageInfoEntity extends BaseSqlEntity<OtaPackageInfo> implemen
public OtaPackageInfo toData() {
OtaPackageInfo otaPackageInfo = new OtaPackageInfo(new OtaPackageId(id));
otaPackageInfo.setCreatedTime(createdTime);
otaPackageInfo.setTenantId(new TenantId(tenantId));
otaPackageInfo.setTenantId(TenantId.fromUUID(tenantId));
if (deviceProfileId != null) {
otaPackageInfo.setDeviceProfileId(new DeviceProfileId(deviceProfileId));
}

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/RpcEntity.java

@ -97,7 +97,7 @@ public class RpcEntity extends BaseSqlEntity<Rpc> implements BaseEntity<Rpc> {
public Rpc toData() {
Rpc rpc = new Rpc(new RpcId(id));
rpc.setCreatedTime(createdTime);
rpc.setTenantId(new TenantId(tenantId));
rpc.setTenantId(TenantId.fromUUID(tenantId));
rpc.setDeviceId(new DeviceId(deviceId));
rpc.setExpirationTime(expirationTime);
rpc.setRequest(request);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/RuleChainEntity.java

@ -110,7 +110,7 @@ public class RuleChainEntity extends BaseSqlEntity<RuleChain> implements SearchT
public RuleChain toData() {
RuleChain ruleChain = new RuleChain(new RuleChainId(this.getUuid()));
ruleChain.setCreatedTime(createdTime);
ruleChain.setTenantId(new TenantId(tenantId));
ruleChain.setTenantId(TenantId.fromUUID(tenantId));
ruleChain.setName(name);
ruleChain.setType(type);
if (firstRuleNodeId != null) {

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/TbResourceEntity.java

@ -88,7 +88,7 @@ public class TbResourceEntity extends BaseSqlEntity<TbResource> implements Searc
public TbResource toData() {
TbResource resource = new TbResource(new TbResourceId(id));
resource.setCreatedTime(createdTime);
resource.setTenantId(new TenantId(tenantId));
resource.setTenantId(TenantId.fromUUID(tenantId));
resource.setTitle(title);
resource.setResourceType(ResourceType.valueOf(resourceType));
resource.setResourceKey(resourceKey);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/TbResourceInfoEntity.java

@ -76,7 +76,7 @@ public class TbResourceInfoEntity extends BaseSqlEntity<TbResourceInfo> implemen
public TbResourceInfo toData() {
TbResourceInfo resource = new TbResourceInfo(new TbResourceId(id));
resource.setCreatedTime(createdTime);
resource.setTenantId(new TenantId(tenantId));
resource.setTenantId(TenantId.fromUUID(tenantId));
resource.setTitle(title);
resource.setResourceType(ResourceType.valueOf(resourceType));
resource.setResourceKey(resourceKey);

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/UserEntity.java

@ -110,7 +110,7 @@ public class UserEntity extends BaseSqlEntity<User> implements SearchTextEntity<
user.setCreatedTime(createdTime);
user.setAuthority(authority);
if (tenantId != null) {
user.setTenantId(new TenantId(tenantId));
user.setTenantId(TenantId.fromUUID(tenantId));
}
if (customerId != null) {
user.setCustomerId(new CustomerId(customerId));

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/WidgetsBundleEntity.java

@ -87,7 +87,7 @@ public final class WidgetsBundleEntity extends BaseSqlEntity<WidgetsBundle> impl
WidgetsBundle widgetsBundle = new WidgetsBundle(new WidgetsBundleId(id));
widgetsBundle.setCreatedTime(createdTime);
if (tenantId != null) {
widgetsBundle.setTenantId(new TenantId(tenantId));
widgetsBundle.setTenantId(TenantId.fromUUID(tenantId));
}
widgetsBundle.setAlias(alias);
widgetsBundle.setTitle(title);

2
dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java

@ -180,7 +180,7 @@ public class BaseResourceService implements ResourceService {
throw new DataValidationException("Resource key should be specified!");
}
if (resource.getTenantId() == null) {
resource.setTenantId(new TenantId(ModelConstants.NULL_UUID));
resource.setTenantId(TenantId.fromUUID(ModelConstants.NULL_UUID));
}
if (!resource.getTenantId().getId().equals(ModelConstants.NULL_UUID)) {
Tenant tenant = tenantDao.findById(tenantId, resource.getTenantId().getId());

2
dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java

@ -182,7 +182,7 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im
if (types != null && !types.isEmpty()) {
list = new ArrayList<>();
for (String type : types) {
list.add(new EntitySubtype(new TenantId(tenantId), EntityType.ASSET, type));
list.add(new EntitySubtype(TenantId.fromUUID(tenantId), EntityType.ASSET, type));
}
}
return list;

2
dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java

@ -274,7 +274,7 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
if (types != null && !types.isEmpty()) {
list = new ArrayList<>();
for (String type : types) {
list.add(new EntitySubtype(new TenantId(tenantId), EntityType.DEVICE, type));
list.add(new EntitySubtype(TenantId.fromUUID(tenantId), EntityType.DEVICE, type));
}
}
return list;

2
dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaEdgeDao.java

@ -187,7 +187,7 @@ public class JpaEdgeDao extends JpaAbstractSearchTextDao<EdgeEntity, Edge> imple
if (types != null && !types.isEmpty()) {
list = new ArrayList<>();
for (String type : types) {
list.add(new EntitySubtype(new TenantId(tenantId), EntityType.EDGE, type));
list.add(new EntitySubtype(TenantId.fromUUID(tenantId), EntityType.EDGE, type));
}
}
return list;

2
dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java

@ -172,7 +172,7 @@ public class JpaEntityViewDao extends JpaAbstractSearchTextDao<EntityViewEntity,
if (types != null && !types.isEmpty()) {
list = new ArrayList<>();
for (String type : types) {
list.add(new EntitySubtype(new TenantId(tenantId), EntityType.ENTITY_VIEW, type));
list.add(new EntitySubtype(TenantId.fromUUID(tenantId), EntityType.ENTITY_VIEW, type));
}
}
return list;

2
dao/src/main/java/org/thingsboard/server/dao/sql/query/AlarmDataAdapter.java

@ -86,7 +86,7 @@ public class AlarmDataAdapter {
alarm.setType(row.get(ModelConstants.ALARM_TYPE_PROPERTY).toString());
alarm.setSeverity(AlarmSeverity.valueOf(row.get(ModelConstants.ALARM_SEVERITY_PROPERTY).toString()));
alarm.setStatus(AlarmStatus.valueOf(row.get(ModelConstants.ALARM_STATUS_PROPERTY).toString()));
alarm.setTenantId(new TenantId((UUID) row.get(ModelConstants.TENANT_ID_PROPERTY)));
alarm.setTenantId(TenantId.fromUUID((UUID) row.get(ModelConstants.TENANT_ID_PROPERTY)));
Object customerIdObj = row.get(ModelConstants.CUSTOMER_ID_PROPERTY);
CustomerId customerId = customerIdObj != null ? new CustomerId((UUID) customerIdObj) : null;
alarm.setCustomerId(customerId);

2
dao/src/main/java/org/thingsboard/server/dao/sql/tenant/JpaTenantDao.java

@ -77,7 +77,7 @@ public class JpaTenantDao extends JpaAbstractSearchTextDao<TenantEntity, Tenant>
@Override
public PageData<TenantId> findTenantsIds(PageLink pageLink) {
return DaoUtil.pageToPageData(tenantRepository.findTenantsIds(DaoUtil.toPageable(pageLink))).mapData(TenantId::new);
return DaoUtil.pageToPageData(tenantRepository.findTenantsIds(DaoUtil.toPageable(pageLink))).mapData(TenantId::fromUUID);
}
}

8
dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java

@ -168,20 +168,20 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe
public PageData<Tenant> findTenants(PageLink pageLink) {
log.trace("Executing findTenants pageLink [{}]", pageLink);
Validator.validatePageLink(pageLink);
return tenantDao.findTenantsByRegion(new TenantId(EntityId.NULL_UUID), DEFAULT_TENANT_REGION, pageLink);
return tenantDao.findTenantsByRegion(TenantId.SYS_TENANT_ID, DEFAULT_TENANT_REGION, pageLink);
}
@Override
public PageData<TenantInfo> findTenantInfos(PageLink pageLink) {
log.trace("Executing findTenantInfos pageLink [{}]", pageLink);
Validator.validatePageLink(pageLink);
return tenantDao.findTenantInfosByRegion(new TenantId(EntityId.NULL_UUID), DEFAULT_TENANT_REGION, pageLink);
return tenantDao.findTenantInfosByRegion(TenantId.SYS_TENANT_ID, DEFAULT_TENANT_REGION, pageLink);
}
@Override
public void deleteTenants() {
log.trace("Executing deleteTenants");
tenantsRemover.removeEntities(new TenantId(EntityId.NULL_UUID), DEFAULT_TENANT_REGION);
tenantsRemover.removeEntities(TenantId.SYS_TENANT_ID, DEFAULT_TENANT_REGION);
}
private DataValidator<Tenant> tenantValidator =
@ -224,7 +224,7 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe
@Override
protected void removeEntity(TenantId tenantId, Tenant entity) {
deleteTenant(new TenantId(entity.getUuidId()));
deleteTenant(TenantId.fromUUID(entity.getUuidId()));
}
};
}

2
dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java

@ -409,7 +409,7 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic
}
TenantId tenantId = user.getTenantId();
if (tenantId == null) {
tenantId = new TenantId(ModelConstants.NULL_UUID);
tenantId = TenantId.fromUUID(ModelConstants.NULL_UUID);
user.setTenantId(tenantId);
}
CustomerId customerId = user.getCustomerId();

2
dao/src/main/java/org/thingsboard/server/dao/widget/WidgetTypeServiceImpl.java

@ -135,7 +135,7 @@ public class WidgetTypeServiceImpl implements WidgetTypeService {
throw new DataValidationException("Widgets type descriptor can't be empty!");
}
if (widgetTypeDetails.getTenantId() == null) {
widgetTypeDetails.setTenantId(new TenantId(ModelConstants.NULL_UUID));
widgetTypeDetails.setTenantId(TenantId.fromUUID(ModelConstants.NULL_UUID));
}
if (!widgetTypeDetails.getTenantId().getId().equals(ModelConstants.NULL_UUID)) {
Tenant tenant = tenantDao.findById(tenantId, widgetTypeDetails.getTenantId().getId());

2
dao/src/main/java/org/thingsboard/server/dao/widget/WidgetsBundleServiceImpl.java

@ -159,7 +159,7 @@ public class WidgetsBundleServiceImpl implements WidgetsBundleService {
throw new DataValidationException("Widgets bundle title should be specified!");
}
if (widgetsBundle.getTenantId() == null) {
widgetsBundle.setTenantId(new TenantId(ModelConstants.NULL_UUID));
widgetsBundle.setTenantId(TenantId.fromUUID(ModelConstants.NULL_UUID));
}
if (!widgetsBundle.getTenantId().getId().equals(ModelConstants.NULL_UUID)) {
Tenant tenant = tenantDao.findById(tenantId, widgetsBundle.getTenantId().getId());

2
dao/src/test/java/org/thingsboard/server/dao/nosql/CassandraPartitionsCacheTest.java

@ -96,7 +96,7 @@ public class CassandraPartitionsCacheTest {
cassandraBaseTimeseriesDao.init();
UUID id = UUID.randomUUID();
TenantId tenantId = new TenantId(id);
TenantId tenantId = TenantId.fromUUID(id);
long tsKvEntryTs = System.currentTimeMillis();
for (int i = 0; i < 50000; i++) {

4
dao/src/test/java/org/thingsboard/server/dao/service/AbstractServiceTest.java

@ -86,7 +86,7 @@ public abstract class AbstractServiceTest {
protected ObjectMapper mapper = new ObjectMapper();
public static final TenantId SYSTEM_TENANT_ID = new TenantId(EntityId.NULL_UUID);
public static final TenantId SYSTEM_TENANT_ID = TenantId.SYS_TENANT_ID;
@Autowired
protected UserService userService;
@ -173,7 +173,7 @@ public abstract class AbstractServiceTest {
protected Event generateEvent(TenantId tenantId, EntityId entityId, String eventType, String eventUid) throws IOException {
if (tenantId == null) {
tenantId = new TenantId(Uuids.timeBased());
tenantId = TenantId.fromUUID(Uuids.timeBased());
}
Event event = new Event();
event.setTenantId(tenantId);

2
dao/src/test/java/org/thingsboard/server/dao/service/BaseAssetServiceTest.java

@ -104,7 +104,7 @@ public abstract class BaseAssetServiceTest extends AbstractServiceTest {
Asset asset = new Asset();
asset.setName("My asset");
asset.setType("default");
asset.setTenantId(new TenantId(Uuids.timeBased()));
asset.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
assetService.saveAsset(asset);
}

2
dao/src/test/java/org/thingsboard/server/dao/service/BaseCustomerServiceTest.java

@ -105,7 +105,7 @@ public abstract class BaseCustomerServiceTest extends AbstractServiceTest {
public void testSaveCustomerWithInvalidTenant() {
Customer customer = new Customer();
customer.setTitle("My customer");
customer.setTenantId(new TenantId(Uuids.timeBased()));
customer.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
customerService.saveCustomer(customer);
}

2
dao/src/test/java/org/thingsboard/server/dao/service/BaseDashboardServiceTest.java

@ -102,7 +102,7 @@ public abstract class BaseDashboardServiceTest extends AbstractServiceTest {
public void testSaveDashboardWithInvalidTenant() {
Dashboard dashboard = new Dashboard();
dashboard.setTitle("My dashboard");
dashboard.setTenantId(new TenantId(Uuids.timeBased()));
dashboard.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
dashboardService.saveDashboard(dashboard);
}

2
dao/src/test/java/org/thingsboard/server/dao/service/BaseDeviceServiceTest.java

@ -267,7 +267,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest {
Device device = new Device();
device.setName("My device");
device.setType("default");
device.setTenantId(new TenantId(Uuids.timeBased()));
device.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
deviceService.saveDevice(device);
}

6
dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeEventServiceTest.java

@ -53,7 +53,7 @@ public abstract class BaseEdgeEventServiceTest extends AbstractServiceTest {
protected EdgeEvent generateEdgeEvent(TenantId tenantId, EdgeId edgeId, EntityId entityId, EdgeEventActionType edgeEventAction) throws IOException {
if (tenantId == null) {
tenantId = new TenantId(Uuids.timeBased());
tenantId = TenantId.fromUUID(Uuids.timeBased());
}
EdgeEvent edgeEvent = new EdgeEvent();
edgeEvent.setTenantId(tenantId);
@ -76,7 +76,7 @@ public abstract class BaseEdgeEventServiceTest extends AbstractServiceTest {
EdgeId edgeId = new EdgeId(Uuids.timeBased());
DeviceId deviceId = new DeviceId(Uuids.timeBased());
TenantId tenantId = new TenantId(Uuids.timeBased());
TenantId tenantId = TenantId.fromUUID(Uuids.timeBased());
saveEdgeEventWithProvidedTime(timeBeforeStartTime, edgeId, deviceId, tenantId);
EdgeEvent savedEdgeEvent = saveEdgeEventWithProvidedTime(eventTime, edgeId, deviceId, tenantId);
EdgeEvent savedEdgeEvent2 = saveEdgeEventWithProvidedTime(eventTime + 1, edgeId, deviceId, tenantId);
@ -105,7 +105,7 @@ public abstract class BaseEdgeEventServiceTest extends AbstractServiceTest {
public void findEdgeEventsWithTsUpdateAndWithout() throws Exception {
EdgeId edgeId = new EdgeId(Uuids.timeBased());
DeviceId deviceId = new DeviceId(Uuids.timeBased());
TenantId tenantId = new TenantId(Uuids.timeBased());
TenantId tenantId = TenantId.fromUUID(Uuids.timeBased());
TimePageLink pageLink = new TimePageLink(1, 0, null, new SortOrder("createdTime", SortOrder.Direction.ASC));
EdgeEvent edgeEventWithTsUpdate = generateEdgeEvent(tenantId, edgeId, deviceId, EdgeEventActionType.TIMESERIES_UPDATED);

2
dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeServiceTest.java

@ -100,7 +100,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
Edge edge = new Edge();
edge.setName("My edge");
edge.setType("default");
edge.setTenantId(new TenantId(Uuids.timeBased()));
edge.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
edgeService.saveEdge(edge, true);
}

2
dao/src/test/java/org/thingsboard/server/dao/service/BaseOtaPackageServiceTest.java

@ -342,7 +342,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
@Test
public void testSaveFirmwareWithInvalidTenant() {
OtaPackage firmware = new OtaPackage();
firmware.setTenantId(new TenantId(Uuids.timeBased()));
firmware.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
firmware.setDeviceProfileId(deviceProfileId);
firmware.setType(FIRMWARE);
firmware.setTitle(TITLE);

2
dao/src/test/java/org/thingsboard/server/dao/service/BaseRuleChainServiceTest.java

@ -97,7 +97,7 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest {
public void testSaveRuleChainWithInvalidTenant() {
RuleChain ruleChain = new RuleChain();
ruleChain.setName("My RuleChain");
ruleChain.setTenantId(new TenantId(Uuids.timeBased()));
ruleChain.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
ruleChainService.saveRuleChain(ruleChain);
}

4
dao/src/test/java/org/thingsboard/server/dao/service/BaseWidgetTypeServiceTest.java

@ -142,7 +142,7 @@ public abstract class BaseWidgetTypeServiceTest extends AbstractServiceTest {
WidgetsBundle savedWidgetsBundle = widgetsBundleService.saveWidgetsBundle(widgetsBundle);
WidgetTypeDetails widgetType = new WidgetTypeDetails();
widgetType.setTenantId(new TenantId(Uuids.timeBased()));
widgetType.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
widgetType.setBundleAlias(savedWidgetsBundle.getAlias());
widgetType.setName("Widget Type");
widgetType.setDescriptor(new ObjectMapper().readValue("{ \"someKey\": \"someValue\" }", JsonNode.class));
@ -176,7 +176,7 @@ public abstract class BaseWidgetTypeServiceTest extends AbstractServiceTest {
widgetType.setName("Widget Type");
widgetType.setDescriptor(new ObjectMapper().readValue("{ \"someKey\": \"someValue\" }", JsonNode.class));
WidgetTypeDetails savedWidgetType = widgetTypeService.saveWidgetType(widgetType);
savedWidgetType.setTenantId(new TenantId(ModelConstants.NULL_UUID));
savedWidgetType.setTenantId(TenantId.fromUUID(ModelConstants.NULL_UUID));
try {
widgetTypeService.saveWidgetType(savedWidgetType);
} finally {

12
dao/src/test/java/org/thingsboard/server/dao/service/BaseWidgetsBundleServiceTest.java

@ -88,7 +88,7 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest {
public void testSaveWidgetsBundleWithInvalidTenant() {
WidgetsBundle widgetsBundle = new WidgetsBundle();
widgetsBundle.setTitle("My widgets bundle");
widgetsBundle.setTenantId(new TenantId(Uuids.timeBased()));
widgetsBundle.setTenantId(TenantId.fromUUID(Uuids.timeBased()));
widgetsBundleService.saveWidgetsBundle(widgetsBundle);
}
@ -98,7 +98,7 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest {
widgetsBundle.setTitle("My widgets bundle");
widgetsBundle.setTenantId(tenantId);
WidgetsBundle savedWidgetsBundle = widgetsBundleService.saveWidgetsBundle(widgetsBundle);
savedWidgetsBundle.setTenantId(new TenantId(ModelConstants.NULL_UUID));
savedWidgetsBundle.setTenantId(TenantId.fromUUID(ModelConstants.NULL_UUID));
try {
widgetsBundleService.saveWidgetsBundle(savedWidgetsBundle);
} finally {
@ -160,7 +160,7 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest {
@Test
public void testFindSystemWidgetsBundlesByPageLink() {
TenantId tenantId = new TenantId(ModelConstants.NULL_UUID);
TenantId tenantId = TenantId.fromUUID(ModelConstants.NULL_UUID);
List<WidgetsBundle> systemWidgetsBundles = widgetsBundleService.findSystemWidgetsBundles(tenantId);
List<WidgetsBundle> createdWidgetsBundles = new ArrayList<>();
@ -204,7 +204,7 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest {
@Test
public void testFindSystemWidgetsBundles() {
TenantId tenantId = new TenantId(ModelConstants.NULL_UUID);
TenantId tenantId = TenantId.fromUUID(ModelConstants.NULL_UUID);
List<WidgetsBundle> systemWidgetsBundles = widgetsBundleService.findSystemWidgetsBundles(tenantId);
@ -290,7 +290,7 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest {
tenant = tenantService.saveTenant(tenant);
TenantId tenantId = tenant.getId();
TenantId systemTenantId = new TenantId(ModelConstants.NULL_UUID);
TenantId systemTenantId = TenantId.fromUUID(ModelConstants.NULL_UUID);
List<WidgetsBundle> createdWidgetsBundles = new ArrayList<>();
List<WidgetsBundle> createdSystemWidgetsBundles = new ArrayList<>();
@ -376,7 +376,7 @@ public abstract class BaseWidgetsBundleServiceTest extends AbstractServiceTest {
tenant = tenantService.saveTenant(tenant);
TenantId tenantId = tenant.getId();
TenantId systemTenantId = new TenantId(ModelConstants.NULL_UUID);
TenantId systemTenantId = TenantId.fromUUID(ModelConstants.NULL_UUID);
List<WidgetsBundle> createdWidgetsBundles = new ArrayList<>();
List<WidgetsBundle> createdSystemWidgetsBundles = new ArrayList<>();

4
dao/src/test/java/org/thingsboard/server/dao/service/event/BaseEventServiceTest.java

@ -68,7 +68,7 @@ public abstract class BaseEventServiceTest extends AbstractServiceTest {
long timeAfterEndTime = LocalDateTime.of(2016, Month.NOVEMBER, 1, 13, 30).toEpochSecond(ZoneOffset.UTC);
CustomerId customerId = new CustomerId(Uuids.timeBased());
TenantId tenantId = new TenantId(Uuids.timeBased());
TenantId tenantId = TenantId.fromUUID(Uuids.timeBased());
saveEventWithProvidedTime(timeBeforeStartTime, customerId, tenantId);
Event savedEvent = saveEventWithProvidedTime(eventTime, customerId, tenantId);
Event savedEvent2 = saveEventWithProvidedTime(eventTime+1, customerId, tenantId);
@ -103,7 +103,7 @@ public abstract class BaseEventServiceTest extends AbstractServiceTest {
long timeAfterEndTime = LocalDateTime.of(2016, Month.NOVEMBER, 1, 13, 30).toEpochSecond(ZoneOffset.UTC);
CustomerId customerId = new CustomerId(Uuids.timeBased());
TenantId tenantId = new TenantId(Uuids.timeBased());
TenantId tenantId = TenantId.fromUUID(Uuids.timeBased());
saveEventWithProvidedTime(timeBeforeStartTime, customerId, tenantId);
Event savedEvent = saveEventWithProvidedTime(eventTime, customerId, tenantId);
Event savedEvent2 = saveEventWithProvidedTime(eventTime+1, customerId, tenantId);

8
dao/src/test/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDaoTest.java

@ -53,9 +53,9 @@ public class JpaAlarmDaoTest extends AbstractJpaDaoTest {
saveAlarm(alarm1Id, tenantId, originator1Id, "TEST_ALARM");
saveAlarm(alarm2Id, tenantId, originator1Id, "TEST_ALARM");
saveAlarm(alarm3Id, tenantId, originator2Id, "TEST_ALARM");
assertEquals(3, alarmDao.find(new TenantId(tenantId)).size());
assertEquals(3, alarmDao.find(TenantId.fromUUID(tenantId)).size());
ListenableFuture<Alarm> future = alarmDao
.findLatestByOriginatorAndType(new TenantId(tenantId), new DeviceId(originator1Id), "TEST_ALARM");
.findLatestByOriginatorAndType(TenantId.fromUUID(tenantId), new DeviceId(originator1Id), "TEST_ALARM");
Alarm alarm = future.get();
assertNotNull(alarm);
assertEquals(alarm2Id, alarm.getId().getId());
@ -64,13 +64,13 @@ public class JpaAlarmDaoTest extends AbstractJpaDaoTest {
private void saveAlarm(UUID id, UUID tenantId, UUID deviceId, String type) {
Alarm alarm = new Alarm();
alarm.setId(new AlarmId(id));
alarm.setTenantId(new TenantId(tenantId));
alarm.setTenantId(TenantId.fromUUID(tenantId));
alarm.setOriginator(new DeviceId(deviceId));
alarm.setType(type);
alarm.setPropagate(true);
alarm.setStartTs(System.currentTimeMillis());
alarm.setEndTs(System.currentTimeMillis());
alarm.setStatus(AlarmStatus.ACTIVE_UNACK);
alarmDao.save(new TenantId(tenantId), alarm);
alarmDao.save(TenantId.fromUUID(tenantId), alarm);
}
}

6
dao/src/test/java/org/thingsboard/server/dao/sql/asset/JpaAssetDaoTest.java

@ -60,7 +60,7 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
UUID customerId = i % 2 == 0 ? customerId1 : customerId2;
saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1");
}
assertEquals(60, assetDao.find(new TenantId(tenantId1)).size());
assertEquals(60, assetDao.find(TenantId.fromUUID(tenantId1)).size());
PageLink pageLink = new PageLink(20, 0, "ASSET_");
PageData<Asset> assets1 = assetDao.findAssetsByTenantId(tenantId1, pageLink);
@ -213,10 +213,10 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
private void saveAsset(UUID id, UUID tenantId, UUID customerId, String name, String type) {
Asset asset = new Asset();
asset.setId(new AssetId(id));
asset.setTenantId(new TenantId(tenantId));
asset.setTenantId(TenantId.fromUUID(tenantId));
asset.setCustomerId(new CustomerId(customerId));
asset.setName(name);
asset.setType(type);
assetDao.save(new TenantId(tenantId), asset);
assetDao.save(TenantId.fromUUID(tenantId), asset);
}
}

4
dao/src/test/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDaoTest.java

@ -76,8 +76,8 @@ public class JpaCustomerDaoTest extends AbstractJpaDaoTest {
private void createCustomer(UUID tenantId, int index) {
Customer customer = new Customer();
customer.setId(new CustomerId(Uuids.timeBased()));
customer.setTenantId(new TenantId(tenantId));
customer.setTenantId(TenantId.fromUUID(tenantId));
customer.setTitle("CUSTOMER_" + index);
customerDao.save(new TenantId(tenantId), customer);
customerDao.save(TenantId.fromUUID(tenantId), customer);
}
}

2
dao/src/test/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDaoTest.java

@ -60,7 +60,7 @@ public class JpaDashboardInfoDaoTest extends AbstractJpaDaoTest {
private void createDashboard(UUID tenantId, int index) {
DashboardInfo dashboardInfo = new DashboardInfo();
dashboardInfo.setId(new DashboardId(Uuids.timeBased()));
dashboardInfo.setTenantId(new TenantId(tenantId));
dashboardInfo.setTenantId(TenantId.fromUUID(tenantId));
dashboardInfo.setTitle("DASHBOARD_" + index);
dashboardInfoDao.save(AbstractServiceTest.SYSTEM_TENANT_ID, dashboardInfo);
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save