aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml29
-rw-r--r--server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentFinderTest.java31
2 files changed, 59 insertions, 1 deletions
diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml
index 6fd35693df0..76ca07cef96 100644
--- a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml
+++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml
@@ -55,8 +55,35 @@
<select id="selectByKeyAndBranchOrPr" parameterType="String" resultType="Component">
select
- <include refid="componentColumns"/>
+ p.uuid as uuid,
+ p.uuid_path as uuidPath,
+ p.branch_uuid as branchUuid,
+ p.module_uuid as moduleUuid,
+ p.module_uuid_path as moduleUuidPath,
+ p.main_branch_project_uuid as mainBranchProjectUuid,
+ p.kee as kee,
+ case
+ when pr.name is not null and p.scope = 'PRJ'
+ then pr.name
+ else p.name
+ end as name,
+ case
+ when pr.name is not null and p.scope = 'PRJ'
+ then pr.name
+ else p.long_name
+ end as longName,
+ p.description as description,
+ p.qualifier as qualifier,
+ p.scope as scope,
+ p.language as language,
+ p.root_uuid as rootUuid,
+ p.path as path,
+ p.enabled as enabled,
+ p.copy_component_uuid as copyComponentUuid,
+ p.private as isPrivate,
+ p.created_at as createdAt
from components p
+ left join projects pr on p.main_branch_project_uuid = pr.uuid
<if test="branch != null || pullRequest != null">
inner join project_branches pb on pb.uuid = p.branch_uuid
</if>
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentFinderTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentFinderTest.java
index 551f413890a..4809facd823 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentFinderTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/component/ComponentFinderTest.java
@@ -232,4 +232,35 @@ public class ComponentFinderTest {
.isInstanceOf(NotFoundException.class)
.hasMessage(format("Component '%s' on branch 'other_branch' not found", fileKey));
}
+
+ @Test
+ public void get_main_branch_name_when_selecting_any_branch() {
+ ComponentDto project = db.components().insertPrivateProject();
+
+ // Copy project ComponentDto and rename it to be used by the branch
+ ComponentDto project2 = project.copy();
+ project2.setName("projectName_branch");
+ project2.setLongName("projectLongName_branch");
+ db.components().insertProjectBranch(project2, b -> b.setKey("my_branch"));
+
+ ComponentDto retrievedProject = underTest.getByKeyAndOptionalBranchOrPullRequest(dbSession, project.getKey(), "my_branch", null);
+ assertThat(retrievedProject.name()).isEqualTo(project.name());
+ assertThat(retrievedProject.longName()).isEqualTo(project.name());
+ }
+
+ @Test
+ public void ignore_component_parent_name_when_not_branch() {
+ ComponentDto project = db.components().insertPrivateProject();
+ ComponentDto directory = db.components().insertComponent(newDirectory(project, "src"));
+ ComponentDto file = db.components().insertComponent(newFileDto(project, directory)
+ .setKey("org.struts:struts-core:src/org/struts/RequestContext.java")
+ .setName("RequestContext.java")
+ .setLongName("org.struts.RequestContext")
+ .setLanguage("java")
+ .setPath("src/RequestContext.java"));
+
+ ComponentDto retrievedFile = underTest.getByKeyAndOptionalBranchOrPullRequest(dbSession, file.getKey(), null, null);
+ assertThat(retrievedFile.name()).isEqualTo(file.name());
+ assertThat(retrievedFile.longName()).isEqualTo(file.longName());
+ }
}