]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3879 Template rules status should not updated to their parent status
authorJulien Lancelot <julien.lancelot@gmail.com>
Wed, 19 Jun 2013 16:21:49 +0000 (18:21 +0200)
committerJulien Lancelot <julien.lancelot@gmail.com>
Wed, 19 Jun 2013 16:21:49 +0000 (18:21 +0200)
sonar-server/src/main/java/org/sonar/server/startup/RegisterRules.java
sonar-server/src/main/webapp/WEB-INF/db/migrate/381_update_rules_status.rb
sonar-server/src/test/java/org/sonar/server/startup/RegisterRulesTest.java

index 5a06588e1b974e1bf0ed141c517a5d2e4835f668..79a340d316ba9fb31085b11096077a6adc4ee9a5 100644 (file)
@@ -121,7 +121,7 @@ public final class RegisterRules {
   }
 
   /**
-   * Template rules do not exists in the rule repository, only in database, but have to be updated from their parent rule.
+   * Template rules do not exists in rule repositories, only in database, they have to be updated from their parent.
    */
   private List<Rule> registerTemplateRules(List<Rule> registeredRules, RulesByRepository existingRules, DatabaseSession session) {
     List<Rule> templateRules = newArrayList();
@@ -130,7 +130,8 @@ public final class RegisterRules {
       if (parent != null && registeredRules.contains(parent)) {
         persistedRule.setRepositoryKey(parent.getRepositoryKey());
         persistedRule.setLanguage(parent.getLanguage());
-        persistedRule.setStatus(parent.getStatus());
+        persistedRule.setStatus(Objects.firstNonNull(persistedRule.getStatus(), Rule.STATUS_READY));
+        persistedRule.setCreatedAt(Objects.firstNonNull(persistedRule.getCreatedAt(), new Date()));
         persistedRule.setUpdatedAt(new Date());
 
         session.saveWithoutFlush(persistedRule);
index 909af4ce70147295e6472863bdcf04b80af8eedd..a159accc66bf19498fb6f243252baaa0490d7a22 100644 (file)
@@ -29,7 +29,7 @@ class UpdateRulesStatus < ActiveRecord::Migration
   def self.up
     Rule.reset_column_information
     Rule.update_all({:status => 'READY', :created_at => Time.now}, ['enabled=?', true])
-    Rule.update_all({:status => 'REMOVED', :updated_at => Time.now}, ['enabled=?', false])
+    Rule.update_all({:status => 'REMOVED', :created_at => Time.now, :updated_at => Time.now}, ['enabled=?', false])
   end
 
 end
index ff1b6f4f10b28432dff148232634f5ec60b9102f..abadc622f8263bdda58db49ab8e4505e64492416 100644 (file)
@@ -83,8 +83,8 @@ public class RegisterRulesTest extends AbstractDbUnitTestCase {
     rule = getSession().getSingleResult(Rule.class, "id", 4);
     assertThat(rule.getRepositoryKey(), is("fake"));
     assertThat(rule.getLanguage(), is("java"));
-    // Status was READY in db, but parent status is now DEPRECATED
-    assertThat(rule.getStatus(), is(Rule.STATUS_DEPRECATED));
+    // parent status is now DEPRECATED but template should not be changed
+    assertThat(rule.getStatus(), is(Rule.STATUS_READY));
   }
 
   @Test
@@ -121,12 +121,12 @@ public class RegisterRulesTest extends AbstractDbUnitTestCase {
   }
 
   @Test
-  public void should_reactivate_disabled_template_rules() {
+  public void should_not_reactivate_disabled_template_rules() {
     setupData("should_reactivate_disabled_template_rules");
     task.start();
 
     Rule rule = getSession().getSingleResult(Rule.class, "id", 2);
-    assertThat(rule.getStatus(), is(Rule.STATUS_READY));
+    assertThat(rule.getStatus(), is(Rule.STATUS_REMOVED));
     assertThat(rule.getUpdatedAt(), notNullValue());
   }