From fa2be375fe709f6fcf037cb1dd8e2303a9a57366 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Fri, 21 Oct 2016 15:32:05 +0200 Subject: [PATCH] SONAR-8287 Hidden metrics should be allowed in project search action --- .../ws/ProjectMeasuresQueryValidator.java | 8 ++++---- .../ws/ProjectMeasuresQueryValidatorTest.java | 17 +++++------------ .../java/org/sonar/db/metric/MetricDto.java | 3 ++- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectMeasuresQueryValidator.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectMeasuresQueryValidator.java index 550a12fa8c2..fba71e464e4 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectMeasuresQueryValidator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ProjectMeasuresQueryValidator.java @@ -47,7 +47,7 @@ public class ProjectMeasuresQueryValidator { } List dbMetrics = dbClient.metricDao().selectByKeys(dbSession, new ArrayList<>(metricKeys)); checkMetricKeysExists(dbMetrics, metricKeys); - checkMetricsAreEnabledAndVisible(dbMetrics); + checkMetricsAreEnabled(dbMetrics); checkMetricsAreNumerics(dbMetrics); } @@ -59,13 +59,13 @@ public class ProjectMeasuresQueryValidator { } } - private static void checkMetricsAreEnabledAndVisible(List dbMetrics) { + private static void checkMetricsAreEnabled(List dbMetrics) { Set invalidKeys = dbMetrics.stream() - .filter(metricDto -> !metricDto.isEnabled() || metricDto.isHidden()) + .filter(metricDto -> !metricDto.isEnabled()) .map(MetricDto::getKey) .collect(Collectors.toSet()); if (!invalidKeys.isEmpty()) { - throw new IllegalArgumentException(String.format("Following metrics are disabled or hidden : %s", new TreeSet<>(invalidKeys))); + throw new IllegalArgumentException(String.format("Following metrics are disabled : %s", new TreeSet<>(invalidKeys))); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryValidatorTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryValidatorTest.java index ae6a6b612a0..618d8bc2532 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryValidatorTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryValidatorTest.java @@ -32,6 +32,7 @@ import org.sonar.db.metric.MetricDto; import static org.sonar.api.measures.Metric.ValueType.DATA; import static org.sonar.api.measures.Metric.ValueType.DISTRIB; import static org.sonar.api.measures.Metric.ValueType.INT; +import static org.sonar.api.measures.Metric.ValueType.STRING; import static org.sonar.api.measures.Metric.ValueType.WORK_DUR; import static org.sonar.db.metric.MetricTesting.newMetricDto; import static org.sonar.server.component.ws.ProjectMeasuresQueryFactory.newProjectMeasuresQuery; @@ -67,19 +68,11 @@ public class ProjectMeasuresQueryValidatorTest { insertMetric(createValidMetric("debt").setValueType(WORK_DUR.name())); insertMetric(createValidMetric("data").setValueType(DATA.name())); insertMetric(createValidMetric("distrib").setValueType(DISTRIB.name())); + insertMetric(createValidMetric("string").setValueType(STRING.name())); expectedException.expect(IllegalArgumentException.class); - expectedException.expectMessage("Following metrics are not numeric : [data, distrib]"); - validator.validate(dbSession, newProjectMeasuresQuery("data > 10 and distrib = 11 and ncloc <= 20 and debt < 30")); - } - - @Test - public void fail_when_metric_is_hidden() throws Exception { - insertMetric(createValidMetric("ncloc").setHidden(true)); - - expectedException.expect(IllegalArgumentException.class); - expectedException.expectMessage("Following metrics are disabled or hidden : [ncloc]"); - validator.validate(dbSession, newProjectMeasuresQuery("ncloc > 10")); + expectedException.expectMessage("Following metrics are not numeric : [data, distrib, string]"); + validator.validate(dbSession, newProjectMeasuresQuery("data > 10 and distrib = 11 and ncloc <= 20 and debt < 30 and string = 40")); } @Test @@ -87,7 +80,7 @@ public class ProjectMeasuresQueryValidatorTest { insertMetric(createValidMetric("ncloc").setEnabled(false)); expectedException.expect(IllegalArgumentException.class); - expectedException.expectMessage("Following metrics are disabled or hidden : [ncloc]"); + expectedException.expectMessage("Following metrics are disabled : [ncloc]"); validator.validate(dbSession, newProjectMeasuresQuery("ncloc > 10")); } diff --git a/sonar-db/src/main/java/org/sonar/db/metric/MetricDto.java b/sonar-db/src/main/java/org/sonar/db/metric/MetricDto.java index 7eafcc266c8..73d963d08a0 100644 --- a/sonar-db/src/main/java/org/sonar/db/metric/MetricDto.java +++ b/sonar-db/src/main/java/org/sonar/db/metric/MetricDto.java @@ -24,6 +24,7 @@ import javax.annotation.Nullable; import static org.sonar.api.measures.Metric.ValueType.DATA; import static org.sonar.api.measures.Metric.ValueType.DISTRIB; +import static org.sonar.api.measures.Metric.ValueType.STRING; public class MetricDto { @@ -212,7 +213,7 @@ public class MetricDto { } public boolean isDataType() { - return DATA.name().equals(valueType) || DISTRIB.name().equals(valueType); + return DATA.name().equals(valueType) || DISTRIB.name().equals(valueType) || STRING.name().equals(valueType); } } -- 2.39.5