diff options
Diffstat (limited to 'sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java')
-rw-r--r-- | sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java b/sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java index 3d63834ca61..f597ee3214b 100644 --- a/sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java +++ b/sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java @@ -52,12 +52,12 @@ public final class ActivateDefaultProfiles { RulesProfile profileToActivate = null; boolean oneProfileIsActivated = false; if (profiles.isEmpty()) { - profileToActivate = new RulesProfile("Default " + language.getName(), language.getKey(), true, false); - + profileToActivate = RulesProfile.create("Default " + language.getName(), language.getKey()); + profileToActivate.setDefaultProfile(true); + profileToActivate.setProvided(false); } else if (profiles.size() == 1) { profileToActivate = profiles.get(0); - - } else { + } else if (!activeProfileFoundInDB(profiles)) { Iterator<RulesProfile> iterator = profiles.iterator(); while (iterator.hasNext() && !oneProfileIsActivated) { RulesProfile profile = iterator.next(); @@ -66,10 +66,8 @@ public final class ActivateDefaultProfiles { profileToActivate = profile; } } - if (!oneProfileIsActivated) { - if (profileToActivate == null) { - profileToActivate = profiles.get(0); - } + if (!oneProfileIsActivated && profileToActivate == null) { + profileToActivate = profiles.get(0); } } if (!oneProfileIsActivated && profileToActivate != null) { @@ -77,4 +75,13 @@ public final class ActivateDefaultProfiles { session.saveWithoutFlush(profileToActivate); } } + + private boolean activeProfileFoundInDB(List<RulesProfile> profiles) { + for (RulesProfile rulesProfile : profiles) { + if (rulesProfile.getDefaultProfile()) { + return true; + } + } + return false; + } } |