return requestQualifiers;
}
- Sets.SetView<String> intersectQualifiers = Sets.intersection(newHashSet(childrenQualifiers), newHashSet(requestQualifiers));
+ Sets.SetView<String> qualifiersIntersection = Sets.intersection(newHashSet(childrenQualifiers), newHashSet(requestQualifiers));
- return new ArrayList<>(intersectQualifiers);
+ return new ArrayList<>(qualifiersIntersection);
}
private static TreeWsRequest toTreeWsRequest(Request request) {
.setPage(request.mandatoryParamAsInt(Param.PAGE))
.setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE))
.setQuery(request.param(Param.TEXT_QUERY));
+ checkRequest(componentTreeWsRequest.getPageSize() <= MAX_SIZE, "The '%s' parameter must be less than %d", Param.PAGE_SIZE, MAX_SIZE);
String metricSortValue = componentTreeWsRequest.getMetricSort();
checkRequest(!componentTreeWsRequest.getMetricKeys().isEmpty(), "The '%s' parameter must contain at least one metric key", PARAM_METRIC_KEYS);
checkRequest(metricSortValue == null ^ componentTreeWsRequest.getSort().contains(METRIC_SORT),
import com.google.common.collect.Table;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
return requestQualifiers;
}
- // intersection of request and children qualifiers
- childrenQualifiers.retainAll(requestQualifiers);
+ Sets.SetView<String> qualifiersIntersection = Sets.intersection(new HashSet<>(childrenQualifiers), new HashSet<Object>(requestQualifiers));
- return childrenQualifiers;
+ return new ArrayList<>(qualifiersIntersection);
}
private ComponentTreeQuery toComponentTreeQuery(ComponentTreeWsRequest wsRequest, SnapshotDto baseSnapshot) {
userSession.setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN);
ws = new WsActionTester(new TreeAction(dbClient, new ComponentFinder(dbClient), resourceTypes, userSession, Mockito.mock(I18n.class)));
resourceTypes.setChildrenQualifiers(Qualifiers.MODULE, Qualifiers.FILE, Qualifiers.DIRECTORY);
- resourceTypes.setLeavesQualifiers(Qualifiers.FILE);
+ resourceTypes.setLeavesQualifiers(Qualifiers.FILE, Qualifiers.UNIT_TEST_FILE);
}
@Test
import static org.sonarqube.ws.client.measure.MeasuresWsParameters.PARAM_BASE_COMPONENT_ID;
import static org.sonarqube.ws.client.measure.MeasuresWsParameters.PARAM_METRIC_KEYS;
import static org.sonarqube.ws.client.measure.MeasuresWsParameters.PARAM_METRIC_SORT;
+import static org.sonarqube.ws.client.measure.MeasuresWsParameters.PARAM_QUALIFIERS;
+import static org.sonarqube.ws.client.measure.MeasuresWsParameters.PARAM_STRATEGY;
@Category(DbTests.class)
public class ComponentTreeActionTest {
@Before
public void setUp() {
userSession.setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN);
+ resourceTypes.setChildrenQualifiers(Qualifiers.MODULE, Qualifiers.FILE, Qualifiers.DIRECTORY);
+ resourceTypes.setLeavesQualifiers(Qualifiers.FILE, Qualifiers.UNIT_TEST_FILE);
}
@Test
.setParam(Param.SORT, NAME_SORT + ", " + METRIC_SORT)
.setParam(PARAM_METRIC_SORT, "coverage")
.setParam(PARAM_METRIC_KEYS, "coverage")
+ .setParam(PARAM_STRATEGY, "leaves")
+ .setParam(PARAM_QUALIFIERS, "FIL,UTS")
.setParam(Param.PAGE, "2")
.setParam(Param.PAGE_SIZE, "3"));
.setParam(Param.SORT, METRIC_SORT));
}
+ @Test
+ public void fail_when_paging_parameter_is_too_big() {
+ componentDb.insertProjectAndSnapshot(newProjectDto("project-uuid"));
+ insertNclocMetric();
+ expectedException.expect(BadRequestException.class);
+ expectedException.expectMessage("The 'ps' parameter must be less than 500");
+
+ call(ws.newRequest()
+ .setParam(PARAM_BASE_COMPONENT_ID, "project-uuid")
+ .setParam(PARAM_METRIC_KEYS, "ncloc")
+ .setParam(Param.PAGE_SIZE, "2540"));
+ }
+
private static ComponentTreeWsResponse call(TestRequest request) {
TestResponse testResponse = request
.setMediaType(MediaTypes.PROTOBUF)