diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/asset/BaseAssetProfileProcessor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/asset/BaseAssetProfileProcessor.java index 98061dbecc..68d52e74b6 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/asset/BaseAssetProfileProcessor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/asset/BaseAssetProfileProcessor.java @@ -46,6 +46,7 @@ public abstract class BaseAssetProfileProcessor extends BaseEdgeProcessor { if (assetProfile == null) { throw new RuntimeException("[{" + tenantId + "}] assetProfileUpdateMsg {" + assetProfileUpdateMsg + "} cannot be converted to asset profile"); } + boolean isDefault = assetProfile.isDefault(); AssetProfile assetProfileById = assetProfileService.findAssetProfileById(tenantId, assetProfileId); if (assetProfileById == null) { created = true; @@ -53,6 +54,7 @@ public abstract class BaseAssetProfileProcessor extends BaseEdgeProcessor { } else { assetProfile.setId(assetProfileId); } + assetProfile.setDefault(false); String assetProfileName = assetProfile.getName(); AssetProfile assetProfileByName = assetProfileService.findAssetProfileByName(tenantId, assetProfileName); if (assetProfileByName != null && !assetProfileByName.getId().equals(assetProfileId)) { @@ -73,6 +75,9 @@ public abstract class BaseAssetProfileProcessor extends BaseEdgeProcessor { assetProfile.setId(assetProfileId); } assetProfileService.saveAssetProfile(assetProfile, false); + if (isDefault) { + assetProfileService.setDefaultAssetProfile(tenantId, assetProfileId); + } } catch (Exception e) { log.error("[{}] Failed to process asset profile update msg [{}]", tenantId, assetProfileUpdateMsg, e); throw e; @@ -85,7 +90,7 @@ public abstract class BaseAssetProfileProcessor extends BaseEdgeProcessor { private AssetProfile createAssetProfile(TenantId tenantId, AssetProfileId assetProfileId, AssetProfileUpdateMsg assetProfileUpdateMsg) { AssetProfile assetProfile = new AssetProfile(); assetProfile.setTenantId(tenantId); - assetProfile.setName(assetProfile.getName()); + assetProfile.setName(assetProfileUpdateMsg.getName()); assetProfile.setCreatedTime(Uuids.unixTimestamp(assetProfileId.getId())); assetProfile.setDefault(assetProfileUpdateMsg.getDefault()); assetProfile.setDefaultQueueName(assetProfileUpdateMsg.hasDefaultQueueName() ? assetProfileUpdateMsg.getDefaultQueueName() : null); diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/device/BaseDeviceProfileProcessor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/device/BaseDeviceProfileProcessor.java index e97f0aaac1..55153a7a79 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/device/BaseDeviceProfileProcessor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/device/BaseDeviceProfileProcessor.java @@ -58,6 +58,7 @@ public abstract class BaseDeviceProfileProcessor extends BaseEdgeProcessor { if (deviceProfile == null) { throw new RuntimeException("[{" + tenantId + "}] deviceProfileUpdateMsg {" + deviceProfileUpdateMsg + "} cannot be converted to device profile"); } + boolean isDefault = deviceProfile.isDefault(); DeviceProfile deviceProfileById = deviceProfileService.findDeviceProfileById(tenantId, deviceProfileId); if (deviceProfileById == null) { created = true; @@ -73,6 +74,7 @@ public abstract class BaseDeviceProfileProcessor extends BaseEdgeProcessor { tenantId, deviceProfile.getName(), deviceProfileName); deviceProfileNameUpdated = true; } + deviceProfile.setDefault(false); deviceProfile.setName(deviceProfileName); RuleChainId ruleChainId = deviceProfile.getDefaultRuleChainId(); @@ -85,6 +87,9 @@ public abstract class BaseDeviceProfileProcessor extends BaseEdgeProcessor { deviceProfile.setId(deviceProfileId); } deviceProfileService.saveDeviceProfile(deviceProfile, false); + if (isDefault) { + deviceProfileService.setDefaultDeviceProfile(tenantId, deviceProfileId); + } } catch (Exception e) { log.error("[{}] Failed to process device profile update msg [{}]", tenantId, deviceProfileUpdateMsg, e); throw e; @@ -99,6 +104,7 @@ public abstract class BaseDeviceProfileProcessor extends BaseEdgeProcessor { deviceProfile.setTenantId(tenantId); deviceProfile.setCreatedTime(Uuids.unixTimestamp(deviceProfileId.getId())); deviceProfile.setName(deviceProfileUpdateMsg.getName()); + deviceProfile.setDefault(deviceProfileUpdateMsg.getDefault()); deviceProfile.setDescription(deviceProfileUpdateMsg.hasDescription() ? deviceProfileUpdateMsg.getDescription() : null); deviceProfile.setType(DeviceProfileType.valueOf(deviceProfileUpdateMsg.getType())); deviceProfile.setTransportType(deviceProfileUpdateMsg.hasTransportType()