]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-17706 Drop support for projects still using modules in SonarQube server
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Mon, 23 Jan 2023 21:29:16 +0000 (15:29 -0600)
committersonartech <sonartech@sonarsource.com>
Thu, 2 Feb 2023 20:03:39 +0000 (20:03 +0000)
20 files changed:
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/ComponentUuidFactoryWithMigration.java [deleted file]
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/BuildComponentTreeStep.java
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/ValidateProjectStep.java
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ComponentUuidFactoryImplTest.java [new file with mode: 0644]
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ComponentUuidFactoryWithMigrationTest.java [deleted file]
server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentMapper.java
server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml
server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoTest.java
server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java
server/sonar-webserver-es/src/test/java/org/sonar/server/component/index/ComponentIndexTest.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/component/ws/SearchAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/setting/ws/SettingValidations.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/setting/ws/ListDefinitionsActionTest.java
sonar-core/src/main/java/org/sonar/core/component/DefaultResourceTypes.java
sonar-core/src/main/java/org/sonar/core/config/CorePropertyDefinitions.java
sonar-core/src/main/java/org/sonar/core/config/ExclusionProperties.java
sonar-core/src/test/java/org/sonar/core/component/DefaultResourceTypesTest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/issues/SearchRequest.java

diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/ComponentUuidFactoryWithMigration.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/ComponentUuidFactoryWithMigration.java
deleted file mode 100644 (file)
index 78301ff..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.ce.task.projectanalysis.component;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import javax.annotation.CheckForNull;
-import javax.annotation.Nullable;
-import org.apache.commons.lang.StringUtils;
-import org.sonar.api.resources.Qualifiers;
-import org.sonar.api.resources.Scopes;
-import org.sonar.ce.task.projectanalysis.analysis.Branch;
-import org.sonar.core.util.Uuids;
-import org.sonar.db.DbClient;
-import org.sonar.db.DbSession;
-import org.sonar.db.component.BranchType;
-import org.sonar.db.component.ComponentDto;
-import org.sonar.db.component.ComponentWithModuleUuidDto;
-import org.sonar.db.component.KeyWithUuidDto;
-
-public class ComponentUuidFactoryWithMigration implements ComponentUuidFactory {
-  private final Map<String, String> uuidsByDbKey = new HashMap<>();
-  private final Map<String, String> uuidsByMigratedKey = new HashMap<>();
-
-  public ComponentUuidFactoryWithMigration(DbClient dbClient, DbSession dbSession, String rootKey, Branch branch,
-    Function<String, String> pathToKey, Map<String, String> reportModulesPath) {
-    Map<String, String> modulePathsByUuid;
-    List<KeyWithUuidDto> keys;
-    if (branch.isMain()) {
-      keys = dbClient.componentDao().selectUuidsByKeyFromProjectKey(dbSession, rootKey);
-    } else if (branch.getType() == BranchType.PULL_REQUEST) {
-      keys = dbClient.componentDao().selectUuidsByKeyFromProjectKeyAndPullRequest(dbSession, rootKey, branch.getPullRequestKey());
-    } else {
-      keys = dbClient.componentDao().selectUuidsByKeyFromProjectKeyAndBranch(dbSession, rootKey, branch.getName());
-    }
-
-    keys.forEach(dto -> uuidsByDbKey.put(dto.key(), dto.uuid()));
-
-    if (!reportModulesPath.isEmpty()) {
-      modulePathsByUuid = loadModulePathsByUuid(dbClient, dbSession, rootKey, branch, reportModulesPath);
-
-      if (!modulePathsByUuid.isEmpty()) {
-        doMigration(dbClient, dbSession, rootKey, pathToKey, modulePathsByUuid);
-      }
-    }
-  }
-
-  private void doMigration(DbClient dbClient, DbSession dbSession, String rootKey, Function<String, String> pathToKey, Map<String, String> modulePathsByUuid) {
-    List<ComponentWithModuleUuidDto> dtos = loadComponentsWithModuleUuid(dbClient, dbSession, rootKey);
-    for (ComponentWithModuleUuidDto dto : dtos) {
-      if ("/".equals(dto.path())) {
-        // skip root folders
-        continue;
-      }
-
-      if (Scopes.PROJECT.equals(dto.scope())) {
-        String modulePathFromRootProject = modulePathsByUuid.get(dto.uuid());
-        if (modulePathFromRootProject != null || StringUtils.isEmpty(dto.moduleUuid())) {
-          // means that it's a root or a module with a valid path (to avoid overwriting key of root)
-          pathToKey.apply(modulePathFromRootProject);
-          uuidsByMigratedKey.put(pathToKey.apply(modulePathFromRootProject), dto.uuid());
-        }
-      } else {
-        String modulePathFromRootProject = modulePathsByUuid.get(dto.moduleUuid());
-        String componentPath = createComponentPath(dto, modulePathFromRootProject);
-        uuidsByMigratedKey.put(pathToKey.apply(componentPath), dto.uuid());
-      }
-    }
-  }
-
-  @CheckForNull
-  private static String createComponentPath(ComponentWithModuleUuidDto dto, @Nullable String modulePathFromRootProject) {
-    if (StringUtils.isEmpty(modulePathFromRootProject)) {
-      return dto.path();
-    }
-
-    if (StringUtils.isEmpty(dto.path())) {
-      // will be the case for modules
-      return modulePathFromRootProject;
-    }
-
-    return modulePathFromRootProject + "/" + dto.path();
-  }
-
-  private static List<ComponentWithModuleUuidDto> loadComponentsWithModuleUuid(DbClient dbClient, DbSession dbSession, String rootKey) {
-    return dbClient.componentDao().selectEnabledComponentsWithModuleUuidFromProjectKey(dbSession, rootKey);
-  }
-
-  private static Map<String, String> loadModulePathsByUuid(DbClient dbClient, DbSession dbSession, String rootKey,
-    Branch branch, Map<String, String> pathByModuleKey) {
-    String branchKey = branch.getType() == BranchType.BRANCH ? branch.getName() : null;
-    String prKey = branch.getType() == BranchType.PULL_REQUEST ? branch.getPullRequestKey() : null;
-
-    List<ComponentDto> moduleDtos = dbClient.componentDao()
-      .selectProjectAndModulesFromProjectKey(dbSession, rootKey, true, branchKey, prKey).stream()
-      .filter(c -> Qualifiers.MODULE.equals(c.qualifier()))
-      .toList();
-
-    if (moduleDtos.isEmpty()) {
-      return Collections.emptyMap();
-    }
-
-    Map<String, String> modulePathByUuid = new HashMap<>();
-    for (ComponentDto dto : moduleDtos) {
-      String relativePath = pathByModuleKey.get(dto.getKey());
-      if (relativePath != null) {
-        modulePathByUuid.put(dto.uuid(), relativePath);
-      }
-    }
-    return modulePathByUuid;
-  }
-
-  /**
-   * Get UUID from component having the same key in database if it exists, otherwise look for migrated keys, and finally generate a new one.
-   */
-  @Override
-  public String getOrCreateForKey(String key) {
-    return uuidsByDbKey.computeIfAbsent(key, k1 -> uuidsByMigratedKey.computeIfAbsent(k1, k2 -> Uuids.create()));
-  }
-}
index 5a8f164d620a9f7a46113d25674401be5059a635..07946acb21289dcf3c9864a802e50f9819a6ca57 100644 (file)
@@ -20,7 +20,6 @@
 package org.sonar.ce.task.projectanalysis.step;
 
 import java.util.Optional;
-import java.util.function.Function;
 import javax.annotation.Nullable;
 import org.sonar.ce.task.projectanalysis.analysis.Analysis;
 import org.sonar.ce.task.projectanalysis.analysis.MutableAnalysisMetadataHolder;
@@ -28,7 +27,8 @@ import org.sonar.ce.task.projectanalysis.batch.BatchReportReader;
 import org.sonar.ce.task.projectanalysis.component.Component;
 import org.sonar.ce.task.projectanalysis.component.ComponentKeyGenerator;
 import org.sonar.ce.task.projectanalysis.component.ComponentTreeBuilder;
-import org.sonar.ce.task.projectanalysis.component.ComponentUuidFactoryWithMigration;
+import org.sonar.ce.task.projectanalysis.component.ComponentUuidFactory;
+import org.sonar.ce.task.projectanalysis.component.ComponentUuidFactoryImpl;
 import org.sonar.ce.task.projectanalysis.component.MutableTreeRootHolder;
 import org.sonar.ce.task.projectanalysis.component.ProjectAttributes;
 import org.sonar.ce.task.projectanalysis.component.ReportModulesPath;
@@ -77,16 +77,14 @@ public class BuildComponentTreeStep implements ComputationStep {
 
       // root key of branch, not necessarily of project
       String rootKey = keyGenerator.generateKey(reportProject.getKey(), null);
-      Function<String, String> pathToKey = path -> keyGenerator.generateKey(reportProject.getKey(), path);
       // loads the UUIDs from database. If they don't exist, then generate new ones
-      ComponentUuidFactoryWithMigration componentUuidFactoryWithMigration =
-        new ComponentUuidFactoryWithMigration(dbClient, dbSession, rootKey, analysisMetadataHolder.getBranch(), pathToKey, reportModulesPath.get());
+      ComponentUuidFactory componentUuidFactory = new ComponentUuidFactoryImpl(dbClient, dbSession, rootKey, analysisMetadataHolder.getBranch());
 
-      String rootUuid = componentUuidFactoryWithMigration.getOrCreateForKey(rootKey);
+      String rootUuid = componentUuidFactory.getOrCreateForKey(rootKey);
       Optional<SnapshotDto> baseAnalysis = dbClient.snapshotDao().selectLastAnalysisByRootComponentUuid(dbSession, rootUuid);
 
       ComponentTreeBuilder builder = new ComponentTreeBuilder(keyGenerator,
-        componentUuidFactoryWithMigration::getOrCreateForKey,
+        componentUuidFactory::getOrCreateForKey,
         reportReader::readComponent,
         analysisMetadataHolder.getProject(),
         analysisMetadataHolder.getBranch(),
index 52320e49b28e009453c6032beb43ec584914d6cc..df21088be7d6f750d4b378c6bb388d37305acb37 100644 (file)
@@ -23,9 +23,7 @@ import com.google.common.base.Joiner;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import java.util.Optional;
-import java.util.stream.Collectors;
 import org.sonar.api.utils.MessageException;
 import org.sonar.ce.task.projectanalysis.analysis.AnalysisMetadataHolder;
 import org.sonar.ce.task.projectanalysis.component.Component;
@@ -64,14 +62,10 @@ public class ValidateProjectStep implements ComputationStep {
   @Override
   public void execute(ComputationStep.Context context) {
     try (DbSession dbSession = dbClient.openSession(false)) {
-      validateTargetBranch(dbSession);
       Component root = treeRootHolder.getRoot();
-      // FIXME if module have really be dropped, no more need to load them
       String branchKey = analysisMetadataHolder.isBranch() ? analysisMetadataHolder.getBranch().getName() : null;
       String prKey = analysisMetadataHolder.isPullRequest() ? analysisMetadataHolder.getBranch().getPullRequestKey() : null;
-      List<ComponentDto> baseModules = dbClient.componentDao().selectEnabledModulesFromProjectKey(dbSession, root.getKey(), branchKey, prKey);
-      Map<String, ComponentDto> baseModulesByKey = baseModules.stream().collect(Collectors.toMap(ComponentDto::getKey, x -> x));
-      ValidateProjectsVisitor visitor = new ValidateProjectsVisitor(dbSession, dbClient.componentDao(), baseModulesByKey);
+      ValidateProjectsVisitor visitor = new ValidateProjectsVisitor(dbSession, dbClient.componentDao());
       new DepthTraversalTypeAwareCrawler(visitor).visit(root);
 
       if (!visitor.validationMessages.isEmpty()) {
@@ -80,20 +74,6 @@ public class ValidateProjectStep implements ComputationStep {
     }
   }
 
-  private void validateTargetBranch(DbSession session) {
-    if (!analysisMetadataHolder.isPullRequest()) {
-      return;
-    }
-    String referenceBranchUuid = analysisMetadataHolder.getBranch().getReferenceBranchUuid();
-    int moduleCount = dbClient.componentDao().countEnabledModulesByBranchUuid(session, referenceBranchUuid);
-    if (moduleCount > 0) {
-      Optional<BranchDto> opt = dbClient.branchDao().selectByUuid(session, referenceBranchUuid);
-      checkState(opt.isPresent(), "Reference branch '%s' does not exist", referenceBranchUuid);
-      throw MessageException.of(String.format(
-        "Due to an upgrade, you need first to re-analyze the target branch '%s' before analyzing this pull request.", opt.get().getKey()));
-    }
-  }
-
   @Override
   public String getDescription() {
     return "Validate project";
@@ -102,14 +82,12 @@ public class ValidateProjectStep implements ComputationStep {
   private class ValidateProjectsVisitor extends TypeAwareVisitorAdapter {
     private final DbSession session;
     private final ComponentDao componentDao;
-    private final Map<String, ComponentDto> baseModulesByKey;
     private final List<String> validationMessages = new ArrayList<>();
 
-    public ValidateProjectsVisitor(DbSession session, ComponentDao componentDao, Map<String, ComponentDto> baseModulesByKey) {
+    public ValidateProjectsVisitor(DbSession session, ComponentDao componentDao) {
       super(CrawlerDepthLimit.PROJECT, ComponentVisitor.Order.PRE_ORDER);
       this.session = session;
       this.componentDao = componentDao;
-      this.baseModulesByKey = baseModulesByKey;
     }
 
     @Override
@@ -142,16 +120,12 @@ public class ValidateProjectStep implements ComputationStep {
     }
 
     private Optional<ComponentDto> loadBaseComponent(String rawComponentKey) {
-      ComponentDto baseComponent = baseModulesByKey.get(rawComponentKey);
-      if (baseComponent == null) {
-        // Load component from key to be able to detect issue (try to analyze a module, etc.)
-        if (analysisMetadataHolder.isBranch()) {
-          return componentDao.selectByKeyAndBranch(session, rawComponentKey, analysisMetadataHolder.getBranch().getName());
-        } else {
-          return componentDao.selectByKeyAndPullRequest(session, rawComponentKey, analysisMetadataHolder.getBranch().getPullRequestKey());
-        }
+      // Load component from key to be able to detect issue (try to analyze a module, etc.)
+      if (analysisMetadataHolder.isBranch()) {
+        return componentDao.selectByKeyAndBranch(session, rawComponentKey, analysisMetadataHolder.getBranch().getName());
+      } else {
+        return componentDao.selectByKeyAndPullRequest(session, rawComponentKey, analysisMetadataHolder.getBranch().getPullRequestKey());
       }
-      return Optional.of(baseComponent);
     }
   }
 }
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ComponentUuidFactoryImplTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ComponentUuidFactoryImplTest.java
new file mode 100644 (file)
index 0000000..a7e9ef3
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2023 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.ce.task.projectanalysis.component;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonar.api.utils.System2;
+import org.sonar.ce.task.projectanalysis.analysis.Branch;
+import org.sonar.db.DbTester;
+import org.sonar.db.component.BranchType;
+import org.sonar.db.component.ComponentDto;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.sonar.db.component.BranchDto.DEFAULT_MAIN_BRANCH_NAME;
+
+public class ComponentUuidFactoryImplTest {
+  private final Branch mainBranch = new DefaultBranchImpl(DEFAULT_MAIN_BRANCH_NAME);
+  private final Branch mockedBranch = mock(Branch.class);
+
+  @Rule
+  public DbTester db = DbTester.create(System2.INSTANCE);
+
+  @Test
+  public void getOrCreateForKey_when_existingComponentsInDbForMainBranch_should_load() {
+    ComponentDto project = db.components().insertPrivateProject();
+
+    ComponentUuidFactory underTest = new ComponentUuidFactoryImpl(db.getDbClient(), db.getSession(), project.getKey(), mainBranch);
+
+    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(project.uuid());
+  }
+
+  @Test
+  public void getOrCreateForKey_when_existingComponentsInDbForNonMainBranch_should_load() {
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("b1"));
+    when(mockedBranch.getType()).thenReturn(BranchType.BRANCH);
+    when(mockedBranch.isMain()).thenReturn(false);
+    when(mockedBranch.getName()).thenReturn("b1");
+
+    ComponentUuidFactory underTest = new ComponentUuidFactoryImpl(db.getDbClient(), db.getSession(), project.getKey(), mockedBranch);
+
+    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(branch.uuid());
+  }
+
+  @Test
+  public void getOrCreateForKey_when_existingComponentsInDbForPr_should_load() {
+    ComponentDto project = db.components().insertPrivateProject();
+    ComponentDto pr = db.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.PULL_REQUEST).setKey("pr1"));
+    when(mockedBranch.getType()).thenReturn(BranchType.PULL_REQUEST);
+    when(mockedBranch.isMain()).thenReturn(false);
+    when(mockedBranch.getPullRequestKey()).thenReturn("pr1");
+
+    ComponentUuidFactory underTest = new ComponentUuidFactoryImpl(db.getDbClient(), db.getSession(), project.getKey(), mockedBranch);
+
+    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(pr.uuid());
+  }
+
+  @Test
+  public void getOrCreateForKey_when_componentsNotInDb_should_generate() {
+    ComponentUuidFactory underTest = new ComponentUuidFactoryImpl(db.getDbClient(), db.getSession(), "theProjectKey", mainBranch);
+
+    String generatedKey = underTest.getOrCreateForKey("foo");
+    assertThat(generatedKey).isNotEmpty();
+
+    // uuid is kept in memory for further calls with same key
+    assertThat(underTest.getOrCreateForKey("foo")).isEqualTo(generatedKey);
+  }
+}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ComponentUuidFactoryWithMigrationTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ComponentUuidFactoryWithMigrationTest.java
deleted file mode 100644 (file)
index ecc5747..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.ce.task.projectanalysis.component;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.Function;
-import org.junit.Rule;
-import org.junit.Test;
-import org.sonar.api.utils.System2;
-import org.sonar.ce.task.projectanalysis.analysis.Branch;
-import org.sonar.db.DbTester;
-import org.sonar.db.component.ComponentDto;
-import org.sonar.db.component.ComponentTesting;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.db.component.BranchDto.DEFAULT_MAIN_BRANCH_NAME;
-
-public class ComponentUuidFactoryWithMigrationTest {
-  private final Branch mainBranch = new DefaultBranchImpl(DEFAULT_MAIN_BRANCH_NAME);
-  @Rule
-  public DbTester db = DbTester.create(System2.INSTANCE);
-  private Function<String, String> pathToKey = path -> path != null ? "project:" + path : "project";
-
-  @Test
-  public void load_uuids_from_existing_components_in_db() {
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto module = db.components().insertComponent(ComponentTesting.newModuleDto(project));
-    Map<String, String> reportModulesPath = Collections.singletonMap(module.getKey(), "module1_path");
-    pathToKey = path -> path != null ? project.getKey() + ":" + path : project.getKey();
-
-    ComponentUuidFactoryWithMigration underTest =
-      new ComponentUuidFactoryWithMigration(db.getDbClient(), db.getSession(), project.getKey(), mainBranch, pathToKey, reportModulesPath);
-
-    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(project.uuid());
-    assertThat(underTest.getOrCreateForKey(module.getKey())).isEqualTo(module.uuid());
-  }
-
-  @Test
-  public void migrate_project_with_modules() {
-    ComponentDto project = db.components().insertPrivateProject(dto -> dto.setKey("project"));
-    ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project)
-      .setKey("project:module1"));
-    ComponentDto module2 = db.components().insertComponent(ComponentTesting.newModuleDto(module1)
-      .setKey("project:module1:module2"));
-    ComponentDto file1 = db.components().insertComponent(ComponentTesting.newFileDto(project)
-      .setKey("project:file1")
-      .setPath("file1_path"));
-    ComponentDto file2 = db.components().insertComponent(ComponentTesting.newFileDto(module2)
-      .setKey("project:module1:module2:file2")
-      .setPath("file2_path"));
-
-    assertThat(file2.moduleUuidPath()).isEqualTo("." + project.uuid() + "." + module1.uuid() + "." + module2.uuid() + ".");
-    Map<String, String> modulesRelativePaths = new HashMap<>();
-    modulesRelativePaths.put("project:module1", "module1_path");
-    modulesRelativePaths.put("project:module1:module2", "module1_path/module2_path");
-    ComponentUuidFactoryWithMigration underTest =
-      new ComponentUuidFactoryWithMigration(db.getDbClient(), db.getSession(), project.getKey(), mainBranch, pathToKey, modulesRelativePaths);
-
-    // migrated files
-    assertThat(underTest.getOrCreateForKey("project:file1_path")).isEqualTo(file1.uuid());
-    assertThat(underTest.getOrCreateForKey("project:module1_path/module2_path/file2_path")).isEqualTo(file2.uuid());
-
-    // project remains the same
-    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(project.uuid());
-  }
-
-  @Test
-  public void migrate_project_with_disabled_components_no_path() {
-    ComponentDto project = db.components().insertPrivateProject(dto -> dto.setKey("project"));
-    ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project)
-      .setKey("project:module1"));
-    ComponentDto file1 = db.components().insertComponent(ComponentTesting.newFileDto(project)
-      .setKey("project:file1")
-      .setPath("file1"));
-    ComponentDto disabledFileNoPath = db.components().insertComponent(ComponentTesting.newFileDto(project)
-      .setKey("project:file2")
-      .setPath(null)
-      .setEnabled(false));
-
-    Map<String, String> modulesRelativePaths = new HashMap<>();
-    modulesRelativePaths.put("project:module1", "module1_path");
-    ComponentUuidFactoryWithMigration underTest =
-      new ComponentUuidFactoryWithMigration(db.getDbClient(), db.getSession(), project.getKey(), mainBranch, pathToKey, modulesRelativePaths);
-
-    // migrated files
-    assertThat(underTest.getOrCreateForKey("project:file1")).isEqualTo(file1.uuid());
-
-    // project remains the same
-    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(project.uuid());
-  }
-
-  @Test
-  public void migrate_project_with_disabled_components_same_path() {
-    ComponentDto project = db.components().insertPrivateProject(dto -> dto.setKey("project"));
-    ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project)
-      .setKey("project:module1"));
-    ComponentDto file1 = db.components().insertComponent(ComponentTesting.newFileDto(project)
-      .setKey("project:file1")
-      .setPath("file1"));
-    ComponentDto disabledFileSamePath = db.components().insertComponent(ComponentTesting.newFileDto(project)
-      .setKey("project:file2")
-      .setPath("file1")
-      .setEnabled(false));
-
-    Map<String, String> modulesRelativePaths = new HashMap<>();
-    modulesRelativePaths.put("project:module1", "module1_path");
-    ComponentUuidFactoryWithMigration underTest =
-      new ComponentUuidFactoryWithMigration(db.getDbClient(), db.getSession(), project.getKey(), mainBranch, pathToKey, modulesRelativePaths);
-
-    // migrated files
-    assertThat(underTest.getOrCreateForKey("project:file1")).isEqualTo(file1.uuid());
-
-    // project remains the same
-    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(project.uuid());
-  }
-
-  @Test
-  public void prefers_component_having_same_key() {
-    ComponentDto project = db.components().insertPrivateProject(dto -> dto.setKey("project"));
-    ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project)
-      .setKey("project:module1"));
-    ComponentDto file1 = db.components().insertComponent(ComponentTesting.newFileDto(module1)
-      .setKey("project:module1:file1")
-      .setPath("file1"));
-    ComponentDto disabledFileSameKey = db.components().insertComponent(ComponentTesting.newFileDto(project)
-      .setKey("project:module1/file1")
-      .setPath("module1_path/file1")
-      .setEnabled(false));
-
-    Map<String, String> modulesRelativePaths = new HashMap<>();
-    modulesRelativePaths.put("project:module1", "module1_path");
-    ComponentUuidFactoryWithMigration underTest =
-      new ComponentUuidFactoryWithMigration(db.getDbClient(), db.getSession(), project.getKey(), mainBranch, pathToKey, modulesRelativePaths);
-
-    // in theory we should migrate file1. But since disabledFileSameKey already have the expected migrated key, let's reuse it.
-    assertThat(underTest.getOrCreateForKey("project:module1/file1")).isEqualTo(disabledFileSameKey.uuid());
-
-    // project remains the same
-    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(project.uuid());
-  }
-
-  @Test
-  public void migrate_branch_with_modules() {
-    pathToKey = path -> path != null ? "project:" + path : "project";
-    ComponentDto project = db.components().insertPrivateProject(dto -> dto.setKey("project"));
-    ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project)
-      .setKey("project:module1"));
-    ComponentDto module2 = db.components().insertComponent(ComponentTesting.newModuleDto(module1)
-      .setKey("project:module1:module2"));
-    ComponentDto file1 = db.components().insertComponent(ComponentTesting.newFileDto(project)
-      .setKey("project:file1")
-      .setPath("file1_path"));
-    ComponentDto file2 = db.components().insertComponent(ComponentTesting.newFileDto(module2)
-      .setKey("project:module1:module2:file2")
-      .setPath("file2_path"));
-
-    assertThat(file2.moduleUuidPath()).isEqualTo("." + project.uuid() + "." + module1.uuid() + "." + module2.uuid() + ".");
-    Map<String, String> modulesRelativePaths = new HashMap<>();
-    modulesRelativePaths.put("project:module1", "module1_path");
-    modulesRelativePaths.put("project:module1:module2", "module1_path/module2_path");
-    ComponentUuidFactoryWithMigration underTest =
-      new ComponentUuidFactoryWithMigration(db.getDbClient(), db.getSession(), project.getKey(), mainBranch, pathToKey, modulesRelativePaths);
-
-    // migrated files
-    assertThat(underTest.getOrCreateForKey("project:file1_path")).isEqualTo(file1.uuid());
-    assertThat(underTest.getOrCreateForKey("project:module1_path/module2_path/file2_path")).isEqualTo(file2.uuid());
-
-    // project remains the same
-    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(project.uuid());
-  }
-
-  @Test
-  public void migrate_project_with_root_folders() {
-    ComponentDto project = db.components().insertPrivateProject(dto -> dto.setKey("project"));
-    ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project)
-      .setKey("project:module1"));
-    ComponentDto dir1 = db.components().insertComponent(ComponentTesting.newDirectory(module1, "/")
-      .setKey("project:module1:/"));
-
-    Map<String, String> modulesRelativePaths = Collections.singletonMap("project:module1", "module1_path");
-    ComponentUuidFactoryWithMigration underTest =
-      new ComponentUuidFactoryWithMigration(db.getDbClient(), db.getSession(), project.getKey(), mainBranch, pathToKey, modulesRelativePaths);
-
-    // project remains the same
-    assertThat(underTest.getOrCreateForKey(project.getKey())).isEqualTo(project.uuid());
-
-    // module migrated to folder
-    assertThat(underTest.getOrCreateForKey("project:module1_path")).isEqualTo(module1.uuid());
-  }
-
-  @Test
-  public void dont_override_root_uuid_if_module_path_is_not_sent() {
-    ComponentDto project = db.components().insertPrivateProject(dto -> dto.setKey("project"));
-    ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project)
-      .setKey("project:module1")
-      .setEnabled(false));
-    ComponentDto module2 = db.components().insertComponent(ComponentTesting.newModuleDto(project)
-      .setKey("project:module2")
-      .setEnabled(false));
-    Map<String, String> modulesRelativePaths = new HashMap<>();
-    modulesRelativePaths.put("project", "");
-    modulesRelativePaths.put("project:module2", "module2");
-    ComponentUuidFactoryWithMigration underTest =
-      new ComponentUuidFactoryWithMigration(db.getDbClient(), db.getSession(), project.getKey(), mainBranch, pathToKey, modulesRelativePaths);
-
-    // check root project.
-    assertThat(underTest.getOrCreateForKey("project")).isEqualTo(project.uuid());
-  }
-
-  @Test
-  public void generate_uuid_if_it_does_not_exist_in_db() {
-    ComponentUuidFactoryWithMigration underTest =
-      new ComponentUuidFactoryWithMigration(db.getDbClient(), db.getSession(), "theProjectKey", mainBranch, pathToKey, Collections.emptyMap());
-
-    String generatedKey = underTest.getOrCreateForKey("foo");
-    assertThat(generatedKey).isNotEmpty();
-
-    // uuid is kept in memory for further calls with same key
-    assertThat(underTest.getOrCreateForKey("foo")).isEqualTo(generatedKey);
-  }
-
-}
index dc6070aa9e734411204f9a2b4eb60bce2d40d740..4823fa8cfab3b7483df6e6f48ac6a8edb598abc9 100644 (file)
@@ -52,7 +52,6 @@ import org.sonar.db.component.BranchMapper;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.component.ComponentKeyUpdaterMapper;
 import org.sonar.db.component.ComponentMapper;
-import org.sonar.db.component.ComponentWithModuleUuidDto;
 import org.sonar.db.component.FilePathWithHashDto;
 import org.sonar.db.component.KeyWithUuidDto;
 import org.sonar.db.component.PrBranchAnalyzedLanguageCountByProjectDto;
@@ -192,7 +191,6 @@ public class MyBatis {
     confBuilder.loadAlias("ApplicationProject", ApplicationProjectDto.class);
     confBuilder.loadAlias("CeTaskCharacteristic", CeTaskCharacteristicDto.class);
     confBuilder.loadAlias("Component", ComponentDto.class);
-    confBuilder.loadAlias("ComponentWithModuleUuid", ComponentWithModuleUuidDto.class);
     confBuilder.loadAlias("DuplicationUnit", DuplicationUnitDto.class);
     confBuilder.loadAlias("Event", EventDto.class);
     confBuilder.loadAlias("FilePathWithHash", FilePathWithHashDto.class);
index aea15fb93a620dce06f1f2177fe002d747dc3ed7..a73c55936ca48d50c676854f173d429b2ccc57f1 100644 (file)
@@ -105,10 +105,6 @@ public class ComponentDao implements Dao {
     return mapper(dbSession).selectByBranchUuid(branchUuid);
   }
 
-  public int countEnabledModulesByBranchUuid(DbSession session, String branchUuid) {
-    return mapper(session).countEnabledModulesByBranchUuid(branchUuid);
-  }
-
   /*
     SELECT BY QUERY
    */
@@ -175,13 +171,6 @@ public class ComponentDao implements Dao {
     return mapper(session).selectComponentsFromProjectKeyAndScope(projectKey, Scopes.PROJECT, excludeDisabled, branch, pullRequest);
   }
 
-  /**
-   * If no branch or pull request is provided, returns components in the main branch
-   */
-  public List<ComponentDto> selectEnabledModulesFromProjectKey(DbSession session, String projectKey, @Nullable String branch, @Nullable String pullRequest) {
-    return selectProjectAndModulesFromProjectKey(session, projectKey, true, branch, pullRequest);
-  }
-
   public List<ComponentDto> selectByKeys(DbSession session, Collection<String> keys) {
     return selectByKeys(session, keys, null, null);
   }
@@ -301,10 +290,6 @@ public class ComponentDao implements Dao {
     return new HashSet<>(mapper(dbSession).selectComponentsByQualifiers(qualifiers));
   }
 
-  public List<ComponentWithModuleUuidDto> selectEnabledComponentsWithModuleUuidFromProjectKey(DbSession dbSession, String projectKey) {
-    return mapper(dbSession).selectEnabledComponentsWithModuleUuidFromProjectKey(projectKey);
-  }
-
   /**
    * Returns components with open issues from P/Rs that use a certain branch as reference (reference branch).
    * Excludes components from the current branch.
index d16cad7608a9fb8c0f962c3cc8e05c600b3c2de8..48d934d15c1160e569f1933661be027a829521a7 100644 (file)
@@ -54,8 +54,6 @@ public interface ComponentMapper {
 
   List<ComponentDto> selectComponentsByQualifiers(@Param("qualifiers") Collection<String> qualifiers);
 
-  int countEnabledModulesByBranchUuid(@Param("branchUuid") String branchUuid);
-
   List<ComponentDto> selectByQuery(@Param("query") ComponentQuery query, RowBounds rowBounds);
 
   int countByQuery(@Param("query") ComponentQuery query);
@@ -139,7 +137,5 @@ public interface ComponentMapper {
 
   List<ProjectNclocDistributionDto> selectPrivateProjectsWithNcloc();
 
-  List<ComponentWithModuleUuidDto> selectEnabledComponentsWithModuleUuidFromProjectKey(String projectKey);
-
   short checkIfAnyOfComponentsWithQualifiers(@Param("componentKeys") Collection<String> componentKeys, @Param("qualifiers") Set<String> qualifiers);
 }
index 5605626e4b8dc779a8aed36a10b5f5b5984fd3cb..a10a3051773c2fb7412ca2eb64cdff2de83370a5 100644 (file)
       </foreach>
   </select>
 
-  <select id="countEnabledModulesByBranchUuid" resultType="int">
-    select
-      count(1)
-    from components p
-    where
-      p.enabled=${_true}
-      and p.branch_uuid = #{branchUuid,jdbcType=VARCHAR}
-      and p.qualifier = 'BRC'
-  </select>
-
   <select id="selectByQuery" resultType="Component">
     select
       <include refid="componentColumns"/>
       p.branch_uuid = #{branchUuid,jdbcType=VARCHAR}
   </select>
 
-  <select id="selectEnabledComponentsWithModuleUuidFromProjectKey" resultType="ComponentWithModuleUuid">
-    SELECT
-      p.uuid as uuid, p.module_uuid as moduleUuid, p.path as path, p.scope as scope
-    FROM
-      components p
-    INNER JOIN
-      components root ON root.uuid=p.branch_uuid AND p.enabled = ${_true} AND root.kee=#{projectKey,jdbcType=VARCHAR}
-  </select>
-
   <select id="selectUuidsByKeyFromProjectKeyAndBranchOrPr" parameterType="string" resultType="KeyWithUuid">
     SELECT
      p.kee, p.uuid
index 79a16f640d7ea82e55daa1dc6a44b7a65ff857a2..5d48d654a7e4b85269f4a625d8e67ff1e528cad9 100644 (file)
@@ -407,20 +407,6 @@ public class ComponentDaoTest {
       .hasMessage("Qualifiers cannot be empty");
   }
 
-  @Test
-  public void count_enabled_modules_by_project_uuid() {
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto module = db.components().insertComponent(newModuleDto(project));
-    db.components().insertComponent(newModuleDto(module));
-    ComponentDto subModule2 = newModuleDto(module);
-    subModule2.setEnabled(false);
-    db.components().insertComponent(subModule2);
-
-    int result = underTest.countEnabledModulesByBranchUuid(dbSession, project.uuid());
-
-    assertThat(result).isEqualTo(2);
-  }
-
   @Test
   public void find_sub_projects_by_component_keys() {
     ComponentDto project = db.components().insertPrivateProject();
@@ -504,29 +490,6 @@ public class ComponentDaoTest {
     assertThat(underTest.selectEnabledDescendantModules(dbSession, "unknown")).isEmpty();
   }
 
-  @Test
-  public void select_enabled_components_with_module_dto() {
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto module = db.components().insertComponent(newModuleDto(project));
-    ComponentDto removedModule = db.components().insertComponent(newModuleDto(project).setEnabled(false));
-    ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
-    ComponentDto removedSubModule = db.components().insertComponent(newModuleDto(module).setEnabled(false));
-    ComponentDto directory = db.components().insertComponent(newDirectory(subModule, "src"));
-    ComponentDto removedDirectory = db.components().insertComponent(newDirectory(subModule, "src2").setEnabled(false));
-    ComponentDto file = db.components().insertComponent(newFileDto(subModule, directory));
-    ComponentDto removedFile = db.components().insertComponent(newFileDto(subModule, directory).setEnabled(false));
-
-    // From root project
-    assertThat(underTest.selectEnabledComponentsWithModuleUuidFromProjectKey(dbSession, project.getKey()))
-      .extracting(ComponentWithModuleUuidDto::uuid)
-      .containsExactlyInAnyOrder(
-        project.uuid(),
-        module.uuid(),
-        subModule.uuid(),
-        directory.uuid(),
-        file.uuid());
-  }
-
   @Test
   public void select_all_modules_tree() {
     ComponentDto project = db.components().insertPrivateProject();
@@ -718,57 +681,6 @@ public class ComponentDaoTest {
       entry(file.getKey(), file.uuid()));
   }
 
-  @Test
-  public void select_enabled_modules_from_project() {
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto removedProject = db.components().insertPrivateProject(p -> p.setEnabled(false));
-    ComponentDto module = db.components().insertComponent(newModuleDto(project));
-    ComponentDto removedModule = db.components().insertComponent(newModuleDto(project).setEnabled(false));
-    ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
-    ComponentDto removedSubModule = db.components().insertComponent(newModuleDto(module).setEnabled(false));
-    ComponentDto directory = db.components().insertComponent(newDirectory(subModule, "src"));
-    ComponentDto removedDirectory = db.components().insertComponent(newDirectory(subModule, "src2").setEnabled(false));
-    ComponentDto file = db.components().insertComponent(newFileDto(subModule, directory));
-    ComponentDto removedFile = db.components().insertComponent(newFileDto(subModule, directory).setEnabled(false));
-
-    // Removed modules are not included
-    assertThat(underTest.selectEnabledModulesFromProjectKey(dbSession, project.getKey(), null, null))
-      .extracting(ComponentDto::getKey)
-      .containsExactlyInAnyOrder(project.getKey(), module.getKey(), subModule.getKey());
-
-    assertThat(underTest.selectEnabledModulesFromProjectKey(dbSession, "UNKNOWN", null, null)).isEmpty();
-  }
-
-  @Test
-  public void select_enabled_modules_from_branch() {
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("branch1"));
-    ComponentDto module = db.components().insertComponent(newModuleDto(branch));
-    ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
-    ComponentDto directory = db.components().insertComponent(newDirectory(subModule, "src"));
-    ComponentDto file = db.components().insertComponent(newFileDto(subModule, directory));
-
-    // Removed modules are not included
-    assertThat(underTest.selectEnabledModulesFromProjectKey(dbSession, project.getKey(), "branch1", null))
-      .extracting(ComponentDto::getKey)
-      .containsExactlyInAnyOrder(project.getKey(), module.getKey(), subModule.getKey());
-  }
-
-  @Test
-  public void select_enabled_modules_from_pr() {
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setBranchType(PULL_REQUEST).setKey("pr1"));
-    ComponentDto module = db.components().insertComponent(newModuleDto(branch));
-    ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
-    ComponentDto directory = db.components().insertComponent(newDirectory(subModule, "src"));
-    ComponentDto file = db.components().insertComponent(newFileDto(subModule, directory));
-
-    // Removed modules are not included
-    assertThat(underTest.selectEnabledModulesFromProjectKey(dbSession, project.getKey(), null, "pr1"))
-      .extracting(ComponentDto::getKey)
-      .containsExactlyInAnyOrder(project.getKey(), module.getKey(), subModule.getKey());
-  }
-
   @Test
   public void select_views_and_sub_views_and_applications() {
     db.components().insertPublicPortfolio("ABCD", p -> {
index e19adead7d690fdf77afe2e745b7a76f0d36362c..a92430488710a903016f8c709a0275ee11e031bb 100644 (file)
@@ -26,8 +26,8 @@ import org.sonar.db.component.ComponentTesting;
 import org.sonar.server.es.textsearch.ComponentTextSearchFeatureRepertoire;
 
 import static java.util.Arrays.asList;
+import static org.sonar.api.resources.Qualifiers.DIRECTORY;
 import static org.sonar.api.resources.Qualifiers.FILE;
-import static org.sonar.api.resources.Qualifiers.MODULE;
 import static org.sonar.api.resources.Qualifiers.PROJECT;
 
 public class ComponentIndexScoreTest extends ComponentIndexTest {
@@ -121,14 +121,14 @@ public class ComponentIndexScoreTest extends ComponentIndexTest {
 
     assertSearch(SuggestionQuery.builder()
       .setQuery("File")
-      .setQualifiers(asList(PROJECT, MODULE, FILE))
+      .setQualifiers(asList(PROJECT, DIRECTORY, FILE))
       .setRecentlyBrowsedKeys(ImmutableSet.of(file1.getKey()))
       .setFavoriteKeys(ImmutableSet.of(file2.getKey()))
       .build()).containsExactly(uuids(file2, file1));
 
     assertSearch(SuggestionQuery.builder()
       .setQuery("File")
-      .setQualifiers(asList(PROJECT, MODULE, FILE))
+      .setQualifiers(asList(PROJECT, DIRECTORY, FILE))
       .setRecentlyBrowsedKeys(ImmutableSet.of(file2.getKey()))
       .setFavoriteKeys(ImmutableSet.of(file1.getKey()))
       .build()).containsExactly(uuids(file1, file2));
index 84368c780c3dd0ac28c8256fa45bdf84ca974579..3751a7dea191403de4c4a2c74f9d2eaa6f198a2f 100644 (file)
@@ -37,7 +37,6 @@ import org.sonar.server.tester.UserSessionRule;
 import static java.util.Arrays.asList;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.sonar.api.resources.Qualifiers.FILE;
-import static org.sonar.api.resources.Qualifiers.MODULE;
 import static org.sonar.api.resources.Qualifiers.PROJECT;
 
 public abstract class ComponentIndexTest {
@@ -85,7 +84,7 @@ public abstract class ComponentIndexTest {
   }
 
   protected ListAssert<String> assertSearch(String query) {
-    return assertSearch(SuggestionQuery.builder().setQuery(query).setQualifiers(asList(PROJECT, MODULE, FILE)).build());
+    return assertSearch(SuggestionQuery.builder().setQuery(query).setQualifiers(asList(PROJECT, FILE)).build());
   }
 
   protected ListAssert<String> assertSearch(SuggestionQuery query) {
@@ -95,7 +94,7 @@ public abstract class ComponentIndexTest {
   }
 
   protected void assertSearchResults(String query, ComponentDto... expectedComponents) {
-    assertSearchResults(SuggestionQuery.builder().setQuery(query).setQualifiers(asList(PROJECT, MODULE, FILE)).build(), expectedComponents);
+    assertSearchResults(SuggestionQuery.builder().setQuery(query).setQualifiers(asList(PROJECT, FILE)).build(), expectedComponents);
   }
 
   protected void assertSearchResults(SuggestionQuery query, ComponentDto... expectedComponents) {
index 35f06d7f03501565057c92c1ff0ef96f00671d64..009c5c4269aa31945b4df4acb5c84826d7f03b51 100644 (file)
@@ -130,11 +130,7 @@ public class SearchAction implements ComponentsWsAction {
     Set<String> projectUuidsToSearch = components.stream()
       .map(ComponentDto::branchUuid)
       .collect(toHashSet());
-    List<ComponentDto> projects = dbClient.componentDao()
-      .selectByUuids(dbSession, projectUuidsToSearch)
-      .stream()
-      .filter(c -> !c.qualifier().equals(Qualifiers.MODULE))
-      .toList();
+    List<ComponentDto> projects = dbClient.componentDao().selectByUuids(dbSession, projectUuidsToSearch);
     return projects.stream().collect(toMap(ComponentDto::uuid, ComponentDto::getKey));
   }
 
index 082b73bf7d1852e4ed87d27dc015ddd8fa49bd17..3cf51c4c2cf4054e5606d75455a5a31d9da4d7b7 100644 (file)
@@ -61,7 +61,7 @@ public class SettingValidations {
     "sonar.security.config.pythonsecurity",
     "sonar.security.config.roslyn.sonaranalyzer.security.cs"
   );
-  private static final Set<String> SUPPORTED_QUALIFIERS = Set.of(Qualifiers.PROJECT, Qualifiers.VIEW, Qualifiers.APP, Qualifiers.MODULE, Qualifiers.SUBVIEW);
+  private static final Set<String> SUPPORTED_QUALIFIERS = Set.of(Qualifiers.PROJECT, Qualifiers.VIEW, Qualifiers.APP, Qualifiers.SUBVIEW);
 
   private final PropertyDefinitions definitions;
   private final DbClient dbClient;
@@ -180,16 +180,16 @@ public class SettingValidations {
           validateJsonSchema(jsonContent.get(), definition);
         } catch (ValidationException e) {
           throw new IllegalArgumentException(String.format("Provided JSON is invalid [%s]", e.getMessage()));
-        } catch (IOException e){
+        } catch (IOException e) {
           throw new IllegalArgumentException("Provided JSON is invalid");
         }
       }
     }
 
     private void validateJsonSchema(String json, PropertyDefinition definition) {
-      if(SECURITY_JSON_PROPERTIES.contains(definition.key())){
+      if (SECURITY_JSON_PROPERTIES.contains(definition.key())) {
         InputStream jsonSchemaInputStream = this.getClass().getClassLoader().getResourceAsStream("json-schemas/security.json");
-        if(jsonSchemaInputStream != null){
+        if (jsonSchemaInputStream != null) {
           JSONObject jsonSchema = new JSONObject(new JSONTokener(jsonSchemaInputStream));
           JSONObject jsonSubject = new JSONObject(new JSONTokener(json));
           SchemaLoader.load(jsonSchema).validate(jsonSubject);
index 40029ac15c1a25d00166e0419c6a1e211c4cbb98..54d458221da8c92f270506cebe05b2f59ad2a547 100644 (file)
@@ -50,7 +50,6 @@ import static java.util.Arrays.asList;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.assertj.core.groups.Tuple.tuple;
-import static org.sonar.api.resources.Qualifiers.MODULE;
 import static org.sonar.api.resources.Qualifiers.PROJECT;
 import static org.sonar.api.web.UserRole.ADMIN;
 import static org.sonar.api.web.UserRole.CODEVIEWER;
@@ -193,9 +192,9 @@ public class ListDefinitionsActionTest {
   public void return_JSON_property() {
     logIn();
     propertyDefinitions.addComponent(PropertyDefinition
-        .builder("foo")
-        .type(PropertyType.JSON)
-        .build());
+      .builder("foo")
+      .type(PropertyType.JSON)
+      .build());
 
     ListDefinitionsWsResponse result = executeRequest();
 
@@ -293,8 +292,7 @@ public class ListDefinitionsActionTest {
     propertyDefinitions.addComponents(asList(
       PropertyDefinition.builder("global").build(),
       PropertyDefinition.builder("global-and-project").onQualifiers(PROJECT).build(),
-      PropertyDefinition.builder("only-on-project").onlyOnQualifiers(PROJECT).build(),
-      PropertyDefinition.builder("only-on-module").onlyOnQualifiers(MODULE).build()));
+      PropertyDefinition.builder("only-on-project").onlyOnQualifiers(PROJECT).build()));
 
     ListDefinitionsWsResponse result = executeRequest();
 
@@ -307,8 +305,7 @@ public class ListDefinitionsActionTest {
     propertyDefinitions.addComponents(asList(
       PropertyDefinition.builder("global").build(),
       PropertyDefinition.builder("global-and-project").onQualifiers(PROJECT).build(),
-      PropertyDefinition.builder("only-on-project").onlyOnQualifiers(PROJECT).build(),
-      PropertyDefinition.builder("only-on-module").onlyOnQualifiers(MODULE).build()));
+      PropertyDefinition.builder("only-on-project").onlyOnQualifiers(PROJECT).build()));
 
     ListDefinitionsWsResponse result = executeRequest(project.getKey());
 
index b5fbcd596ef94ad4d9b093c0c0628cf6cda9334e..22ddb56748c0e36a8908efe7ce048ba081162fe9 100644 (file)
  */
 package org.sonar.core.component;
 
-import org.sonar.api.scanner.ScannerSide;
 import org.sonar.api.ce.ComputeEngineSide;
 import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.resources.ResourceType;
 import org.sonar.api.resources.ResourceTypeTree;
+import org.sonar.api.scanner.ScannerSide;
 import org.sonar.api.server.ServerSide;
 
 @ScannerSide
@@ -61,8 +61,7 @@ public final class DefaultResourceTypes {
         .hasSourceCode()
         .build())
 
-      .addRelations(Qualifiers.PROJECT, Qualifiers.MODULE)
-      .addRelations(Qualifiers.MODULE, Qualifiers.DIRECTORY)
+      .addRelations(Qualifiers.PROJECT, Qualifiers.DIRECTORY)
       .addRelations(Qualifiers.DIRECTORY, Qualifiers.FILE, Qualifiers.UNIT_TEST_FILE)
 
       .build();
index 90e0b4c2a98a85587c2bd2e54942ac27ff11e766..b53d41fa78a252ad237c7c4ad2216ec2d293b78e 100644 (file)
@@ -31,7 +31,10 @@ import org.sonar.api.resources.Qualifiers;
 import org.sonar.core.extension.PluginRiskConsent;
 
 import static java.util.Arrays.asList;
-import static org.sonar.api.PropertyType.*;
+import static org.sonar.api.PropertyType.BOOLEAN;
+import static org.sonar.api.PropertyType.SINGLE_SELECT_LIST;
+import static org.sonar.api.PropertyType.STRING;
+import static org.sonar.api.PropertyType.TEXT;
 import static org.sonar.core.extension.PluginRiskConsent.NOT_ACCEPTED;
 
 public class CorePropertyDefinitions {
@@ -73,7 +76,8 @@ public class CorePropertyDefinitions {
         .build(),
       PropertyDefinition.builder(CoreProperties.SERVER_BASE_URL)
         .name("Server base URL")
-        .description("HTTP(S) URL of this SonarQube server, such as <i>https://yourhost.yourdomain/sonar</i>. This value is used outside SonarQube itself, e.g. for PR decoration, emails, etc.")
+        .description(
+          "HTTP(S) URL of this SonarQube server, such as <i>https://yourhost.yourdomain/sonar</i>. This value is used outside SonarQube itself, e.g. for PR decoration, emails, etc.")
         .category(CoreProperties.CATEGORY_GENERAL)
         .build(),
       PropertyDefinition.builder(SONAR_PROJECTCREATION_MAINBRANCHNAME)
@@ -196,7 +200,7 @@ public class CorePropertyDefinitions {
         .name("Duplication Exclusions")
         .description("Patterns used to exclude some source files from the duplication detection mechanism. " +
           "See below to know how to use wildcards to specify this property.")
-        .onQualifiers(Qualifiers.PROJECT, Qualifiers.MODULE)
+        .onQualifiers(Qualifiers.PROJECT)
         .category(CoreProperties.CATEGORY_EXCLUSIONS)
         .subCategory(CoreProperties.SUBCATEGORY_DUPLICATIONS_EXCLUSIONS)
         .multiValues(true)
index b948a8cfbed5550ed46c4217dd2c686af9f01445..efe7d03ca38a547a38948dc0bc388978520d9d48 100644 (file)
@@ -41,7 +41,7 @@ public class ExclusionProperties {
         .subCategory(CoreProperties.SUBCATEGORY_COVERAGE_EXCLUSIONS)
         .type(PropertyType.STRING)
         .multiValues(true)
-        .onQualifiers(Qualifiers.PROJECT, Qualifiers.MODULE)
+        .onQualifiers(Qualifiers.PROJECT)
         .build(),
 
       // FILES
index a1280ca20fcc5ad3fdfba15bee2cb62304eb61c3..6658a35c768aaf5879ef50dcae086e8b9ccb7e94 100644 (file)
@@ -31,6 +31,6 @@ public class DefaultResourceTypesTest {
     ResourceTypeTree tree = DefaultResourceTypes.get();
 
     assertThat(tree.getTypes()).hasSize(5);
-    assertThat(tree.getChildren(Qualifiers.PROJECT)).containsExactly(Qualifiers.MODULE);
+    assertThat(tree.getChildren(Qualifiers.PROJECT)).containsExactly(Qualifiers.DIRECTORY);
   }
 }
index 7002827e5cbe5b95f9be8aabddd6962342e7fd75..88570cad9c3f1f312e21163d853f44efa0f4d4fd 100644 (file)
@@ -266,7 +266,6 @@ public class SearchRequest {
    * Possible values:
    * <ul>
    *   <li>"projects"</li>
-   *   <li>"moduleUuids"</li>
    *   <li>"fileUuids"</li>
    *   <li>"assigned_to_me"</li>
    *   <li>"severities"</li>