From 126f70ea1f80a6a74d1734655c1da799df07f774 Mon Sep 17 00:00:00 2001 From: Duarte Meneses Date: Tue, 24 Apr 2018 10:57:51 +0200 Subject: [PATCH] SONAR-10575 fix flag to include external rules in rules search --- .../sonar/server/rule/index/RuleIndex.java | 6 +-- .../sonar/server/rule/index/RuleQuery.java | 6 +-- .../sonar/server/rule/ws/SearchAction.java | 2 +- .../server/rule/index/RuleIndexTest.java | 46 ++----------------- .../server/rule/ws/RuleQueryFactoryTest.java | 4 +- 5 files changed, 14 insertions(+), 50 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java b/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java index c1c2404d838..778563bb1c7 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java +++ b/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java @@ -302,10 +302,10 @@ public class RuleIndex { QueryBuilders.termQuery(FIELD_RULE_IS_TEMPLATE, Boolean.toString(isTemplate))); } - Boolean isExternal = query.includeExternal(); - if (isExternal != null) { + boolean includeExternal = query.includeExternal(); + if (!includeExternal) { filters.put(FIELD_RULE_IS_EXTERNAL, - QueryBuilders.termQuery(FIELD_RULE_IS_EXTERNAL, Boolean.toString(isExternal))); + QueryBuilders.termQuery(FIELD_RULE_IS_EXTERNAL, false)); } String template = query.templateKey(); diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleQuery.java b/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleQuery.java index b4565b7ed5f..3808c52531a 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleQuery.java +++ b/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleQuery.java @@ -54,7 +54,7 @@ public class RuleQuery { private String internalKey; private String ruleKey; private OrganizationDto organization; - private Boolean includeExternal; + private boolean includeExternal; @CheckForNull public QProfileDto getQProfile() { @@ -206,11 +206,11 @@ public class RuleQuery { return this; } - public Boolean includeExternal() { + public boolean includeExternal() { return includeExternal; } - public RuleQuery setIncludeExternal(@Nullable Boolean b) { + public RuleQuery setIncludeExternal(boolean b) { this.includeExternal = b; return this; } diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/SearchAction.java index fcb44a3f5f7..99f2bec9699 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/SearchAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/SearchAction.java @@ -135,7 +135,7 @@ public class SearchAction implements RulesWsAction { .setChangelog(new Change("7.1", "The field 'scope' has been added to the response")) .setChangelog(new Change("7.1", "The field 'scope' has been added to the 'f' parameter")) .setChangelog(new Change("7.2", "The field 'isExternal' has been added to the response")) - .setChangelog(new Change("7.2", "The field 'isExternal' has been added to the 'f' parameter")); + .setChangelog(new Change("7.2", "The field 'includeExternal' has been added to the 'f' parameter")); action.createParam(FACETS) .setDescription("Comma-separated list of the facets to be computed. No facet is computed by default.") diff --git a/server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexTest.java b/server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexTest.java index 3c81b0748aa..51bd2f1dda8 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexTest.java @@ -40,9 +40,8 @@ import org.sonar.db.DbTester; import org.sonar.db.organization.OrganizationDto; import org.sonar.db.qualityprofile.QProfileDto; import org.sonar.db.rule.RuleDefinitionDto; -import org.sonar.db.rule.RuleDto; -import org.sonar.db.rule.RuleMetadataDto; import org.sonar.db.rule.RuleDto.Scope; +import org.sonar.db.rule.RuleMetadataDto; import org.sonar.server.es.EsTester; import org.sonar.server.es.Facets; import org.sonar.server.es.SearchIdResult; @@ -50,7 +49,6 @@ import org.sonar.server.es.SearchOptions; import org.sonar.server.qualityprofile.index.ActiveRuleIndexer; import static com.google.common.collect.ImmutableSet.of; -import static com.google.common.collect.Sets.newHashSet; import static java.util.Arrays.asList; import static java.util.Collections.emptyList; import static java.util.Collections.emptySet; @@ -67,8 +65,8 @@ import static org.sonar.api.rules.RuleType.BUG; import static org.sonar.api.rules.RuleType.CODE_SMELL; import static org.sonar.api.rules.RuleType.VULNERABILITY; import static org.sonar.db.rule.RuleTesting.setCreatedAt; -import static org.sonar.db.rule.RuleTesting.setIsTemplate; import static org.sonar.db.rule.RuleTesting.setIsExternal; +import static org.sonar.db.rule.RuleTesting.setIsTemplate; import static org.sonar.db.rule.RuleTesting.setLanguage; import static org.sonar.db.rule.RuleTesting.setName; import static org.sonar.db.rule.RuleTesting.setOrganization; @@ -217,30 +215,6 @@ public class RuleIndexTest { assertThat(results).containsOnly(rule.getId()); } - @Test - public void search_external_rule() { - - RuleDefinitionDto rule = new RuleDefinitionDto() - .setId(123) - .setRuleKey("S001") - .setRepositoryKey("external_xoo") - .setName("xoo:S001") - .setSeverity(Severity.BLOCKER) - .setStatus(RuleStatus.READY) - .setIsTemplate(false) - .setIsExternal(true) - .setType(RuleType.BUG) - .setScope(Scope.ALL) - .setCreatedAt(1500000000000L) - .setUpdatedAt(1600000000000L); - - db.rules().insert(rule); - index(); - - assertThat(underTest.search(new RuleQuery().setQueryText("external_xoo:S001"), new SearchOptions()).getIds()) - .containsExactlyInAnyOrder(rule.getId()); - } - @Test public void search_content_by_query() { RuleDefinitionDto rule1 = createJavaRule(rule -> rule.setRuleKey("123").setDescription("My great rule CWE-123 which makes your code 1000 times better!")); @@ -421,25 +395,15 @@ public class RuleIndexTest { RuleDefinitionDto ruleIsExternal = createRule(setIsExternal(true)); index(); - // find all - RuleQuery query = new RuleQuery(); - SearchIdResult results = underTest.search(query, new SearchOptions()); - assertThat(results.getIds()).hasSize(2); - // Only external - query = new RuleQuery().setIncludeExternal(true); - results = underTest.search(query, new SearchOptions()); - assertThat(results.getIds()).containsOnly(ruleIsExternal.getId()); + RuleQuery query = new RuleQuery().setIncludeExternal(true); + SearchIdResult results = underTest.search(query, new SearchOptions()); + assertThat(results.getIds()).containsOnly(ruleIsExternal.getId(), ruleIsNotExternal.getId()); // Only not external query = new RuleQuery().setIncludeExternal(false); results = underTest.search(query, new SearchOptions()); assertThat(results.getIds()).containsOnly(ruleIsNotExternal.getId()); - - // null => no filter - query = new RuleQuery().setIncludeExternal(null); - results = underTest.search(query, new SearchOptions()); - assertThat(results.getIds()).containsOnly(ruleIsExternal.getId(), ruleIsNotExternal.getId()); } @Test diff --git a/server/sonar-server/src/test/java/org/sonar/server/rule/ws/RuleQueryFactoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/rule/ws/RuleQueryFactoryTest.java index 6ed6c4f5f4b..4296f924633 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/rule/ws/RuleQueryFactoryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/rule/ws/RuleQueryFactoryTest.java @@ -101,7 +101,7 @@ public class RuleQueryFactoryTest { assertThat(result.isAscendingSort()).isTrue(); assertThat(result.getAvailableSinceLong()).isNull(); assertThat(result.getInheritance()).isNull(); - assertThat(result.includeExternal()).isNull(); + assertThat(result.includeExternal()).isFalse(); assertThat(result.isTemplate()).isNull(); assertThat(result.getLanguages()).isNull(); assertThat(result.getQueryText()).isNull(); @@ -191,7 +191,7 @@ public class RuleQueryFactoryTest { ASCENDING, "false"); assertResult(result, qualityProfile, compareToQualityProfile); - assertThat(result.includeExternal()).isNull(); + assertThat(result.includeExternal()).isFalse(); } private void assertResult(RuleQuery result, QProfileDto qualityProfile, QProfileDto compareToQualityProfile) { -- 2.39.5