]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10040 add length validation to Metrics ws
authorGuillaume Jambet <guillaume.jambet@sonarsource.com>
Thu, 2 Nov 2017 14:12:51 +0000 (15:12 +0100)
committerGuillaume Jambet <guillaume.jambet@gmail.com>
Wed, 8 Nov 2017 12:51:31 +0000 (13:51 +0100)
server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricValidator.java
server/sonar-server/src/main/java/org/sonar/server/metric/ws/CreateAction.java
server/sonar-server/src/main/java/org/sonar/server/metric/ws/UpdateAction.java

index 3440c871aad3caa0dfa507eceea4f905b4b31025..dad18e3b939669a5aad5a6b7986cb220a17fd719 100644 (file)
@@ -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
index 59b37d16fa1c2965edfdd80bd1479eaa37dcc527..7d23e532472a2e11f8ef069b4f63faef187eaec1 100644 (file)
@@ -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");
   }
index 2cefd31a72501be85a40f0cd2f365157bdda7676..38ade60de5a6d6e5cbc9a5560742051a26a2947f 100644 (file)
@@ -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");
   }