import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import static org.sonar.db.component.ComponentDto.UUID_PATH_OF_ROOT;
+import static org.sonar.db.component.ComponentDto.UUID_PATH_SEPARATOR;
+import static org.sonar.db.component.ComponentDto.formatUuidPathFromParent;
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.DIRECTORY;
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.FILE;
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.PROJECT;
assertThat(projectDto.description()).isEqualTo("Project description");
assertThat(projectDto.path()).isNull();
assertThat(projectDto.uuid()).isEqualTo("ABCD");
+ assertThat(projectDto.getUuidPath()).isEqualTo(UUID_PATH_OF_ROOT);
assertThat(projectDto.moduleUuid()).isNull();
assertThat(projectDto.moduleUuidPath()).isEqualTo("." + projectDto.uuid() + ".");
assertThat(projectDto.projectUuid()).isEqualTo(projectDto.uuid());
assertThat(moduleDto.description()).isEqualTo("Module description");
assertThat(moduleDto.path()).isEqualTo("module");
assertThat(moduleDto.uuid()).isEqualTo("BCDE");
+ assertThat(moduleDto.getUuidPath()).isEqualTo(projectDto.getUuidPath() + projectDto.uuid() + UUID_PATH_SEPARATOR);
assertThat(moduleDto.moduleUuid()).isEqualTo(projectDto.uuid());
assertThat(moduleDto.moduleUuidPath()).isEqualTo(projectDto.moduleUuidPath() + moduleDto.uuid() + ".");
assertThat(moduleDto.projectUuid()).isEqualTo(projectDto.uuid());
assertThat(directoryDto.description()).isNull();
assertThat(directoryDto.path()).isEqualTo("src/main/java/dir");
assertThat(directoryDto.uuid()).isEqualTo("CDEF");
+ assertThat(directoryDto.getUuidPath()).isEqualTo(moduleDto.getUuidPath() + moduleDto.uuid() + UUID_PATH_SEPARATOR);
assertThat(directoryDto.moduleUuid()).isEqualTo(moduleDto.uuid());
assertThat(directoryDto.moduleUuidPath()).isEqualTo(moduleDto.moduleUuidPath());
assertThat(directoryDto.projectUuid()).isEqualTo(projectDto.uuid());
assertThat(fileDto.path()).isEqualTo("src/main/java/dir/Foo.java");
assertThat(fileDto.language()).isEqualTo("java");
assertThat(fileDto.uuid()).isEqualTo("DEFG");
+ assertThat(fileDto.getUuidPath()).isEqualTo(directoryDto.getUuidPath() + directoryDto.uuid() + UUID_PATH_SEPARATOR);
assertThat(fileDto.moduleUuid()).isEqualTo(moduleDto.uuid());
assertThat(fileDto.moduleUuidPath()).isEqualTo(moduleDto.moduleUuidPath());
assertThat(fileDto.projectUuid()).isEqualTo(projectDto.uuid());
builder(DIRECTORY, 3).setUuid("CDEF").setKey("MODULE_KEY:src/main/java/dir")
.setPath("src/main/java/dir")
.addChildren(
- builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java")
- .setPath("src/main/java/dir/Foo.java")
- .build())
+ builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java")
+ .setPath("src/main/java/dir/Foo.java")
+ .build())
.build())
.build())
.build());
ComponentDto projectReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), PROJECT_KEY).get();
assertThat(projectReloaded.getId()).isEqualTo(project.getId());
assertThat(projectReloaded.uuid()).isEqualTo(project.uuid());
+ assertThat(projectReloaded.getUuidPath()).isEqualTo(UUID_PATH_OF_ROOT);
ComponentDto moduleReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), MODULE_KEY).get();
assertThat(moduleReloaded.getId()).isEqualTo(module.getId());
assertThat(moduleReloaded.uuid()).isEqualTo(module.uuid());
+ assertThat(moduleReloaded.getUuidPath()).isEqualTo(module.getUuidPath());
assertThat(moduleReloaded.moduleUuid()).isEqualTo(module.moduleUuid());
assertThat(moduleReloaded.moduleUuidPath()).isEqualTo(module.moduleUuidPath());
assertThat(moduleReloaded.projectUuid()).isEqualTo(module.projectUuid());
assertThat(moduleReloaded.getRootUuid()).isEqualTo(module.getRootUuid());
ComponentDto directory = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_KEY:src/main/java/dir").get();
+ assertThat(directory.getUuidPath()).isEqualTo(directory.getUuidPath());
assertThat(directory.moduleUuid()).isEqualTo(module.uuid());
assertThat(directory.moduleUuidPath()).isEqualTo(module.moduleUuidPath());
assertThat(directory.projectUuid()).isEqualTo(project.uuid());
assertThat(directory.getRootUuid()).isEqualTo(module.uuid());
ComponentDto file = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_KEY:src/main/java/dir/Foo.java").get();
+ assertThat(file.getUuidPath()).isEqualTo(file.getUuidPath());
assertThat(file.moduleUuid()).isEqualTo(module.uuid());
assertThat(file.moduleUuidPath()).isEqualTo(module.moduleUuidPath());
assertThat(file.projectUuid()).isEqualTo(project.uuid());
builder(Component.Type.MODULE, 3).setUuid("CDEF").setKey("SUB_MODULE_1_KEY")
.setName("Sub Module 1")
.addChildren(
- builder(Component.Type.MODULE, 4).setUuid("DEFG").setKey("SUB_MODULE_2_KEY")
- .setName("Sub Module 2")
- .addChildren(
- builder(DIRECTORY, 5).setUuid("EFGH").setKey("SUB_MODULE_2_KEY:src/main/java/dir")
- .setPath("src/main/java/dir")
+ builder(Component.Type.MODULE, 4).setUuid("DEFG").setKey("SUB_MODULE_2_KEY")
+ .setName("Sub Module 2")
+ .addChildren(
+ builder(DIRECTORY, 5).setUuid("EFGH").setKey("SUB_MODULE_2_KEY:src/main/java/dir")
+ .setPath("src/main/java/dir")
+ .build())
.build())
- .build())
.build())
.build())
.build());
Optional<ComponentDto> project = dbClient.componentDao().selectByKey(dbTester.getSession(), PROJECT_KEY);
assertThat(project).isPresent();
assertThat(project.get().getRootUuid()).isEqualTo("ABCD");
+ assertThat(project.get().getUuidPath()).isEqualTo(UUID_PATH_OF_ROOT);
Optional<ComponentDto> module = dbClient.componentDao().selectByKey(dbTester.getSession(), MODULE_KEY);
assertThat(module).isPresent();
assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(4);
ComponentDto project = dbClient.componentDao().selectByKey(dbTester.getSession(), PROJECT_KEY).get();
+ assertThat(project.getUuidPath()).isEqualTo(UUID_PATH_OF_ROOT);
assertThat(project.moduleUuid()).isNull();
assertThat(project.moduleUuidPath()).isEqualTo("." + project.uuid() + ".");
assertThat(project.getRootUuid()).isEqualTo("ABCD");
ComponentDto moduleA = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_A").get();
+ assertThat(moduleA.getUuidPath()).isEqualTo(project.getUuidPath() + project.uuid() + UUID_PATH_SEPARATOR);
assertThat(moduleA.moduleUuid()).isEqualTo(project.uuid());
assertThat(moduleA.moduleUuidPath()).isEqualTo(project.moduleUuidPath() + moduleA.uuid() + ".");
assertThat(moduleA.getRootUuid()).isEqualTo(project.uuid());
ComponentDto subModuleA = dbClient.componentDao().selectByKey(dbTester.getSession(), "SUB_MODULE_A").get();
+ assertThat(subModuleA.getUuidPath()).isEqualTo(moduleA.getUuidPath() + moduleA.uuid() + UUID_PATH_SEPARATOR);
assertThat(subModuleA.moduleUuid()).isEqualTo(moduleA.uuid());
assertThat(subModuleA.moduleUuidPath()).isEqualTo(moduleA.moduleUuidPath() + subModuleA.uuid() + ".");
assertThat(subModuleA.getRootUuid()).isEqualTo(project.uuid());
ComponentDto moduleB = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_B").get();
+ assertThat(moduleB.getUuidPath()).isEqualTo(project.getUuidPath() + project.uuid() + UUID_PATH_SEPARATOR);
assertThat(moduleB.moduleUuid()).isEqualTo(project.uuid());
assertThat(moduleB.moduleUuidPath()).isEqualTo(project.moduleUuidPath() + moduleB.uuid() + ".");
assertThat(moduleB.getRootUuid()).isEqualTo(project.uuid());
builder(DIRECTORY, 3).setUuid("CDEF").setKey("MODULE_KEY:src/main/java/dir")
.setPath("src/main/java/dir")
.addChildren(
- builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java")
- .setPath("src/main/java/dir/Foo.java")
- .build())
+ builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java")
+ .setPath("src/main/java/dir/Foo.java")
+ .build())
.build())
.build())
.build());
ComponentDto moduleReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), MODULE_KEY).get();
assertThat(moduleReloaded.getId()).isEqualTo(module.getId());
assertThat(moduleReloaded.uuid()).isEqualTo(module.uuid());
+ assertThat(moduleReloaded.getUuidPath()).isEqualTo(module.getUuidPath());
assertThat(moduleReloaded.moduleUuid()).isEqualTo(module.moduleUuid());
assertThat(moduleReloaded.moduleUuidPath()).isEqualTo(module.moduleUuidPath());
assertThat(moduleReloaded.projectUuid()).isEqualTo(module.projectUuid());
ComponentDto directoryReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_KEY:src/main/java/dir").get();
assertThat(directoryReloaded.uuid()).isEqualTo(directory.uuid());
+ assertThat(directoryReloaded.getUuidPath()).isEqualTo(directory.getUuidPath());
assertThat(directoryReloaded.moduleUuid()).isEqualTo(directory.moduleUuid());
assertThat(directoryReloaded.moduleUuidPath()).isEqualTo(directory.moduleUuidPath());
assertThat(directoryReloaded.projectUuid()).isEqualTo(directory.projectUuid());
ComponentDto fileReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_KEY:src/main/java/dir/Foo.java").get();
assertThat(fileReloaded.uuid()).isEqualTo(file.uuid());
+ assertThat(fileReloaded.getUuidPath()).isEqualTo(file.getUuidPath());
assertThat(fileReloaded.moduleUuid()).isEqualTo(file.moduleUuid());
assertThat(fileReloaded.moduleUuidPath()).isEqualTo(file.moduleUuidPath());
assertThat(fileReloaded.projectUuid()).isEqualTo(file.projectUuid());
ComponentDto moduleBReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_B").get();
assertThat(moduleBReloaded).isNotNull();
assertThat(moduleBReloaded.uuid()).isEqualTo(moduleB.uuid());
+ assertThat(moduleBReloaded.getUuidPath()).isEqualTo(moduleBReloaded.getUuidPath());
assertThat(moduleBReloaded.moduleUuid()).isEqualTo(moduleAreloaded.uuid());
assertThat(moduleBReloaded.moduleUuidPath()).isEqualTo(moduleAreloaded.moduleUuidPath() + moduleBReloaded.uuid() + ".");
assertThat(moduleBReloaded.projectUuid()).isEqualTo(project.uuid());
ComponentDto directoryReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_B:src/main/java/dir").get();
assertThat(directoryReloaded).isNotNull();
assertThat(directoryReloaded.uuid()).isEqualTo(directory.uuid());
+ assertThat(directoryReloaded.getUuidPath()).isEqualTo(directoryReloaded.getUuidPath());
assertThat(directoryReloaded.moduleUuid()).isEqualTo(moduleBReloaded.uuid());
assertThat(directoryReloaded.moduleUuidPath()).isEqualTo(moduleBReloaded.moduleUuidPath());
assertThat(directoryReloaded.projectUuid()).isEqualTo(project.uuid());
ComponentDto fileReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_B:src/main/java/dir/Foo.java").get();
assertThat(fileReloaded).isNotNull();
assertThat(fileReloaded.uuid()).isEqualTo(file.uuid());
+ assertThat(fileReloaded.getUuidPath()).isEqualTo(fileReloaded.getUuidPath());
assertThat(fileReloaded.moduleUuid()).isEqualTo(moduleBReloaded.uuid());
assertThat(fileReloaded.moduleUuidPath()).isEqualTo(moduleBReloaded.moduleUuidPath());
assertThat(fileReloaded.projectUuid()).isEqualTo(project.uuid());
.setKey("MODULE_KEY:src/main/java/dir")
.setEnabled(false);
ComponentDto removedFile = ComponentTesting.newFileDto(removedModule, "DEFG")
+ // method ComponentTesting.newFileDto is buggy because it only takes the module/project and assumes it is the parent of the file,
+ // which is wrong here (and most of the time), it is the directory
+ .setUuidPath(formatUuidPathFromParent(removedDirectory))
.setPath("src/main/java/dir/Foo.java")
.setName("Foo.java")
.setKey("MODULE_KEY:src/main/java/dir/Foo.java")
builder(DIRECTORY, 3).setUuid("CDEF").setKey("MODULE_KEY:src/main/java/dir")
.setPath("src/main/java/dir")
.addChildren(
- builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java")
- .setPath("src/main/java/dir/Foo.java")
- .build())
+ builder(FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java")
+ .setPath("src/main/java/dir/Foo.java")
+ .build())
.build())
.build())
.build());
ComponentDto projectReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), PROJECT_KEY).get();
assertThat(projectReloaded.getId()).isEqualTo(project.getId());
assertThat(projectReloaded.uuid()).isEqualTo(project.uuid());
+ assertThat(projectReloaded.getUuidPath()).isEqualTo(project.getUuidPath());
assertThat(projectReloaded.moduleUuid()).isEqualTo(project.moduleUuid());
assertThat(projectReloaded.moduleUuidPath()).isEqualTo(project.moduleUuidPath());
assertThat(projectReloaded.projectUuid()).isEqualTo(project.projectUuid());
ComponentDto moduleReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), MODULE_KEY).get();
assertThat(moduleReloaded.getId()).isEqualTo(removedModule.getId());
assertThat(moduleReloaded.uuid()).isEqualTo(removedModule.uuid());
+ assertThat(moduleReloaded.getUuidPath()).isEqualTo(removedModule.getUuidPath());
assertThat(moduleReloaded.moduleUuid()).isEqualTo(removedModule.moduleUuid());
assertThat(moduleReloaded.moduleUuidPath()).isEqualTo(removedModule.moduleUuidPath());
assertThat(moduleReloaded.projectUuid()).isEqualTo(removedModule.projectUuid());
ComponentDto directoryReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_KEY:src/main/java/dir").get();
assertThat(directoryReloaded.getId()).isEqualTo(removedDirectory.getId());
assertThat(directoryReloaded.uuid()).isEqualTo(removedDirectory.uuid());
+ assertThat(directoryReloaded.getUuidPath()).isEqualTo(removedDirectory.getUuidPath());
assertThat(directoryReloaded.moduleUuid()).isEqualTo(removedDirectory.moduleUuid());
assertThat(directoryReloaded.moduleUuidPath()).isEqualTo(removedDirectory.moduleUuidPath());
assertThat(directoryReloaded.projectUuid()).isEqualTo(removedDirectory.projectUuid());
ComponentDto fileReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_KEY:src/main/java/dir/Foo.java").get();
assertThat(fileReloaded.getId()).isEqualTo(fileReloaded.getId());
assertThat(fileReloaded.uuid()).isEqualTo(removedFile.uuid());
+ assertThat(fileReloaded.getUuidPath()).isEqualTo(removedFile.getUuidPath());
assertThat(fileReloaded.moduleUuid()).isEqualTo(removedFile.moduleUuid());
assertThat(fileReloaded.moduleUuidPath()).isEqualTo(removedFile.moduleUuidPath());
assertThat(fileReloaded.projectUuid()).isEqualTo(removedFile.projectUuid());
ComponentDto fileReloaded = dbClient.componentDao().selectByKey(dbTester.getSession(), "MODULE_KEY:src/main/java/dir/Foo.java").get();
assertThat(fileReloaded.getId()).isEqualTo(removedFile.getId());
assertThat(fileReloaded.uuid()).isEqualTo(removedFile.uuid());
+ assertThat(fileReloaded.getUuidPath()).isEqualTo(fileReloaded.getUuidPath());
assertThat(fileReloaded.moduleUuid()).isEqualTo(moduleReloaded.uuid());
assertThat(fileReloaded.moduleUuidPath()).isEqualTo(moduleReloaded.moduleUuidPath());
assertThat(fileReloaded.projectUuid()).isEqualTo(moduleReloaded.projectUuid());
.setBChanged(true)
.setBDescription("desc")
.setBEnabled(true)
+ .setBUuidPath("uuid_path")
.setBLanguage("lang")
.setBLongName("longName")
.setBModuleUuid("moduleUuid")
.setBName("name")
.setBPath("path")
.setBQualifier("qualifier")
- );
+ );
dbSession.commit();
Map<String, Object> row = selectBColumnsForUuid("U1");
- assertThat(row.get("bChanged")).isIn(true, /* for Oracle */ 1L, 1);
+ assertThat(row.get("bChanged")).isIn(true, /* for Oracle */1L, 1);
assertThat(row.get("bCopyComponentUuid")).isEqualTo("copy");
assertThat(row.get("bDescription")).isEqualTo("desc");
- assertThat(row.get("bEnabled")).isIn(true, /* for Oracle */ 1L, 1);
+ assertThat(row.get("bEnabled")).isIn(true, /* for Oracle */1L, 1);
+ assertThat(row.get("bUuidPath")).isEqualTo("uuid_path");
assertThat(row.get("bLanguage")).isEqualTo("lang");
assertThat(row.get("bLongName")).isEqualTo("longName");
assertThat(row.get("bModuleUuid")).isEqualTo("moduleUuid");
dbSession.commit();
Map<String, Object> row1 = selectBColumnsForUuid("U1");
- assertThat(row1.get("bChanged")).isIn(true, /* for Oracle */ 1L, 1);
+ assertThat(row1.get("bChanged")).isIn(true, /* for Oracle */1L, 1);
assertThat(row1.get("bCopyComponentUuid")).isEqualTo(dto1.getCopyResourceUuid());
assertThat(row1.get("bDescription")).isEqualTo(dto1.description());
- assertThat(row1.get("bEnabled")).isIn(false, /* for Oracle */ 0L, 0);
+ assertThat(row1.get("bEnabled")).isIn(false, /* for Oracle */0L, 0);
+ assertThat(row1.get("bUuidPath")).isEqualTo(dto1.getUuidPath());
assertThat(row1.get("bLanguage")).isEqualTo(dto1.language());
assertThat(row1.get("bLongName")).isEqualTo(dto1.longName());
assertThat(row1.get("bModuleUuid")).isEqualTo(dto1.moduleUuid());
assertThat(row1.get("bQualifier")).isEqualTo(dto1.qualifier());
Map<String, Object> row2 = selectBColumnsForUuid("U2");
- assertThat(row2.get("bChanged")).isIn(true, /* for Oracle */ 1L, 1);
+ assertThat(row2.get("bChanged")).isIn(true, /* for Oracle */1L, 1);
assertThat(row2.get("bCopyComponentUuid")).isEqualTo(dto2.getCopyResourceUuid());
assertThat(row2.get("bDescription")).isEqualTo(dto2.description());
- assertThat(row2.get("bEnabled")).isIn(false, /* for Oracle */ 0L, 0);
+ assertThat(row2.get("bEnabled")).isIn(false, /* for Oracle */0L, 0);
+ assertThat(row2.get("bUuidPath")).isEqualTo(dto2.getUuidPath());
assertThat(row2.get("bLanguage")).isEqualTo(dto2.language());
assertThat(row2.get("bLongName")).isEqualTo(dto2.longName());
assertThat(row2.get("bModuleUuid")).isEqualTo(dto2.moduleUuid());
assertThat(row2.get("bQualifier")).isEqualTo(dto2.qualifier());
Map<String, Object> row3 = selectBColumnsForUuid("U3");
- assertThat(row3.get("bChanged")).isIn(false, /* for Oracle */ 0L, 0);
+ assertThat(row3.get("bChanged")).isIn(false, /* for Oracle */0L, 0);
}
private Map<String, Object> selectBColumnsForUuid(String uuid) {
return db.selectFirst(
- "select b_changed as \"bChanged\", b_copy_component_uuid as \"bCopyComponentUuid\", b_description as \"bDescription\", " +
- "b_enabled as \"bEnabled\", b_language as \"bLanguage\", b_long_name as \"bLongName\"," +
- "b_module_uuid as \"bModuleUuid\", b_module_uuid_path as \"bModuleUuidPath\", b_name as \"bName\", " +
- "b_path as \"bPath\", b_qualifier as \"bQualifier\" " +
- "from projects where uuid='" + uuid + "'");
+ "select b_changed as \"bChanged\", b_copy_component_uuid as \"bCopyComponentUuid\", b_description as \"bDescription\", " +
+ "b_enabled as \"bEnabled\", b_uuid_path as \"bUuidPath\", b_language as \"bLanguage\", b_long_name as \"bLongName\"," +
+ "b_module_uuid as \"bModuleUuid\", b_module_uuid_path as \"bModuleUuidPath\", b_name as \"bName\", " +
+ "b_path as \"bPath\", b_qualifier as \"bQualifier\" " +
+ "from projects where uuid='" + uuid + "'");
}
@Test