]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7129 WS api/components/tree leaves strategy with qualifiers fixed
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Fri, 29 Jan 2016 10:09:09 +0000 (11:09 +0100)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Fri, 29 Jan 2016 10:09:13 +0000 (11:09 +0100)
server/sonar-server/src/main/java/org/sonar/server/component/ws/TreeAction.java
server/sonar-server/src/test/java/org/sonar/server/component/ws/TreeActionTest.java
sonar-db/src/test/java/org/sonar/db/component/ResourceTypesRule.java

index 0855467bc91036dd0acebe03c6f683323d8e621e..54ebdd8eacd96a6712a0645d7f258407ded64731 100644 (file)
@@ -22,6 +22,8 @@ package org.sonar.server.component.ws;
 import com.google.common.base.Function;
 import com.google.common.base.Predicates;
 import com.google.common.collect.ImmutableSortedSet;
+import com.google.common.collect.Sets;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -52,6 +54,7 @@ import org.sonarqube.ws.client.component.TreeWsRequest;
 
 import static com.google.common.base.Objects.firstNonNull;
 import static com.google.common.collect.FluentIterable.from;
+import static com.google.common.collect.Sets.newHashSet;
 import static java.lang.String.format;
 import static java.util.Collections.emptyMap;
 import static org.sonar.core.util.Uuids.UUID_EXAMPLE_02;
@@ -210,7 +213,7 @@ public class TreeAction implements ComponentsWsAction {
   }
 
   private static TreeWsResponse buildResponse(ComponentDto baseComponent, List<ComponentDtoWithSnapshotId> components, Map<Long, ComponentDto> referenceComponentsById,
-                                              Paging paging) {
+    Paging paging) {
     TreeWsResponse.Builder response = TreeWsResponse.newBuilder();
     response.getPagingBuilder()
       .setPageIndex(paging.pageIndex())
@@ -293,10 +296,9 @@ public class TreeAction implements ComponentsWsAction {
       return requestQualifiers;
     }
 
-    // intersection of request and children qualifiers
-    childrenQualifiers.retainAll(requestQualifiers);
+    Sets.SetView<String> intersectQualifiers = Sets.intersection(newHashSet(childrenQualifiers), newHashSet(requestQualifiers));
 
-    return childrenQualifiers;
+    return new ArrayList<>(intersectQualifiers);
   }
 
   private static TreeWsRequest toTreeWsRequest(Request request) {
@@ -310,7 +312,7 @@ public class TreeAction implements ComponentsWsAction {
       .setAsc(request.mandatoryParamAsBoolean(Param.ASCENDING))
       .setPage(request.mandatoryParamAsInt(Param.PAGE))
       .setPageSize(request.mandatoryParamAsInt(Param.PAGE_SIZE));
-    checkRequest(treeWsRequest.getPageSize() <= MAX_SIZE, "The '%s' parameter must be less thant %d", Param.PAGE_SIZE, MAX_SIZE);
+    checkRequest(treeWsRequest.getPageSize() <= MAX_SIZE, "The '%s' parameter must be less than %d", Param.PAGE_SIZE, MAX_SIZE);
 
     return treeWsRequest;
   }
index 2fe4f1d76691e8895c3b2bb88b7bbf28b3827cee..44c23ca29f776b46b843c997a259eb6783f40df7 100644 (file)
@@ -187,6 +187,7 @@ public class TreeActionTest {
       .setMediaType(MediaTypes.PROTOBUF)
       .setParam(PARAM_STRATEGY, "leaves")
       .setParam(PARAM_BASE_COMPONENT_ID, "project-uuid")
+      .setParam(PARAM_QUALIFIERS, Qualifiers.FILE)
       .execute().getInputStream();
     WsComponents.TreeWsResponse response = WsComponents.TreeWsResponse.parseFrom(responseStream);
 
@@ -296,7 +297,7 @@ public class TreeActionTest {
   @Test
   public void fail_when_page_size_above_500() {
     expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("The 'ps' parameter must be less thant 500");
+    expectedException.expectMessage("The 'ps' parameter must be less than 500");
     componentDb.insertComponent(newProjectDto("project-uuid"));
     db.commit();
 
index eb73a9627ce599a7188c88862296248649edff3e..01e386f91ad6ed594c575c7ee50bc9a1740bdb69 100644 (file)
@@ -19,8 +19,8 @@
  */
 package org.sonar.db.component;
 
-import java.util.ArrayList;
-import java.util.Arrays;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
@@ -29,11 +29,14 @@ import org.sonar.api.resources.ResourceType;
 import org.sonar.api.resources.ResourceTypeTree;
 import org.sonar.api.resources.ResourceTypes;
 
+import static java.util.Collections.emptyList;
+import static java.util.Collections.emptySet;
+
 public class ResourceTypesRule extends ResourceTypes {
-  private final Set<ResourceType> allResourceTypes = new HashSet<>();
-  private final Set<ResourceType> rootResourceTypes = new HashSet<>();
-  private final List<String> childrenQualifiers = new ArrayList<>();
-  private final List<String> leavesQualifiers = new ArrayList<>();
+  private Set<ResourceType> allResourceTypes = emptySet();
+  private Set<ResourceType> rootResourceTypes = emptySet();
+  private List<String> childrenQualifiers = emptyList();
+  private List<String> leavesQualifiers = emptyList();
 
   @Override
   public Collection<ResourceType> getAll() {
@@ -46,32 +49,31 @@ public class ResourceTypesRule extends ResourceTypes {
   }
 
   public ResourceTypesRule setRootQualifiers(String... qualifiers) {
-    rootResourceTypes.clear();
+    Set<ResourceType> resourceTypes = new HashSet<>();
     for (String qualifier : qualifiers) {
-      rootResourceTypes.add(ResourceType.builder(qualifier).build());
+      resourceTypes.add(ResourceType.builder(qualifier).build());
     }
+    rootResourceTypes = ImmutableSet.copyOf(resourceTypes);
 
     return this;
   }
 
   public ResourceTypesRule setLeavesQualifiers(String... qualifiers) {
-    leavesQualifiers.clear();
-    leavesQualifiers.addAll(Arrays.asList(qualifiers));
+    leavesQualifiers = ImmutableList.copyOf(qualifiers);
     return this;
   }
 
   public ResourceTypesRule setChildrenQualifiers(String... qualifiers) {
-    childrenQualifiers.clear();
-    childrenQualifiers.addAll(Arrays.asList(qualifiers));
-
+    childrenQualifiers = ImmutableList.copyOf(qualifiers);
     return this;
   }
 
   public ResourceTypesRule setAllQualifiers(String... qualifiers) {
-    allResourceTypes.clear();
+    Set<ResourceType> resourceTypes = new HashSet<>();
     for (String qualifier : qualifiers) {
-      allResourceTypes.add(ResourceType.builder(qualifier).build());
+      resourceTypes.add(ResourceType.builder(qualifier).build());
     }
+    allResourceTypes = ImmutableSet.copyOf(resourceTypes);
 
     return this;
   }