From 48ab2a3305dc950c7895ff9e78bb43f894813a5e Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Mon, 18 Mar 2013 11:10:04 +0100 Subject: [PATCH] Fix regression when importing user rules and language was not set --- .../main/java/org/sonar/api/rules/Rule.java | 3 +- .../server/configuration/RulesBackup.java | 5 ++ .../server/configuration/RulesBackupTest.java | 47 ++++++++++--------- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/rules/Rule.java b/sonar-plugin-api/src/main/java/org/sonar/api/rules/Rule.java index 56e7cc016d3..e91c724567c 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/rules/Rule.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/rules/Rule.java @@ -438,8 +438,9 @@ public final class Rule { * For internal use only. * @since 3.6 */ - public void setLanguage(String language) { + public Rule setLanguage(String language) { this.language = language; + return this; } @Override diff --git a/sonar-server/src/main/java/org/sonar/server/configuration/RulesBackup.java b/sonar-server/src/main/java/org/sonar/server/configuration/RulesBackup.java index 8617a9cfce0..446f2f36b66 100644 --- a/sonar-server/src/main/java/org/sonar/server/configuration/RulesBackup.java +++ b/sonar-server/src/main/java/org/sonar/server/configuration/RulesBackup.java @@ -36,6 +36,7 @@ import org.sonar.core.rule.RuleStatus; import org.sonar.jpa.dao.RulesDao; import java.util.Collection; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -110,6 +111,7 @@ public class RulesBackup implements Backupable { } rule.setParent(matchingParentRuleInDb); + rule.setLanguage(matchingParentRuleInDb.getLanguage()); Rule matchingRuleInDb = session.getSingleResult(Rule.class, "pluginName", rule.getRepositoryKey(), "key", rule.getKey()); @@ -122,9 +124,12 @@ public class RulesBackup implements Backupable { matchingRuleInDb.setSeverity(rule.getSeverity()); matchingRuleInDb.setParams(rule.getParams()); matchingRuleInDb.setStatus(Status.READY.name()); + matchingRuleInDb.setLanguage(rule.getLanguage()); + matchingRuleInDb.setUpdatedAt(new Date()); session.save(matchingRuleInDb); } else { rule.setStatus(Status.READY.name()); + rule.setCreatedAt(new Date()); session.save(rule); } } diff --git a/sonar-server/src/test/java/org/sonar/server/configuration/RulesBackupTest.java b/sonar-server/src/test/java/org/sonar/server/configuration/RulesBackupTest.java index 49fca44c771..ebcc3cd99b4 100644 --- a/sonar-server/src/test/java/org/sonar/server/configuration/RulesBackupTest.java +++ b/sonar-server/src/test/java/org/sonar/server/configuration/RulesBackupTest.java @@ -47,18 +47,10 @@ public class RulesBackupTest extends AbstractDbUnitTestCase { rulesBackup = new RulesBackup(getSession()); sonarConfig = new SonarConfig(); - rule = Rule.create("repo", "key", "name").setDescription("description"); + rule = Rule.create("repo", "key", "name").setDescription("description").setLanguage("language"); rule.createParameter("param").setDefaultValue("value"); } - private Rule createUserRule() { - Rule userRule = Rule.create("repo", "key2", "name2").setDescription("description2"); - userRule.setParent(rule); - userRule.setSeverity(RulePriority.INFO); - userRule.createParameter("param").setDefaultValue("value"); - return userRule; - } - @Test public void shouldExportRules() { Rule userRule = createUserRule(); @@ -78,20 +70,6 @@ public class RulesBackupTest extends AbstractDbUnitTestCase { verify(); } - private void verify() { - assertThat(getSession().getResults(Rule.class).size(), is(2)); - Rule importedRule = new RulesDao(getSession()).getRuleByKey("repo", "key2"); - assertThat(importedRule.getParent(), is(rule)); - assertThat(importedRule.isEnabled(), is(true)); - assertThat(importedRule.getName(), is("name2")); - assertThat(importedRule.getDescription(), is("description2")); - assertThat(importedRule.getSeverity(), is(RulePriority.INFO)); - assertThat(importedRule.getParams().size(), is(1)); - RuleParam param = importedRule.getParams().get(0); - assertThat(param.getKey(), is("param")); - assertThat(param.getDefaultValue(), is("value")); - } - @Test public void shouldUpdateRules() { getSession().save(rule); @@ -124,4 +102,27 @@ public class RulesBackupTest extends AbstractDbUnitTestCase { assertThat(importedRule, notNullValue()); assertThat(rulesDao.getRuleParam(importedRule, "param"), nullValue()); } + + private Rule createUserRule() { + Rule userRule = Rule.create("repo", "key2", "name2").setDescription("description2"); + userRule.setParent(rule); + userRule.setSeverity(RulePriority.INFO); + userRule.createParameter("param").setDefaultValue("value"); + return userRule; + } + + private void verify() { + assertThat(getSession().getResults(Rule.class).size(), is(2)); + Rule importedRule = new RulesDao(getSession()).getRuleByKey("repo", "key2"); + assertThat(importedRule.getParent(), is(rule)); + assertThat(importedRule.isEnabled(), is(true)); + assertThat(importedRule.getName(), is("name2")); + assertThat(importedRule.getDescription(), is("description2")); + assertThat(importedRule.getSeverity(), is(RulePriority.INFO)); + assertThat(importedRule.getParams().size(), is(1)); + assertThat(importedRule.getLanguage(), is("language")); + RuleParam param = importedRule.getParams().get(0); + assertThat(param.getKey(), is("param")); + assertThat(param.getDefaultValue(), is("value")); + } } -- 2.39.5