aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2017-10-12 17:29:22 +0200
committerTeryk Bellahsene <teryk@users.noreply.github.com>2017-10-16 09:27:14 +0200
commit7f61d01d4fee20274e53f93c8fcbfd29f6f273be (patch)
tree94a665ba199be1baf1f9c698460033480f3a6c8e
parente124398d3d72b5433c58944694ba1e3f3e8e2c2f (diff)
downloadsonarqube-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.java15
-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.java10
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);
+ }
}