summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-04-28 11:14:23 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-04-28 11:14:23 +0200
commit9f514af85b87f8196528ec1c666072784cced38e (patch)
tree920debf9a67a81816c6fd30a7903ef0dcacebf55
parentb70dfdca6c5c4dfd96869526a4efd1fd7f7eaab4 (diff)
downloadsonarqube-9f514af85b87f8196528ec1c666072784cced38e.tar.gz
sonarqube-9f514af85b87f8196528ec1c666072784cced38e.zip
SONAR-4764 When removing profile at startup, do not check if the profile is deletable or not
-rw-r--r--sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileOperations.java30
-rw-r--r--sonar-server/src/main/java/org/sonar/server/startup/RegisterQualityProfiles.java2
-rw-r--r--sonar-server/src/test/java/org/sonar/server/startup/RegisterQualityProfilesTest.java2
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();
}