mirror of
https://github.com/SonarSource/sonarqube.git
synced 2024-08-28 05:54:38 +02:00
SONAR-9963 WS api/metrics/update fails properly if domain is longer than 64 characters
This commit is contained in:
parent
e124398d3d
commit
7f61d01d4f
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user