diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2017-10-12 17:29:22 +0200 |
---|---|---|
committer | Teryk Bellahsene <teryk@users.noreply.github.com> | 2017-10-16 09:27:14 +0200 |
commit | 7f61d01d4fee20274e53f93c8fcbfd29f6f273be (patch) | |
tree | 94a665ba199be1baf1f9c698460033480f3a6c8e | |
parent | e124398d3d72b5433c58944694ba1e3f3e8e2c2f (diff) | |
download | sonarqube-7f61d01d4fee20274e53f93c8fcbfd29f6f273be.tar.gz sonarqube-7f61d01d4fee20274e53f93c8fcbfd29f6f273be.zip |
SONAR-9963 WS api/metrics/update fails properly if domain is longer than 64 characters
-rw-r--r-- | server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricDto.java | 15 | ||||
-rw-r--r-- | server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricValidator.java (renamed from server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricDtoValidator.java) | 23 | ||||
-rw-r--r-- | server/sonar-db-dao/src/test/java/org/sonar/db/metric/MetricDtoTest.java | 10 |
3 files changed, 36 insertions, 12 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricDto.java index 7a62894bbb2..0f000cdd33d 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricDto.java @@ -25,9 +25,10 @@ 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; -import static org.sonar.db.metric.MetricDtoValidator.validateDescription; -import static org.sonar.db.metric.MetricDtoValidator.validateKey; -import static org.sonar.db.metric.MetricDtoValidator.validateShortName; +import static org.sonar.db.metric.MetricValidator.checkMetricDescription; +import static org.sonar.db.metric.MetricValidator.checkMetricDomain; +import static org.sonar.db.metric.MetricValidator.checkMetricKey; +import static org.sonar.db.metric.MetricValidator.checkMetricName; public class MetricDto { @@ -77,7 +78,7 @@ public class MetricDto { } public MetricDto setKey(String key) { - this.kee = validateKey(key); + this.kee = checkMetricKey(key); return this; } @@ -86,7 +87,7 @@ public class MetricDto { } public MetricDto setShortName(String shortName) { - this.shortName = validateShortName(shortName); + this.shortName = checkMetricName(shortName); return this; } @@ -108,7 +109,7 @@ public class MetricDto { } public MetricDto setDescription(@Nullable String description) { - this.description = validateDescription(description); + this.description = checkMetricDescription(description); return this; } @@ -118,7 +119,7 @@ public class MetricDto { } public MetricDto setDomain(@Nullable String domain) { - this.domain = domain; + this.domain = checkMetricDomain(domain); return this; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricDtoValidator.java b/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricValidator.java index 96069dd6a07..3440c871aad 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricDtoValidator.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricValidator.java @@ -26,23 +26,24 @@ import javax.annotation.Nullable; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Strings.isNullOrEmpty; -public class MetricDtoValidator { +public class MetricValidator { private static final int MAX_KEY_LENGTH = 64; private static final int MAX_NAME_LENGTH = 64; + private static final int MAX_DOMAIN_LENGTH = 64; private static final int MAX_DESCRIPTION_LENGTH = 255; - private MetricDtoValidator() { + private MetricValidator() { // static utility methods only } - static String validateKey(String key) { + public static String checkMetricKey(String key) { checkArgument(!isNullOrEmpty(key), "Metric key cannot be empty"); checkArgument(key.length() <= MAX_NAME_LENGTH, "Metric key length (%s) is longer than the maximum authorized (%s). '%s' was provided.", key.length(), MAX_KEY_LENGTH, key); return key; } - static String validateShortName(String name) { + public static String checkMetricName(String name) { checkArgument(!isNullOrEmpty(name), "Metric name cannot be empty"); checkArgument(name.length() <= MAX_NAME_LENGTH, "Metric name length (%s) is longer than the maximum authorized (%s). '%s' was provided.", name.length(), MAX_NAME_LENGTH, name); @@ -50,7 +51,7 @@ public class MetricDtoValidator { } @CheckForNull - static String validateDescription(@Nullable String description) { + public static String checkMetricDescription(@Nullable String description) { if (description == null) { return null; } @@ -60,4 +61,16 @@ public class MetricDtoValidator { return description; } + + @CheckForNull + public static String checkMetricDomain(@Nullable String domain) { + if (domain == null) { + return null; + } + + checkArgument(domain.length() <= MAX_DOMAIN_LENGTH, "Metric domain length (%s) is longer than the maximum authorized (%s). '%s' was provided.", + domain.length(), MAX_DOMAIN_LENGTH, domain); + + return domain; + } } diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/metric/MetricDtoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/metric/MetricDtoTest.java index 41a2cb454cd..5058baadda4 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/metric/MetricDtoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/metric/MetricDtoTest.java @@ -109,4 +109,14 @@ public class MetricDtoTest { underTest.setDescription(a256); } + + @Test + public void fail_if_domain_longer_than_64_characters() { + String a65 = repeat("a", 65); + + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("Metric domain length (65) is longer than the maximum authorized (64). '" + a65 + "' was provided."); + + underTest.setDomain(a65); + } } |