]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10575 fix flag to include external rules in rules search
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Tue, 24 Apr 2018 08:57:51 +0000 (10:57 +0200)
committerSonarTech <sonartech@sonarsource.com>
Thu, 26 Apr 2018 18:20:53 +0000 (20:20 +0200)
server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java
server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleQuery.java
server/sonar-server/src/main/java/org/sonar/server/rule/ws/SearchAction.java
server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/ws/RuleQueryFactoryTest.java

index c1c2404d83853ee1d5efab6d9c83181f795c094b..778563bb1c73b5356f99937d71a7e15d2c518f0e 100644 (file)
@@ -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();
index b4565b7ed5f927846f5f43d4024fcfc63757004c..3808c52531a622a439286c0058dab3e3e045f097 100644 (file)
@@ -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;
   }
index fcb44a3f5f72e3f9e6e164f3119bb6ce6f69f625..99f2bec969981ce8b399a435121fededd01474b8 100644 (file)
@@ -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.")
index 3c81b0748aad03743c5a6e05f33459d64ed4ab48..51bd2f1dda86314199923c672b2f63acc3d0844e 100644 (file)
@@ -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<Integer> 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<Integer>  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
index 6ed6c4f5f4bdeeb0e1edba04408d7c56b488af8b..4296f924633b7e0d59fab335aabab17a9727dbf1 100644 (file)
@@ -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) {