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");
 | 
			
		||||
        AssetProfile assetProfile = findAssetProfileByName(tenantId, name, false);
 | 
			
		||||
        if (assetProfile == null) {
 | 
			
		||||
            boolean isDefault = "default".equals(name) && findDefaultAssetProfile(tenantId) == null;
 | 
			
		||||
            try {
 | 
			
		||||
                assetProfile = this.doCreateDefaultAssetProfile(tenantId, name, name.equals("default"), true);
 | 
			
		||||
                assetProfile = this.doCreateAssetProfile(tenantId, name, isDefault, true);
 | 
			
		||||
            } catch (DataValidationException e) {
 | 
			
		||||
                if (ASSET_PROFILE_WITH_SUCH_NAME_ALREADY_EXISTS.equals(e.getMessage())) {
 | 
			
		||||
                    assetProfile = findAssetProfileByName(tenantId, name, false);
 | 
			
		||||
@ -252,10 +253,10 @@ public class AssetProfileServiceImpl extends CachedVersionedEntityService<AssetP
 | 
			
		||||
    @Override
 | 
			
		||||
    public AssetProfile 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);
 | 
			
		||||
        AssetProfile assetProfile = new AssetProfile();
 | 
			
		||||
        assetProfile.setTenantId(tenantId);
 | 
			
		||||
 | 
			
		||||
@ -271,8 +271,9 @@ public class DeviceProfileServiceImpl extends CachedVersionedEntityService<Devic
 | 
			
		||||
        log.trace("Executing findOrCreateDefaultDeviceProfile");
 | 
			
		||||
        DeviceProfile deviceProfile = findDeviceProfileByName(tenantId, name, false);
 | 
			
		||||
        if (deviceProfile == null) {
 | 
			
		||||
            boolean isDefault = "default".equals(name) && findDefaultDeviceProfile(tenantId) == null;
 | 
			
		||||
            try {
 | 
			
		||||
                deviceProfile = this.doCreateDefaultDeviceProfile(tenantId, name, name.equals("default"), true);
 | 
			
		||||
                deviceProfile = this.doCreateDeviceProfile(tenantId, name, isDefault, true);
 | 
			
		||||
            } catch (DataValidationException e) {
 | 
			
		||||
                if (DEVICE_PROFILE_WITH_SUCH_NAME_ALREADY_EXISTS.equals(e.getMessage())) {
 | 
			
		||||
                    deviceProfile = findDeviceProfileByName(tenantId, name, false);
 | 
			
		||||
@ -287,10 +288,10 @@ public class DeviceProfileServiceImpl extends CachedVersionedEntityService<Devic
 | 
			
		||||
    @Override
 | 
			
		||||
    public DeviceProfile 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);
 | 
			
		||||
        DeviceProfile deviceProfile = new DeviceProfile();
 | 
			
		||||
        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
 | 
			
		||||
    public void testDeleteAssetProfileWithExistingAsset() {
 | 
			
		||||
        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
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testChangeDeviceProfileTypeWithExistingDevices() {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user