]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-18850 made org.sonar.server.component.ws.ShowAction not dependent on mainBranch...
authorLukasz Jarocki <lukasz.jarocki@sonarsource.com>
Wed, 5 Apr 2023 14:40:43 +0000 (16:40 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 5 Apr 2023 20:03:17 +0000 (20:03 +0000)
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ws/ShowAction.java

index 277718f66efb66e9da8419da1da465570b8d51ed..73adff9711282342814acc3336e03a7201f6817c 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.server.component.ws;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
@@ -27,6 +26,7 @@ import java.util.stream.IntStream;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import org.sonar.api.resources.Qualifiers;
+import org.sonar.api.resources.Scopes;
 import org.sonar.api.server.ws.Change;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
@@ -55,8 +55,8 @@ import static org.sonarqube.ws.client.component.ComponentsWsParameters.ACTION_SH
 import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_COMPONENT;
 
 public class ShowAction implements ComponentsWsAction {
-  private static final Set<String> PROJECT_OR_APP_QUALIFIERS = ImmutableSet.of(Qualifiers.PROJECT, Qualifiers.APP);
-  private static final Set<String> APP_VIEW_OR_SUBVIEW_QUALIFIERS = ImmutableSet.of(Qualifiers.APP, Qualifiers.VIEW, Qualifiers.SUBVIEW);
+  private static final Set<String> PROJECT_OR_APP_QUALIFIERS = Set.of(Qualifiers.PROJECT, Qualifiers.APP);
+  private static final Set<String> APP_VIEW_OR_SUBVIEW_QUALIFIERS = Set.of(Qualifiers.APP, Qualifiers.VIEW, Qualifiers.SUBVIEW);
   private final UserSession userSession;
   private final DbClient dbClient;
   private final ComponentFinder componentFinder;
@@ -144,7 +144,7 @@ public class ShowAction implements ComponentsWsAction {
     Request request) {
 
     // project or application
-    if (isProjectOrApp(component)) {
+    if (isMainBranchOfProjectOrApp(component, dbSession)) {
       ProjectDto project = dbClient.projectDao().selectProjectOrAppByKey(dbSession, component.getKey())
         .orElseThrow(() -> new IllegalStateException("Project is in invalid state."));
       boolean needIssueSync = needIssueSync(dbSession, component, project);
@@ -176,8 +176,12 @@ public class ShowAction implements ComponentsWsAction {
     }
   }
 
-  private static boolean isProjectOrApp(ComponentDto component) {
-    return component.getMainBranchProjectUuid() == null && PROJECT_OR_APP_QUALIFIERS.contains(component.qualifier());
+  private boolean isMainBranchOfProjectOrApp(ComponentDto component, DbSession dbSession) {
+    if (!PROJECT_OR_APP_QUALIFIERS.contains(component.qualifier()) || !Scopes.PROJECT.equals(component.scope())) {
+      return false;
+    }
+    Optional<BranchDto> branchDto = dbClient.branchDao().selectByUuid(dbSession, component.branchUuid());
+    return branchDto.isPresent() && branchDto.get().isMain();
   }
 
   private boolean needIssueSync(DbSession dbSession, ComponentDto component, @Nullable ProjectDto projectDto) {