From: Guillaume Jambet Date: Thu, 2 Nov 2017 14:12:51 +0000 (+0100) Subject: SONAR-10040 add length validation to Metrics ws X-Git-Tag: 7.0-RC1~365 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=763476fc5561cdebaa13393b123464178dd9a1f1;p=sonarqube.git SONAR-10040 add length validation to Metrics ws --- diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricValidator.java b/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricValidator.java index 3440c871aad..dad18e3b939 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricValidator.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricValidator.java @@ -27,10 +27,10 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Strings.isNullOrEmpty; 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; + public static final int MAX_KEY_LENGTH = 64; + public static final int MAX_NAME_LENGTH = 64; + public static final int MAX_DOMAIN_LENGTH = 64; + public static final int MAX_DESCRIPTION_LENGTH = 255; private MetricValidator() { // static utility methods only diff --git a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/CreateAction.java b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/CreateAction.java index 59b37d16fa1..7d23e532472 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/CreateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/CreateAction.java @@ -33,6 +33,10 @@ import org.sonar.db.metric.MetricDto; import org.sonar.server.user.UserSession; import static com.google.common.base.Preconditions.checkArgument; +import static org.sonar.db.metric.MetricValidator.MAX_DESCRIPTION_LENGTH; +import static org.sonar.db.metric.MetricValidator.MAX_DOMAIN_LENGTH; +import static org.sonar.db.metric.MetricValidator.MAX_KEY_LENGTH; +import static org.sonar.db.metric.MetricValidator.MAX_NAME_LENGTH; import static org.sonar.server.util.MetricKeyValidator.checkMetricKeyFormat; import static org.sonar.server.ws.WsUtils.checkRequest; @@ -67,16 +71,18 @@ public class CreateAction implements MetricsWsAction { .setSince("5.2") .setHandler(this); - action.createParam(PARAM_NAME) - .setRequired(true) - .setDescription("Name") - .setExampleValue("Team Size"); - action.createParam(PARAM_KEY) .setRequired(true) + .setMaximumLength(MAX_KEY_LENGTH) .setDescription("Key") .setExampleValue("team_size"); + action.createParam(PARAM_NAME) + .setRequired(true) + .setMaximumLength(MAX_NAME_LENGTH) + .setDescription("Name") + .setExampleValue("Team Size"); + action.createParam(PARAM_TYPE) .setRequired(true) .setDescription("Metric type key") @@ -85,9 +91,11 @@ public class CreateAction implements MetricsWsAction { action.createParam(PARAM_DESCRIPTION) .setDescription("Description") + .setMaximumLength(MAX_DESCRIPTION_LENGTH) .setExampleValue("Size of the team"); action.createParam(PARAM_DOMAIN) + .setMaximumLength(MAX_DOMAIN_LENGTH) .setDescription("Domain") .setExampleValue("Tests"); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/UpdateAction.java b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/UpdateAction.java index 2cefd31a725..38ade60de5a 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/metric/ws/UpdateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/metric/ws/UpdateAction.java @@ -33,6 +33,10 @@ import org.sonar.db.metric.MetricDto; import org.sonar.server.user.UserSession; import org.sonar.server.util.MetricKeyValidator; +import static org.sonar.db.metric.MetricValidator.MAX_DESCRIPTION_LENGTH; +import static org.sonar.db.metric.MetricValidator.MAX_DOMAIN_LENGTH; +import static org.sonar.db.metric.MetricValidator.MAX_KEY_LENGTH; +import static org.sonar.db.metric.MetricValidator.MAX_NAME_LENGTH; import static org.sonar.server.ws.WsUtils.checkRequest; public class UpdateAction implements MetricsWsAction { @@ -73,23 +77,28 @@ public class UpdateAction implements MetricsWsAction { .setDescription("Id of the custom metric to update") .setExampleValue("42"); - action.createParam(PARAM_NAME) - .setDescription("Name") - .setExampleValue("Team Size"); - action.createParam(PARAM_KEY) + .setDescription("Key") + .setMaximumLength(MAX_KEY_LENGTH) .setDescription("Key") .setExampleValue("team_size"); + action.createParam(PARAM_NAME) + .setMaximumLength(MAX_NAME_LENGTH) + .setDescription("Name"); + action.createParam(PARAM_TYPE) - .setDescription("Type") - .setPossibleValues(Metric.ValueType.names()); + .setDescription("Metric type key") + .setPossibleValues(Metric.ValueType.names()) + .setExampleValue(Metric.ValueType.INT.name()); action.createParam(PARAM_DESCRIPTION) .setDescription("Description") + .setMaximumLength(MAX_DESCRIPTION_LENGTH) .setExampleValue("Size of the team"); action.createParam(PARAM_DOMAIN) + .setMaximumLength(MAX_DOMAIN_LENGTH) .setDescription("Domain") .setExampleValue("Tests"); }