From: Sébastien Lesaint Date: Tue, 6 Mar 2018 14:53:56 +0000 (+0100) Subject: SONAR-10261 add description to Project X-Git-Tag: 7.5~1551 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1ff189e5b95b9d524238b5343f8f2583d58c131b;p=sonarqube.git SONAR-10261 add description to Project --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/Project.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/Project.java index 3f048dda3bc..b683160198f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/Project.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/Project.java @@ -19,6 +19,7 @@ */ package org.sonar.server.computation.task.projectanalysis.analysis; +import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; @Immutable @@ -27,11 +28,17 @@ public class Project { private final String uuid; private final String key; private final String name; + private final String description; public Project(String uuid, String key, String name) { + this(uuid, key, name, null); + } + + public Project(String uuid, String key, String name, @Nullable String description) { this.uuid = uuid; this.key = key; this.name = name; + this.description = description; } /** @@ -52,6 +59,10 @@ public class Project { return name; } + public String getDescription() { + return description; + } + @Override public boolean equals(Object o) { if (this == o) { @@ -75,8 +86,16 @@ public class Project { sb.append("uuid='").append(uuid).append('\''); sb.append(", key='").append(key).append('\''); sb.append(", name='").append(name).append('\''); + sb.append(", description=").append(toString(this.description)); sb.append('}'); return sb.toString(); } + private static String toString(@Nullable String s) { + if (s == null) { + return null; + } + return '\'' + s + '\''; + } + } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStep.java index a394db74c4a..c74e9d46789 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStep.java @@ -112,7 +112,7 @@ public class LoadReportAnalysisMetadataHolderStep implements ComputationStep { ceTask.getComponentUuid())); } ComponentDto dto = toProject(reportProjectKey); - analysisMetadata.setProject(new Project(dto.uuid(), dto.getDbKey(), dto.name())); + analysisMetadata.setProject(new Project(dto.uuid(), dto.getDbKey(), dto.name(), dto.description())); return () -> { if (!componentKey.equals(reportProjectKey)) { throw MessageException.of(format( diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectTest.java index e034e1caf37..c5b64f8ef52 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectTest.java @@ -25,29 +25,53 @@ import static org.assertj.core.api.Assertions.assertThat; public class ProjectTest { @Test - public void test_bean() { - Project project = new Project("U1", "K1", "N1"); + public void test_bean_without_description() { + Project project1 = new Project("U1", "K1", "N1"); + Project project2 = new Project("U1", "K1", "N1", null); + + assertThat(project1.getUuid()).isEqualTo(project2.getUuid()).isEqualTo("U1"); + assertThat(project1.getKey()).isEqualTo(project2.getKey()).isEqualTo("K1"); + assertThat(project1.getName()).isEqualTo(project2.getName()).isEqualTo("N1"); + assertThat(project1.getDescription()).isEqualTo(project2.getDescription()).isNull(); + + assertThat(project1.toString()) + .isEqualTo(project2.toString()) + .isEqualTo("Project{uuid='U1', key='K1', name='N1', description=null}"); + } + @Test + public void test_bean_with_description() { + Project project1 = new Project("U1", "K1", "N1", "D1"); - assertThat(project.getUuid()).isEqualTo("U1"); - assertThat(project.getKey()).isEqualTo("K1"); - assertThat(project.getName()).isEqualTo("N1"); + assertThat(project1.getUuid()).isEqualTo("U1"); + assertThat(project1.getKey()).isEqualTo("K1"); + assertThat(project1.getName()).isEqualTo("N1"); + assertThat(project1.getDescription()).isEqualTo("D1"); - assertThat(project.toString()).isEqualTo("Project{uuid='U1', key='K1', name='N1'}"); + assertThat(project1.toString()) + .isEqualTo(project1.toString()) + .isEqualTo("Project{uuid='U1', key='K1', name='N1', description='D1'}"); } @Test public void test_equals_and_hashCode() { Project project1 = new Project("U1", "K1", "N1"); - Project project1bis = new Project("U1", "K1", "N1"); - Project project2 = new Project("U2", "K2", project1.getName() /* same name */); + Project project2 = new Project("U1", "K1", "N1", "D1"); - assertThat(project1.equals(project1)).isTrue(); - assertThat(project1.equals(project1bis)).isTrue(); - assertThat(project1.equals(project2)).isFalse(); - assertThat(project1.equals("U1")).isFalse(); + assertThat(project1).isEqualTo(project1); + assertThat(project1).isNotEqualTo(null); + assertThat(project1).isNotEqualTo(new Object()); + assertThat(project1).isEqualTo(new Project("U1", "K1", "N1", null)); + assertThat(project1).isEqualTo(new Project("U1", "K2", "N1", null)); + assertThat(project1).isEqualTo(new Project("U1", "K1", "N2", null)); + assertThat(project1).isEqualTo(project2); assertThat(project1.hashCode()).isEqualTo(project1.hashCode()); - assertThat(project1.hashCode()).isEqualTo(project1bis.hashCode()); + assertThat(project1.hashCode()).isNotEqualTo(null); + assertThat(project1.hashCode()).isNotEqualTo(new Object().hashCode()); + assertThat(project1.hashCode()).isEqualTo(new Project("U1", "K1", "N1", null).hashCode()); + assertThat(project1.hashCode()).isEqualTo(new Project("U1", "K2", "N1", null).hashCode()); + assertThat(project1.hashCode()).isEqualTo(new Project("U1", "K1", "N2", null).hashCode()); + assertThat(project1.hashCode()).isEqualTo(project2.hashCode()); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStepTest.java index d6f575495c5..a123e69b0b1 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStepTest.java @@ -39,6 +39,7 @@ import org.sonar.db.organization.OrganizationDto; import org.sonar.scanner.protocol.output.ScannerReport; import org.sonar.server.computation.task.projectanalysis.analysis.MutableAnalysisMetadataHolderRule; import org.sonar.server.computation.task.projectanalysis.analysis.Organization; +import org.sonar.server.computation.task.projectanalysis.analysis.Project; import org.sonar.server.computation.task.projectanalysis.analysis.ScannerPlugin; import org.sonar.server.computation.task.projectanalysis.batch.BatchReportReaderRule; import org.sonar.server.computation.task.projectanalysis.component.BranchLoader; @@ -71,14 +72,15 @@ public class LoadReportAnalysisMetadataHolderStepTest { private DbClient dbClient = db.getDbClient(); private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db); private PluginRepository pluginRepository = mock(PluginRepository.class); - private ComputationStep underTest; private OrganizationFlags organizationFlags = mock(OrganizationFlags.class); + private ComponentDto project; + private ComputationStep underTest; @Before public void setUp() { CeTask defaultOrgCeTask = createCeTask(PROJECT_KEY, db.getDefaultOrganization().getUuid()); underTest = createStep(defaultOrgCeTask); - db.components().insertPublicProject(db.getDefaultOrganization(), p -> p.setDbKey(PROJECT_KEY)); + project = db.components().insertPublicProject(db.getDefaultOrganization(), p -> p.setDbKey(PROJECT_KEY)); } @Test @@ -105,6 +107,22 @@ public class LoadReportAnalysisMetadataHolderStepTest { assertThat(analysisMetadataHolder.getAnalysisDate()).isEqualTo(ANALYSIS_DATE); } + @Test + public void set_project_from_dto() { + reportReader.setMetadata( + newBatchReportBuilder() + .setRootComponentRef(1) + .build()); + + underTest.execute(); + + Project project = analysisMetadataHolder.getProject(); + assertThat(project.getUuid()).isEqualTo(this.project.uuid()); + assertThat(project.getKey()).isEqualTo(this.project.getDbKey()); + assertThat(project.getName()).isEqualTo(this.project.name()); + assertThat(project.getDescription()).isEqualTo(this.project.description()); + } + @Test public void set_cross_project_duplication_to_true() { reportReader.setMetadata(