]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4764 When removing profile at startup, do not check if the profile is deletable...
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 28 Apr 2014 09:14:23 +0000 (11:14 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 28 Apr 2014 09:14:23 +0000 (11:14 +0200)
sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileOperations.java
sonar-server/src/main/java/org/sonar/server/startup/RegisterQualityProfiles.java
sonar-server/src/test/java/org/sonar/server/startup/RegisterQualityProfilesTest.java

index 8a3d850d7ab0b71113d3eae1acf1f9419edff9f1..d5ae6749c092c227627053f3ae03c6fe7a9bfee2 100644 (file)
@@ -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) {
index fb749814fa9002570942dca9ba5e3e5210bfad6f..b9518b4bd5d031155a2686e3623ff0310ecde0d5 100644 (file)
@@ -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);
 
index 17ce3f6faf2cf02c69957464917af99937a5cae6..4925e238b21433b31cf4cd9f3221503eea34ab9e 100644 (file)
@@ -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();
   }