From c20241ceef5a5c70e887c6f1246cdeda881698e2 Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Wed, 21 May 2014 10:01:56 +0200 Subject: [PATCH] SONAR-5237 - Added error message when activation=true with no qProfile --- .../java/org/sonar/server/rule2/index/RuleIndex.java | 3 +++ .../sonar/server/rule2/index/RuleIndexMediumTest.java | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java b/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java index c6dccda7012..9b9c7bef718 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/index/RuleIndex.java @@ -309,6 +309,9 @@ public class RuleIndex extends BaseIndex { QueryBuilders.matchAllQuery())); } else if(query.getActivation().equals("true")){ /** these are active rules for a given profile*/ + if(query.getQProfileKey() == null || query.getQProfileKey().isEmpty()){ + throw new IllegalStateException("qProfile is required when \"activation=true\""); + } fb.must(FilterBuilders.hasChildFilter(new ActiveRuleIndexDefinition().getIndexType(), QueryBuilders.termQuery(ActiveRuleNormalizer.ActiveRuleField.PROFILE_KEY.key(), query.getQProfileKey()))); diff --git a/sonar-server/src/test/java/org/sonar/server/rule2/index/RuleIndexMediumTest.java b/sonar-server/src/test/java/org/sonar/server/rule2/index/RuleIndexMediumTest.java index 23f79b9b35e..18e72e7df8f 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule2/index/RuleIndexMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule2/index/RuleIndexMediumTest.java @@ -410,7 +410,16 @@ public class RuleIndexMediumTest { assertThat(result.getHits()).hasSize(1); assertThat(result.getHits().get(0).name()).isEqualTo(rule3.getName()); - // 3. get all active rules. for qualityProfileDto2 + // 3. get all active rules missing profile. + try { + index.search(new RuleQuery().setActivation("true"), + new QueryOptions()); + fail(); + } catch (IllegalStateException e) { + assertThat(e).hasMessage("qProfile is required when \"activation=true\""); + } + + // 4. get all active rules. for qualityProfileDto2 result = index.search(new RuleQuery().setActivation("true") .setQProfileKey(qualityProfileDto2.getKey().toString()), new QueryOptions()); -- 2.39.5