public final class RegisterRules {
private DatabaseSessionFactory sessionFactory;
- private List<RuleRepository> repositories = new ArrayList<RuleRepository>();
+ private List<RuleRepository> repositories = Lists.newArrayList();
public RegisterRules(DatabaseSessionFactory sessionFactory, RuleRepository[] repos) {
this.sessionFactory = sessionFactory;
private void disableDeprecatedUserRules(DatabaseSession session) {
List<Integer> deprecatedUserRuleIds = Lists.newLinkedList();
deprecatedUserRuleIds.addAll(session.createQuery(
- "SELECT r.id FROM " + Rule.class.getSimpleName() +
- " r WHERE r.parent IS NOT NULL AND NOT EXISTS(FROM " + Rule.class.getSimpleName() + " p WHERE r.parent=p)").getResultList());
+ "SELECT r.id FROM " + Rule.class.getSimpleName() +
+ " r WHERE r.parent IS NOT NULL AND NOT EXISTS(FROM " + Rule.class.getSimpleName() + " p WHERE r.parent=p)").getResultList());
deprecatedUserRuleIds.addAll(session.createQuery(
- "SELECT r.id FROM " + Rule.class.getSimpleName() +
- " r WHERE r.parent IS NOT NULL AND EXISTS(FROM " + Rule.class.getSimpleName() + " p WHERE r.parent=p and p.enabled=false)").getResultList());
+ "SELECT r.id FROM " + Rule.class.getSimpleName() +
+ " r WHERE r.parent IS NOT NULL AND EXISTS(FROM " + Rule.class.getSimpleName() + " p WHERE r.parent=p and p.enabled=false)").getResultList());
for (Integer deprecatedUserRuleId : deprecatedUserRuleIds) {
Rule rule = session.getSingleResult(Rule.class, "id", deprecatedUserRuleId);
}
private void disableAllRules(DatabaseSession session) {
- session.createQuery("UPDATE " + Rule.class.getSimpleName() + " SET enabled=false WHERE parent IS NULL").executeUpdate();
+ // the hardcoded repository "review" is used for manual violations
+ session.createQuery("UPDATE " + Rule.class.getSimpleName() + " SET enabled=false WHERE parent IS NULL AND pluginName<>'review'").executeUpdate();
}
private void registerRepository(RuleRepository repository, DatabaseSession session) {
if (rule.getParam(persistedParam.getKey()) == null) {
it.remove();
session
- .createQuery("delete from " + ActiveRuleParam.class.getSimpleName() + " where ruleParam=:param")
- .setParameter("param", persistedParam)
- .executeUpdate();
+ .createQuery("delete from " + ActiveRuleParam.class.getSimpleName() + " where ruleParam=:param")
+ .setParameter("param", persistedParam)
+ .executeUpdate();
}
}
}
import static org.hamcrest.Matchers.is;
import static org.hamcrest.number.OrderingComparisons.greaterThan;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.*;
public class RegisterRulesTest extends AbstractDbUnitTestCase {
@Test
public void saveNewRepositories() {
setupData("shared");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new FakeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
task.start();
List<Rule> result = getSession().getResults(Rule.class, "pluginName", "fake");
@Test
public void disableDeprecatedRepositories() {
setupData("shared");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new FakeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
task.start();
List<Rule> rules = (List<Rule>) getSession()
- .createQuery("from " + Rule.class.getSimpleName() + " where pluginName<>'fake'")
- .getResultList();
+ .createQuery("from " + Rule.class.getSimpleName() + " where pluginName<>'fake'")
+ .getResultList();
assertThat(rules.size(), greaterThan(0));
for (Rule rule : rules) {
assertThat(rule.isEnabled(), is(false));
@Test
public void disableDeprecatedActiveRules() {
setupData("disableDeprecatedActiveRules");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new FakeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
task.start();
List<Rule> result = getSession().getResults(Rule.class, "pluginName", "fake");
@Test
public void disableDeprecatedActiveRuleParameters() {
setupData("disableDeprecatedActiveRuleParameters");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new FakeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
task.start();
ActiveRule arule = getSession().getSingleResult(ActiveRule.class, "id", 1);
@Test
public void disableDeprecatedRules() {
setupData("disableDeprecatedRules");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new FakeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
task.start();
Rule rule = getSession().getSingleResult(Rule.class, "id", 1);
@Test
public void updateRuleFields() {
setupData("updadeRuleFields");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new FakeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
task.start();
// fields have been updated with new values
@Test
public void updateRuleParameters() {
setupData("updateRuleParameters");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new FakeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
task.start();
Rule rule = getSession().getSingleResult(Rule.class, "id", 1);
@Test
public void doNotDisableUserRulesIfParentIsEnabled() {
setupData("doNotDisableUserRulesIfParentIsEnabled");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new FakeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
task.start();
Rule rule = getSession().getSingleResult(Rule.class, "id", 2);
@Test
public void disableUserRulesIfParentIsDisabled() {
setupData("disableUserRulesIfParentIsDisabled");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new FakeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
task.start();
Rule rule = getSession().getSingleResult(Rule.class, "id", 2);
assertThat(rule.isEnabled(), is(false));
}
+ @Test
+ public void shouldNotDisableReviewRules() {
+ // the hardcoded repository "review" is used for manual violations
+ setupData("shouldNotDisableReviewRules");
+
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new FakeRepository()});
+ task.start();
+
+ assertThat(getSession().getSingleResult(Rule.class, "id", 1).isEnabled(), is(true));
+ assertThat(getSession().getSingleResult(Rule.class, "id", 2).isEnabled(), is(false));
+ }
+
@Test
public void volumeTesting() {
setupData("shared");
- RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[] { new VolumeRepository() });
+ RegisterRules task = new RegisterRules(getSessionFactory(), new RuleRepository[]{new VolumeRepository()});
task.start();
List<Rule> result = getSession().getResults(Rule.class, "enabled", true);