From 9f514af85b87f8196528ec1c666072784cced38e Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Mon, 28 Apr 2014 11:14:23 +0200 Subject: [PATCH] SONAR-4764 When removing profile at startup, do not check if the profile is deletable or not --- .../qualityprofile/QProfileOperations.java | 30 +++++++++++-------- .../startup/RegisterQualityProfiles.java | 2 +- .../startup/RegisterQualityProfilesTest.java | 2 +- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileOperations.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileOperations.java index 8a3d850d7ab..d5ae6749c09 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileOperations.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileOperations.java @@ -131,25 +131,29 @@ public class QProfileOperations implements ServerComponent { checkPermission(userSession); SqlSession session = myBatis.openSession(); try { - deleteProfile(profileId, session); + QualityProfileDto profile = findNotNull(profileId, session); + QProfile qProfile = QProfile.from(profile); + if (!profileLookup.isDeletable(QProfile.from(profile), session)) { + throw new BadRequestException("This profile can not be deleted"); + } else { + deleteProfile(qProfile, session); + } session.commit(); } finally { MyBatis.closeQuietly(session); } } - public void deleteProfile(int profileId, SqlSession session) { - QualityProfileDto profile = findNotNull(profileId, session); - if (!profileLookup.isDeletable(QProfile.from(profile), session)) { - throw new BadRequestException("This profile can not be deleted"); - } else { - activeRuleDao.deleteParametersFromProfile(profile.getId(), session); - activeRuleDao.deleteFromProfile(profile.getId(), session); - dao.delete(profile.getId(), session); - propertiesDao.deleteProjectProperties(PROFILE_PROPERTY_PREFIX + profile.getLanguage(), profile.getName(), session); - esActiveRule.deleteActiveRulesFromProfile(profile.getId()); - dryRunCache.reportGlobalModification(session); - } + /** + * Delete profile without checking permission or that profile is existing or that profile can be deleted (is not defined as default, has no children, etc.) + */ + public void deleteProfile(QProfile profile, SqlSession session) { + activeRuleDao.deleteParametersFromProfile(profile.id(), session); + activeRuleDao.deleteFromProfile(profile.id(), session); + dao.delete(profile.id(), session); + propertiesDao.deleteProjectProperties(PROFILE_PROPERTY_PREFIX + profile.language(), profile.name(), session); + esActiveRule.deleteActiveRulesFromProfile(profile.id()); + dryRunCache.reportGlobalModification(session); } public void setDefaultProfile(int profileId, UserSession userSession) { diff --git a/sonar-server/src/main/java/org/sonar/server/startup/RegisterQualityProfiles.java b/sonar-server/src/main/java/org/sonar/server/startup/RegisterQualityProfiles.java index fb749814fa9..b9518b4bd5d 100644 --- a/sonar-server/src/main/java/org/sonar/server/startup/RegisterQualityProfiles.java +++ b/sonar-server/src/main/java/org/sonar/server/startup/RegisterQualityProfiles.java @@ -141,7 +141,7 @@ public class RegisterQualityProfiles { QProfile profile = qProfileLookup.profile(name, language, session); if (profile != null) { - qProfileOperations.deleteProfile(profile.id(), session); + qProfileOperations.deleteProfile(profile, session); } profile = qProfileOperations.newProfile(name, language, true, UserSession.get(), session); diff --git a/sonar-server/src/test/java/org/sonar/server/startup/RegisterQualityProfilesTest.java b/sonar-server/src/test/java/org/sonar/server/startup/RegisterQualityProfilesTest.java index 17ce3f6faf2..4925e238b21 100644 --- a/sonar-server/src/test/java/org/sonar/server/startup/RegisterQualityProfilesTest.java +++ b/sonar-server/src/test/java/org/sonar/server/startup/RegisterQualityProfilesTest.java @@ -324,7 +324,7 @@ public class RegisterQualityProfilesTest { registerQualityProfiles.start(); - verify(qProfileOperations).deleteProfile(anyInt(), eq(session)); + verify(qProfileOperations).deleteProfile(any(QProfile.class), eq(session)); verify(qProfileBackup).restoreFromActiveRules(eq(profile), eq(rulesProfile), eq(session)); verify(session).commit(); } -- 2.39.5