From f37c53c0666780053b309d7bc78023517ce942de Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Tue, 22 Apr 2014 09:46:20 +0200 Subject: [PATCH] fix issue searching rule by debt (with @julienlancelot) --- .../main/java/org/sonar/server/rule/RuleRegistry.java | 6 ++++-- .../java/org/sonar/server/rule/RuleRegistryTest.java | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/rule/RuleRegistry.java b/sonar-server/src/main/java/org/sonar/server/rule/RuleRegistry.java index 36ac539e5b9..07215e3c0d2 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule/RuleRegistry.java +++ b/sonar-server/src/main/java/org/sonar/server/rule/RuleRegistry.java @@ -416,8 +416,10 @@ public class RuleRegistry { } if (!query.debtCharacteristics().isEmpty()) { - mainFilter.must(FilterBuilders.queryFilter( - QueryBuilders.multiMatchQuery(query.debtCharacteristics(), RuleDocument.FIELD_CHARACTERISTIC_KEY, RuleDocument.FIELD_SUB_CHARACTERISTIC_KEY).operator(Operator.OR))); + BoolFilterBuilder debtFilter = boolFilter(); + debtFilter.should(termsFilter(RuleDocument.FIELD_CHARACTERISTIC_KEY, query.debtCharacteristics())); + debtFilter.should(termsFilter(RuleDocument.FIELD_SUB_CHARACTERISTIC_KEY, query.debtCharacteristics())); + mainFilter.must(debtFilter); } if (query.hasDebtCharacteristic() != null) { diff --git a/sonar-server/src/test/java/org/sonar/server/rule/RuleRegistryTest.java b/sonar-server/src/test/java/org/sonar/server/rule/RuleRegistryTest.java index 6120390982a..f4a297a029f 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule/RuleRegistryTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule/RuleRegistryTest.java @@ -373,7 +373,7 @@ public class RuleRegistryTest { public void display_disabled_rule() { assertThat(registry.findIds(ImmutableMap.of("status", "BETA|REMOVED"))).containsOnly(2, 50); } - + @Test public void find_rules_by_name_with_number_in_name() { registry.reindex(new RuleDto().setId(10).setRepositoryKey("repo").setRuleKey("rule1").setName("MyRule 1").setSeverity(Severity.MINOR)); @@ -381,7 +381,7 @@ public class RuleRegistryTest { System.out.println("MY RESULT: " + registry.find(RuleQuery.builder().searchQuery("MyRule 1").build()).results()); assertThat(registry.find(RuleQuery.builder().searchQuery("MyRule 1").build()).results()).hasSize(1); } - + @Test public void find_rule_by_key() { assertThat(registry.findByKey(RuleKey.of("unknown", "RuleWithParameters"))).isNull(); @@ -394,7 +394,7 @@ public class RuleRegistryTest { assertThat(rule.adminTags()).hasSize(1); assertThat(rule.systemTags()).hasSize(2); } - + @Test public void filter_on_name_or_key() throws Exception { assertThat(registry.findIds(ImmutableMap.of("nameOrKey", "parameters"))).containsOnly(1); @@ -485,8 +485,9 @@ public class RuleRegistryTest { public void find_rules_by_characteristics() { assertThat(registry.find(RuleQuery.builder().debtCharacteristics(newArrayList("MODULARITY")).build()).results()).hasSize(1); assertThat(registry.find(RuleQuery.builder().debtCharacteristics(newArrayList("REUSABILITY")).build()).results()).hasSize(1); + assertThat(registry.find(RuleQuery.builder().debtCharacteristics(newArrayList("PORTABILITY")).build()).results()).hasSize(1); // FIXME query has to be updated -// assertThat(registry.find(RuleQuery.builder().debtCharacteristics(newArrayList("MODULARITY", "PORTABILITY")).build()).results()).hasSize(2); + assertThat(registry.find(RuleQuery.builder().debtCharacteristics(newArrayList("MODULARITY", "PORTABILITY")).build()).results()).hasSize(2); assertThat(registry.find(RuleQuery.builder().debtCharacteristics(newArrayList("MODULARITY", "REUSABILITY")).build()).results()).hasSize(1); assertThat(registry.find(RuleQuery.builder().debtCharacteristics(newArrayList("unknown")).build()).results()).isEmpty(); } -- 2.39.5