diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-07-31 13:22:18 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-07-31 13:22:25 +0200 |
commit | 86c81b2b63375bc87c52c4bebbefe62aa77a8bf7 (patch) | |
tree | 7a6d180fcff023231b84e3bfb63c62607ce4161d /server/sonar-server | |
parent | 981ba5f21600c0e10d8d37546cc8af86d315251e (diff) | |
download | sonarqube-86c81b2b63375bc87c52c4bebbefe62aa77a8bf7.tar.gz sonarqube-86c81b2b63375bc87c52c4bebbefe62aa77a8bf7.zip |
SONAR-5395 Fail to save a measure filter when name criteria contains a comma
Diffstat (limited to 'server/sonar-server')
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java | 17 | ||||
-rw-r--r-- | server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java | 34 |
2 files changed, 50 insertions, 1 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java b/server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java index ef1d68bd1c3..bb6dcdda810 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java +++ b/server/sonar-server/src/main/java/org/sonar/server/measure/MeasureFilterFactory.java @@ -62,7 +62,7 @@ public class MeasureFilterFactory implements ServerComponent { if (onBaseComponents != null) { filter.setOnBaseResourceChildren(Boolean.valueOf(onBaseComponents)); } - filter.setResourceName((String) properties.get("nameSearch")); + filter.setResourceName(toString(properties.get("nameSearch"))); filter.setResourceKey((String) properties.get("keySearch")); String onFavourites = (String) properties.get("onFavourites"); if (onFavourites != null) { @@ -204,4 +204,19 @@ public class MeasureFilterFactory implements ServerComponent { return null; } + @CheckForNull + public static String toString(@Nullable Object o) { + if (o != null) { + if (o instanceof List) { + return Joiner.on(",").join((List) o); + } else if (o instanceof String[]) { + // assume that it contains only strings + return Joiner.on(",").join((String[]) o); + } else { + return o.toString(); + } + } + return null; + } + } diff --git a/server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java index e653988c431..20cc5872bee 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/measure/MeasureFilterFactoryTest.java @@ -33,6 +33,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import static com.google.common.collect.Lists.newArrayList; import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; @@ -208,6 +209,39 @@ public class MeasureFilterFactoryTest { } @Test + public void name_conditions() { + MeasureFilterFactory factory = new MeasureFilterFactory(newMetricFinder(), system); + Map<String, Object> props = ImmutableMap.<String, Object>of( + "nameSearch", "SonarQube" + ); + MeasureFilter filter = factory.create(props); + + assertThat(filter.getResourceName()).isEqualTo("SonarQube"); + } + + @Test + public void not_fail_when_name_conditions_contains_array() { + MeasureFilterFactory factory = new MeasureFilterFactory(newMetricFinder(), system); + Map<String, Object> props = ImmutableMap.<String, Object>of( + "nameSearch", new String[]{"sonar", "qube"} + ); + MeasureFilter filter = factory.create(props); + + assertThat(filter.getResourceName()).isEqualTo("sonar,qube"); + } + + @Test + public void not_fail_when_name_conditions_contains_list() { + MeasureFilterFactory factory = new MeasureFilterFactory(newMetricFinder(), system); + Map<String, Object> props = ImmutableMap.<String, Object>of( + "nameSearch", newArrayList("sonar", "qube") + ); + MeasureFilter filter = factory.create(props); + + assertThat(filter.getResourceName()).isEqualTo("sonar,qube"); + } + + @Test public void ignore_partial_measure_condition() { MeasureFilterFactory factory = new MeasureFilterFactory(newMetricFinder(), system); Map<String, Object> props = ImmutableMap.<String, Object>of( |