Merge pull request #10901 from imbeacon/fix/profiles-creation-with-default-name-but-default-profile-exists
Fixed creation of profiles with name "default" and existing default renamed profile
This commit is contained in:
commit
0a5a60cded
@ -236,8 +236,9 @@ public class AssetProfileServiceImpl extends CachedVersionedEntityService<AssetP
|
|||||||
log.trace("Executing findOrCreateAssetProfile");
|
log.trace("Executing findOrCreateAssetProfile");
|
||||||
AssetProfile assetProfile = findAssetProfileByName(tenantId, name, false);
|
AssetProfile assetProfile = findAssetProfileByName(tenantId, name, false);
|
||||||
if (assetProfile == null) {
|
if (assetProfile == null) {
|
||||||
|
boolean isDefault = "default".equals(name) && findDefaultAssetProfile(tenantId) == null;
|
||||||
try {
|
try {
|
||||||
assetProfile = this.doCreateDefaultAssetProfile(tenantId, name, name.equals("default"), true);
|
assetProfile = this.doCreateAssetProfile(tenantId, name, isDefault, true);
|
||||||
} catch (DataValidationException e) {
|
} catch (DataValidationException e) {
|
||||||
if (ASSET_PROFILE_WITH_SUCH_NAME_ALREADY_EXISTS.equals(e.getMessage())) {
|
if (ASSET_PROFILE_WITH_SUCH_NAME_ALREADY_EXISTS.equals(e.getMessage())) {
|
||||||
assetProfile = findAssetProfileByName(tenantId, name, false);
|
assetProfile = findAssetProfileByName(tenantId, name, false);
|
||||||
@ -252,10 +253,10 @@ public class AssetProfileServiceImpl extends CachedVersionedEntityService<AssetP
|
|||||||
@Override
|
@Override
|
||||||
public AssetProfile createDefaultAssetProfile(TenantId tenantId) {
|
public AssetProfile createDefaultAssetProfile(TenantId tenantId) {
|
||||||
log.trace("Executing createDefaultAssetProfile tenantId [{}]", tenantId);
|
log.trace("Executing createDefaultAssetProfile tenantId [{}]", tenantId);
|
||||||
return doCreateDefaultAssetProfile(tenantId, "default", true, false);
|
return doCreateAssetProfile(tenantId, "default", true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private AssetProfile doCreateDefaultAssetProfile(TenantId tenantId, String profileName, boolean defaultProfile, boolean publishSaveEvent) {
|
private AssetProfile doCreateAssetProfile(TenantId tenantId, String profileName, boolean defaultProfile, boolean publishSaveEvent) {
|
||||||
validateId(tenantId, id -> INCORRECT_TENANT_ID + id);
|
validateId(tenantId, id -> INCORRECT_TENANT_ID + id);
|
||||||
AssetProfile assetProfile = new AssetProfile();
|
AssetProfile assetProfile = new AssetProfile();
|
||||||
assetProfile.setTenantId(tenantId);
|
assetProfile.setTenantId(tenantId);
|
||||||
|
|||||||
@ -271,8 +271,9 @@ public class DeviceProfileServiceImpl extends CachedVersionedEntityService<Devic
|
|||||||
log.trace("Executing findOrCreateDefaultDeviceProfile");
|
log.trace("Executing findOrCreateDefaultDeviceProfile");
|
||||||
DeviceProfile deviceProfile = findDeviceProfileByName(tenantId, name, false);
|
DeviceProfile deviceProfile = findDeviceProfileByName(tenantId, name, false);
|
||||||
if (deviceProfile == null) {
|
if (deviceProfile == null) {
|
||||||
|
boolean isDefault = "default".equals(name) && findDefaultDeviceProfile(tenantId) == null;
|
||||||
try {
|
try {
|
||||||
deviceProfile = this.doCreateDefaultDeviceProfile(tenantId, name, name.equals("default"), true);
|
deviceProfile = this.doCreateDeviceProfile(tenantId, name, isDefault, true);
|
||||||
} catch (DataValidationException e) {
|
} catch (DataValidationException e) {
|
||||||
if (DEVICE_PROFILE_WITH_SUCH_NAME_ALREADY_EXISTS.equals(e.getMessage())) {
|
if (DEVICE_PROFILE_WITH_SUCH_NAME_ALREADY_EXISTS.equals(e.getMessage())) {
|
||||||
deviceProfile = findDeviceProfileByName(tenantId, name, false);
|
deviceProfile = findDeviceProfileByName(tenantId, name, false);
|
||||||
@ -287,10 +288,10 @@ public class DeviceProfileServiceImpl extends CachedVersionedEntityService<Devic
|
|||||||
@Override
|
@Override
|
||||||
public DeviceProfile createDefaultDeviceProfile(TenantId tenantId) {
|
public DeviceProfile createDefaultDeviceProfile(TenantId tenantId) {
|
||||||
log.trace("Executing createDefaultDeviceProfile tenantId [{}]", tenantId);
|
log.trace("Executing createDefaultDeviceProfile tenantId [{}]", tenantId);
|
||||||
return doCreateDefaultDeviceProfile(tenantId, "default", true, false);
|
return doCreateDeviceProfile(tenantId, "default", true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private DeviceProfile doCreateDefaultDeviceProfile(TenantId tenantId, String profileName, boolean defaultProfile, boolean publishSaveEvent) {
|
private DeviceProfile doCreateDeviceProfile(TenantId tenantId, String profileName, boolean defaultProfile, boolean publishSaveEvent) {
|
||||||
validateId(tenantId, id -> INCORRECT_TENANT_ID + id);
|
validateId(tenantId, id -> INCORRECT_TENANT_ID + id);
|
||||||
DeviceProfile deviceProfile = new DeviceProfile();
|
DeviceProfile deviceProfile = new DeviceProfile();
|
||||||
deviceProfile.setTenantId(tenantId);
|
deviceProfile.setTenantId(tenantId);
|
||||||
|
|||||||
@ -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
|
@Test
|
||||||
public void testDeleteAssetProfileWithExistingAsset() {
|
public void testDeleteAssetProfileWithExistingAsset() {
|
||||||
AssetProfile assetProfile = this.createAssetProfile(tenantId, "Asset Profile");
|
AssetProfile assetProfile = this.createAssetProfile(tenantId, "Asset Profile");
|
||||||
|
|||||||
@ -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
|
@Ignore
|
||||||
@Test
|
@Test
|
||||||
public void testChangeDeviceProfileTypeWithExistingDevices() {
|
public void testChangeDeviceProfileTypeWithExistingDevices() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user