aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-01-21 11:56:40 +0100
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-01-21 11:56:50 +0100
commitd5307d737ddd48f49d32efb061124eadde033ed7 (patch)
treedc4667b76f524cdd3d229c752f1ce7c72c935dea
parent0f8f3e9a7dd44b1347cbc5cd414db3927b79d1e5 (diff)
downloadsonarqube-d5307d737ddd48f49d32efb061124eadde033ed7.tar.gz
sonarqube-d5307d737ddd48f49d32efb061124eadde033ed7.zip
SONAR-4923 Fix parent update where active rules from previous parent were not disabled
-rw-r--r--sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileOperations.java7
1 files changed, 4 insertions, 3 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 31541922c98..96d55cf235c 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
@@ -178,12 +178,13 @@ public class QProfileOperations implements ServerComponent {
if (isCycle(profile, parentProfile, session)) {
throw new BadRequestException("Please do not select a child profile as parent.");
}
- String parentName = parentProfile != null ? parentProfile.getName() : null;
- profile.setParent(parentName);
+ String newParentName = parentProfile != null ? parentProfile.getName() : null;
+ // Modification of inheritance has to be done before setting new parent name in order to be able to disable rules from old parent
+ ProfilesManager.RuleInheritanceActions actions = profilesManager.profileParentChanged(profile.getId(), newParentName, userSession.name());
+ profile.setParent(newParentName);
dao.update(profile, session);
session.commit();
- ProfilesManager.RuleInheritanceActions actions = profilesManager.profileParentChanged(profile.getId(), parentName, userSession.name());
ruleRegistry.deleteActiveRules(actions.idsToDelete());
ruleRegistry.bulkIndexActiveRuleIds(actions.idsToIndex(), session);
} finally {