]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10046 adding minimum length validation to api/measures/component_tree
authorGuillaume Jambet <guillaume.jambet@sonarsource.com>
Tue, 7 Nov 2017 16:31:56 +0000 (17:31 +0100)
committerGuillaume Jambet <guillaume.jambet@gmail.com>
Thu, 9 Nov 2017 15:07:06 +0000 (16:07 +0100)
server/sonar-server/src/main/java/org/sonar/server/measure/ws/ComponentTreeAction.java
server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentTreeActionTest.java

index 892d64fc30333901b4295d92c244d44587d7f82f..10b5f566fd80f7526fbeca67df90bc740033776d 100644 (file)
@@ -155,8 +155,8 @@ public class ComponentTreeAction implements MeasuresWsAction {
       .setDescription(format("Limit search to: <ul>" +
         "<li>component names that contain the supplied string</li>" +
         "<li>component keys that are exactly the same as the supplied string</li>" +
-        "</ul>" +
-        "Must have at least %d characters.", QUERY_MINIMUM_LENGTH))
+        "</ul>"))
+      .setMinimumLength(QUERY_MINIMUM_LENGTH)
       .setExampleValue("FILE_NAM");
 
     action.createParam(DEPRECATED_PARAM_BASE_COMPONENT_ID)
@@ -270,11 +270,13 @@ public class ComponentTreeAction implements MeasuresWsAction {
   }
 
   private static boolean areMetricsInResponse(ComponentTreeWsRequest request) {
-    return request.getAdditionalFields() != null && request.getAdditionalFields().contains(ADDITIONAL_METRICS);
+    List<String> additionalFields = request.getAdditionalFields();
+    return additionalFields != null && additionalFields.contains(ADDITIONAL_METRICS);
   }
 
   private static boolean arePeriodsInResponse(ComponentTreeWsRequest request) {
-    return request.getAdditionalFields() != null && request.getAdditionalFields().contains(ADDITIONAL_PERIODS);
+    List<String> additionalFields = request.getAdditionalFields();
+    return additionalFields != null && additionalFields.contains(ADDITIONAL_PERIODS);
   }
 
   private static ComponentTreeWsResponse emptyResponse(ComponentDto baseComponent, ComponentTreeWsRequest request) {
@@ -308,9 +310,6 @@ public class ComponentTreeAction implements MeasuresWsAction {
       .setPage(request.mandatoryParamAsInt(Param.PAGE))
       .setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE))
       .setQuery(request.param(Param.TEXT_QUERY));
-    String searchQuery = componentTreeWsRequest.getQuery();
-    checkRequest(searchQuery == null || searchQuery.length() >= QUERY_MINIMUM_LENGTH,
-      "The '%s' parameter must have at least %d characters", Param.TEXT_QUERY, QUERY_MINIMUM_LENGTH);
     String metricSortValue = componentTreeWsRequest.getMetricSort();
     checkRequest(!componentTreeWsRequest.getMetricKeys().isEmpty(), "The '%s' parameter must contain at least one metric key", PARAM_METRIC_KEYS);
     List<String> sorts = Optional.ofNullable(componentTreeWsRequest.getSort()).orElse(emptyList());
index 0b9e192bea01081ee96d5805d827d53b092a9081..692a818e36a47a411978e3a184cbbeb5e6df1625 100644 (file)
@@ -685,8 +685,8 @@ public class ComponentTreeActionTest {
     db.components().insertSnapshot(project);
     insertNclocMetric();
     insertNewViolationsMetric();
-    expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("The 'q' parameter must have at least 3 characters");
+    expectedException.expect(IllegalArgumentException.class);
+    expectedException.expectMessage("'q' length (2) is shorter than the minimum authorized (3)");
 
     ws.newRequest()
       .setParam(PARAM_COMPONENT, project.getKey())