summaryrefslogtreecommitdiffstats
path: root/sonar-server/src
diff options
context:
space:
mode:
authorStephane Gamard <stephane.gamard@searchbox.com>2014-07-07 16:41:36 +0200
committerStephane Gamard <stephane.gamard@searchbox.com>2014-07-07 16:41:36 +0200
commit62f864da77f43b056b98b78932b1d20860da26b4 (patch)
tree59361c70eb57bd91297d237dfa3e75393a5b5bc7 /sonar-server/src
parentc4e562cb2fad74318b6a9bf733a0909263ff0271 (diff)
downloadsonarqube-62f864da77f43b056b98b78932b1d20860da26b4.tar.gz
sonarqube-62f864da77f43b056b98b78932b1d20860da26b4.zip
SONAR-5007 - Fixed hasDebt filter in RuleIndex
Diffstat (limited to 'sonar-server/src')
-rw-r--r--sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java18
-rw-r--r--sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java16
2 files changed, 22 insertions, 12 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java b/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java
index df2756104bc..3906b7f27fd 100644
--- a/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java
+++ b/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java
@@ -58,7 +58,6 @@ import org.sonar.server.search.QueryOptions;
import org.sonar.server.search.Result;
import javax.annotation.CheckForNull;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -233,16 +232,16 @@ public class RuleIndex extends BaseIndex<Rule, RuleDto, RuleKey> {
if (debtCharacteristics != null && !debtCharacteristics.isEmpty()) {
fb.must(
FilterBuilders.orFilter(
- // Match only when NOT NONE overriden
+ // Match only when NONE (overridden)
FilterBuilders.andFilter(
FilterBuilders.notFilter(
FilterBuilders.termsFilter(RuleNormalizer.RuleField.SUB_CHARACTERISTIC.field(), DebtCharacteristic.NONE)),
FilterBuilders.orFilter(
FilterBuilders.termsFilter(RuleNormalizer.RuleField.SUB_CHARACTERISTIC.field(), debtCharacteristics),
FilterBuilders.termsFilter(RuleNormalizer.RuleField.CHARACTERISTIC.field(), debtCharacteristics))
- ),
+ ),
- // Match only when NOT NONE overriden
+ // Match only when NOT NONE (not overridden)
FilterBuilders.andFilter(
FilterBuilders.orFilter(
FilterBuilders.termsFilter(RuleNormalizer.RuleField.SUB_CHARACTERISTIC.field(), ""),
@@ -250,14 +249,19 @@ public class RuleIndex extends BaseIndex<Rule, RuleDto, RuleKey> {
FilterBuilders.orFilter(
FilterBuilders.termsFilter(RuleNormalizer.RuleField.DEFAULT_SUB_CHARACTERISTIC.field(), debtCharacteristics),
FilterBuilders.termsFilter(RuleNormalizer.RuleField.DEFAULT_CHARACTERISTIC.field(), debtCharacteristics)))
- )
- );
+ )
+ );
}
// Debt char exist filter
Boolean hasDebtCharacteristic = query.getHasDebtCharacteristic();
if (hasDebtCharacteristic != null && hasDebtCharacteristic) {
- fb.must(FilterBuilders.existsFilter(RuleNormalizer.RuleField.SUB_CHARACTERISTIC.field()));
+ fb.mustNot(
+ FilterBuilders.termsFilter(RuleNormalizer.RuleField.SUB_CHARACTERISTIC.field(), DebtCharacteristic.NONE))
+ .should(
+ FilterBuilders.existsFilter(RuleNormalizer.RuleField.SUB_CHARACTERISTIC.field()))
+ .should(
+ FilterBuilders.existsFilter(RuleNormalizer.RuleField.DEFAULT_SUB_CHARACTERISTIC.field()));
}
if (query.getAvailableSince() != null) {
diff --git a/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java b/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java
index f6fd64b2513..3b3950d6993 100644
--- a/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java
+++ b/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java
@@ -24,7 +24,10 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import org.apache.commons.lang.time.DateUtils;
-import org.junit.*;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.RuleStatus;
import org.sonar.api.rule.Severity;
@@ -47,8 +50,12 @@ import org.sonar.server.search.Result;
import org.sonar.server.tester.ServerTester;
import javax.annotation.Nullable;
-
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
import static org.fest.assertions.Assertions.assertThat;
@@ -284,8 +291,7 @@ public class RuleIndexMediumTest {
}
@Test
- @Ignore("To be fixed")
- public void search_by_has_debt_characteristic() {
+ public void search_by_has_debt_characteristic() throws InterruptedException {
CharacteristicDto char1 = DebtTesting.newCharacteristicDto("c1")
.setEnabled(true)
.setName("char1");