Browse Source

Fixed creation of profiles with name "default" in case when default profile exists, but was renamed

pull/10901/head
imbeacon 2 years ago
parent
commit
689ebd57b3
  1. 3
      dao/src/main/java/org/thingsboard/server/dao/asset/AssetProfileServiceImpl.java
  2. 3
      dao/src/main/java/org/thingsboard/server/dao/device/DeviceProfileServiceImpl.java
  3. 12
      dao/src/test/java/org/thingsboard/server/dao/service/AssetProfileServiceTest.java
  4. 12
      dao/src/test/java/org/thingsboard/server/dao/service/DeviceProfileServiceTest.java

3
dao/src/main/java/org/thingsboard/server/dao/asset/AssetProfileServiceImpl.java

@ -234,8 +234,9 @@ public class AssetProfileServiceImpl extends AbstractCachedEntityService<AssetPr
log.trace("Executing findOrCreateAssetProfile");
AssetProfile assetProfile = findAssetProfileByName(tenantId, name, false);
if (assetProfile == null) {
boolean createDefaultProfile = "default".equals(name) && findDefaultAssetProfile(tenantId) == null;
try {
assetProfile = this.doCreateDefaultAssetProfile(tenantId, name, name.equals("default"), true);
assetProfile = this.doCreateDefaultAssetProfile(tenantId, name, createDefaultProfile, true);
} catch (DataValidationException e) {
if (ASSET_PROFILE_WITH_SUCH_NAME_ALREADY_EXISTS.equals(e.getMessage())) {
assetProfile = findAssetProfileByName(tenantId, name, false);

3
dao/src/main/java/org/thingsboard/server/dao/device/DeviceProfileServiceImpl.java

@ -272,8 +272,9 @@ public class DeviceProfileServiceImpl extends AbstractCachedEntityService<Device
log.trace("Executing findOrCreateDefaultDeviceProfile");
DeviceProfile deviceProfile = findDeviceProfileByName(tenantId, name, false);
if (deviceProfile == null) {
boolean createDefaultProfile = "default".equals(name) && findDefaultDeviceProfile(tenantId) == null;
try {
deviceProfile = this.doCreateDefaultDeviceProfile(tenantId, name, name.equals("default"), true);
deviceProfile = this.doCreateDefaultDeviceProfile(tenantId, name, createDefaultProfile, true);
} catch (DataValidationException e) {
if (DEVICE_PROFILE_WITH_SUCH_NAME_ALREADY_EXISTS.equals(e.getMessage())) {
deviceProfile = findDeviceProfileByName(tenantId, name, false);

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

@ -163,6 +163,18 @@ public class AssetProfileServiceTest extends AbstractServiceTest {
});
}
@Test
public void testSaveAssetProfileWithNameDefaultAndProfileWithIsDefaultAndDifferentNameAlreadyExists() {
AssetProfile defaultAssetProfile = assetProfileService.findDefaultAssetProfile(tenantId);
Assert.assertNotNull(defaultAssetProfile);
defaultAssetProfile.setName("Asset Profile 1");
assetProfileService.saveAssetProfile(defaultAssetProfile);
AssetProfile createdAssetProfile = assetProfileService.findOrCreateAssetProfile(tenantId, "default");
Assert.assertNotNull(createdAssetProfile);
Assert.assertEquals("default", createdAssetProfile.getName());
Assert.assertFalse(createdAssetProfile.isDefault());
}
@Test
public void testDeleteAssetProfileWithExistingAsset() {
AssetProfile assetProfile = this.createAssetProfile(tenantId, "Asset Profile");

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

@ -209,6 +209,18 @@ public class DeviceProfileServiceTest extends AbstractServiceTest {
});
}
@Test
public void testSaveDeviceProfileWithNameDefaultAndProfileWithIsDefaultAndDifferentNameAlreadyExists() {
DeviceProfile defaultDeviceProfile = deviceProfileService.findDefaultDeviceProfile(tenantId);
Assert.assertNotNull(defaultDeviceProfile);
defaultDeviceProfile.setName("Device Profile 1");
deviceProfileService.saveDeviceProfile(defaultDeviceProfile);
DeviceProfile createdDeviceProfile = deviceProfileService.findOrCreateDeviceProfile(tenantId, "default");
Assert.assertNotNull(createdDeviceProfile);
Assert.assertEquals("default", createdDeviceProfile.getName());
Assert.assertFalse(createdDeviceProfile.isDefault());
}
@Ignore
@Test
public void testChangeDeviceProfileTypeWithExistingDevices() {

Loading…
Cancel
Save