From d6393fa3347b6a7572ba69b16e5b23192271a646 Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Thu, 30 Oct 2014 19:00:52 +0100 Subject: [PATCH] Separate project and analysis report concerns --- .../server/computation/AnalysisReportLog.java | 11 +-- .../computation/AnalysisReportQueue.java | 11 +-- .../computation/AnalysisReportTask.java | 6 +- .../computation/ComputationService.java | 35 +++++++++- .../server/computation/ComputationStep.java | 3 +- .../computation/ComputationStepRegistry.java | 3 +- .../server/computation/DataCleanerStep.java | 9 +-- .../computation/GetAndSetProjectStep.java | 46 ------------- .../computation/IndexProjectIssuesStep.java | 21 ++++-- .../computation/SwitchSnapshotStep.java | 3 +- .../SynchronizeProjectPermissionsStep.java | 9 +-- .../ws/ActiveAnalysisReportsAction.java | 3 +- .../server/platform/ServerComponents.java | 1 - .../AnalysisReportLogMediumTest.java | 13 ++-- .../AnalysisReportQueueMediumTest.java | 11 +-- .../computation/AnalysisReportTaskTest.java | 15 ----- .../computation/ComputationServiceTest.java | 17 +++-- .../ComputationStepRegistryTest.java | 6 +- .../computation/DataCleanerStepTest.java | 4 +- .../computation/GetAndSetProjectStepTest.java | 67 ------------------- .../IndexProjectIssuesStepTest.java | 6 +- .../computation/SwitchSnapshotStepTest.java | 5 +- ...onizeProjectPermissionsStepMediumTest.java | 26 +++---- ...isReportHistorySearchActionMediumTest.java | 19 +++++- .../list_history_reports.json | 6 +- .../sonar/core/component/ComponentDto.java | 13 ++-- .../computation/db/AnalysisReportDto.java | 36 +--------- 27 files changed, 142 insertions(+), 263 deletions(-) delete mode 100644 server/sonar-server/src/main/java/org/sonar/server/computation/GetAndSetProjectStep.java delete mode 100644 server/sonar-server/src/test/java/org/sonar/server/computation/GetAndSetProjectStepTest.java diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportLog.java b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportLog.java index 0bc51ca4404..30e3794ca7b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportLog.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportLog.java @@ -23,6 +23,7 @@ package org.sonar.server.computation; import com.google.common.collect.ImmutableMap; import org.sonar.api.utils.DateUtils; import org.sonar.core.activity.ActivityLog; +import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import java.util.Map; @@ -32,18 +33,20 @@ public class AnalysisReportLog implements ActivityLog { private static final String ACTION = "LOG_ANALYSIS_REPORT"; private final AnalysisReportDto report; + private final ComponentDto project; - public AnalysisReportLog(AnalysisReportDto report) { + public AnalysisReportLog(AnalysisReportDto report, ComponentDto project) { this.report = report; + this.project = project; } @Override public Map getDetails() { return ImmutableMap.builder() .put("id", String.valueOf(report.getId())) - .put("projectKey", report.getProjectKey()) - .put("projectName", report.getProjectName()) - .put("projectUuid", report.getProjectUuid()) + .put("projectKey", project.key()) + .put("projectName", project.name()) + .put("projectUuid", project.uuid()) .put("status", String.valueOf(report.getStatus())) .put("submittedAt", DateUtils.formatDateTimeNullSafe(report.getCreatedAt())) .put("startedAt", DateUtils.formatDateTimeNullSafe(report.getStartedAt())) diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportQueue.java b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportQueue.java index 77593ec52f9..1193982672e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportQueue.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportQueue.java @@ -22,12 +22,10 @@ package org.sonar.server.computation; import org.sonar.api.ServerComponent; import org.sonar.api.utils.System2; -import org.sonar.core.activity.Activity; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.permission.GlobalPermissions; import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.MyBatis; -import org.sonar.server.activity.ActivityService; import org.sonar.server.computation.db.AnalysisReportDao; import org.sonar.server.db.DbClient; import org.sonar.server.user.UserSession; @@ -43,12 +41,10 @@ import static org.sonar.core.computation.db.AnalysisReportDto.Status.PENDING; public class AnalysisReportQueue implements ServerComponent { private final DbClient dbClient; private final AnalysisReportDao dao; - private final ActivityService activityService; private final System2 system2; - public AnalysisReportQueue(DbClient dbClient, ActivityService activityService, System2 system2) { + public AnalysisReportQueue(DbClient dbClient, System2 system2) { this.dbClient = dbClient; - this.activityService = activityService; this.dao = dbClient.analysisReportDao(); this.system2 = system2; } @@ -91,17 +87,12 @@ public class AnalysisReportQueue implements ServerComponent { try { report.setFinishedAt(new Date(system2.now())); dao.delete(session, report); - logActivity(report, session); session.commit(); } finally { MyBatis.closeQuietly(session); } } - private void logActivity(AnalysisReportDto report, DbSession session) { - activityService.write(session, Activity.Type.ANALYSIS_REPORT, new AnalysisReportLog(report)); - } - /** * @return a booked analysis report if one is available, null otherwise */ diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportTask.java b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportTask.java index 1399b94468f..8b74f57af7b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportTask.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportTask.java @@ -41,17 +41,15 @@ public class AnalysisReportTask implements Runnable { if (report != null) { try { service.analyzeReport(report); - report.succeed(); } catch (Exception exception) { LOG.error(String.format("Analysis of report %s failed", report), exception); - report.fail(); } finally { - removeFromQueue(report); + removeSilentlyFromQueue(report); } } } - private void removeFromQueue(AnalysisReportDto report) { + private void removeSilentlyFromQueue(AnalysisReportDto report) { try { queue.remove(report); } catch (Exception exception) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java index e620106eaa4..9069f9d63f2 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java @@ -20,14 +20,23 @@ package org.sonar.server.computation; +import com.google.common.base.Throwables; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sonar.api.ServerComponent; +import org.sonar.api.utils.System2; +import org.sonar.core.activity.Activity; +import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.MyBatis; +import org.sonar.server.activity.ActivityService; import org.sonar.server.db.DbClient; +import java.util.Date; + +import static com.google.common.base.Preconditions.checkNotNull; + /** * since 5.0 */ @@ -36,28 +45,48 @@ public class ComputationService implements ServerComponent { private final DbClient dbClient; private final ComputationStepRegistry stepRegistry; + private final ActivityService activityService; - public ComputationService(DbClient dbClient, ComputationStepRegistry stepRegistry) { + public ComputationService(DbClient dbClient, ComputationStepRegistry stepRegistry, ActivityService activityService) { this.dbClient = dbClient; this.stepRegistry = stepRegistry; + this.activityService = activityService; } public void analyzeReport(AnalysisReportDto report) { LOG.info(String.format("#%s - %s - Analysis report processing started", report.getId(), report.getProjectKey())); - // Synchronization of lot of data can only be done with a batch session for the moment + // Synchronization of a lot of data can only be done with a batch session for the moment DbSession session = dbClient.openSession(true); + ComponentDto project = findProject(report, session); + try { + report.succeed(); for (ComputationStep step : stepRegistry.steps()) { LOG.info(String.format("%s step started", step.description())); - step.execute(session, report); + step.execute(session, report, project); session.commit(); LOG.info(String.format("%s step finished", step.description())); } + + } catch (Exception exception) { + report.fail(); + Throwables.propagate(exception); } finally { + logActivity(session, report, project); + session.commit(); MyBatis.closeQuietly(session); LOG.info(String.format("#%s - %s - Analysis report processing finished", report.getId(), report.getProjectKey())); } } + + private ComponentDto findProject(AnalysisReportDto report, DbSession session) { + return checkNotNull(dbClient.componentDao().getByKey(session, report.getProjectKey())); + } + + private void logActivity(DbSession session, AnalysisReportDto report, ComponentDto project) { + report.setFinishedAt(new Date(System2.INSTANCE.now())); + activityService.write(session, Activity.Type.ANALYSIS_REPORT, new AnalysisReportLog(report, project)); + } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationStep.java index 8cfb03e372d..a451f09da94 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationStep.java @@ -21,12 +21,13 @@ package org.sonar.server.computation; import org.sonar.api.ServerComponent; +import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; public interface ComputationStep extends ServerComponent { - void execute(DbSession session, AnalysisReportDto analysisReportDto); + void execute(DbSession session, AnalysisReportDto analysisReportDto, ComponentDto project); String description(); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationStepRegistry.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationStepRegistry.java index 00548e7eb42..e4a2d573bc4 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationStepRegistry.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationStepRegistry.java @@ -30,12 +30,11 @@ public class ComputationStepRegistry implements ServerComponent { private final List steps; public ComputationStepRegistry( - GetAndSetProjectStep getAndSetProjectStep, SynchronizeProjectPermissionsStep synchronizeProjectPermissionsStep, IndexProjectIssuesStep indexProjectIssuesStep, SwitchSnapshotStep switchSnapshotStep, DataCleanerStep dataCleanerStep) { - steps = ImmutableList.of(getAndSetProjectStep, synchronizeProjectPermissionsStep, switchSnapshotStep, dataCleanerStep, indexProjectIssuesStep); + steps = ImmutableList.of(synchronizeProjectPermissionsStep, switchSnapshotStep, dataCleanerStep, indexProjectIssuesStep); } public List steps() { diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/DataCleanerStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/DataCleanerStep.java index 7d87bbef0ac..fcd0de2e2b4 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/DataCleanerStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/DataCleanerStep.java @@ -21,6 +21,7 @@ package org.sonar.server.computation; import org.sonar.api.config.Settings; +import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.computation.dbcleaner.DefaultPurgeTask; import org.sonar.core.persistence.DbSession; @@ -41,13 +42,13 @@ public class DataCleanerStep implements ComputationStep { } @Override - public void execute(DbSession session, AnalysisReportDto report) { - Long projectId = report.getProject().getId(); + public void execute(DbSession session, AnalysisReportDto report, ComponentDto project) { + Long projectId = project.getId(); purgeTask.purge(projectId); - issueIndex.deleteClosedIssuesOfProjectBefore(report.getProjectUuid(), deleteIssuesBeforeThisDate(projectId)); + issueIndex.deleteClosedIssuesOfProjectBefore(project.uuid(), dateBeforeWhichDeleteClosedIssues(projectId)); } - private Date deleteIssuesBeforeThisDate(Long resourceId) { + private Date dateBeforeWhichDeleteClosedIssues(Long resourceId) { return PurgeConfiguration.newDefaultPurgeConfiguration(resourceId, settings).maxLiveDateOfClosedIssues(); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/GetAndSetProjectStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/GetAndSetProjectStep.java deleted file mode 100644 index 4277cb21bea..00000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/GetAndSetProjectStep.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube 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. - * - * SonarQube 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.server.computation; - -import org.sonar.core.component.ComponentDto; -import org.sonar.core.computation.db.AnalysisReportDto; -import org.sonar.core.persistence.DbSession; -import org.sonar.server.db.DbClient; - -public class GetAndSetProjectStep implements ComputationStep { - - private final DbClient dbClient; - - public GetAndSetProjectStep(DbClient dbClient) { - this.dbClient = dbClient; - } - - @Override - public void execute(DbSession session, AnalysisReportDto report) { - ComponentDto project = dbClient.componentDao().getByKey(session, report.getProjectKey()); - report.setProject(project); - } - - @Override - public String description() { - return "Retrieve project based on identifier"; - } -} diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/IndexProjectIssuesStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/IndexProjectIssuesStep.java index 51bb0f364f3..d84cff541ac 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/IndexProjectIssuesStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/IndexProjectIssuesStep.java @@ -21,6 +21,7 @@ package org.sonar.server.computation; import com.google.common.collect.ImmutableMap; +import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; import org.sonar.server.db.DbClient; @@ -28,6 +29,8 @@ import org.sonar.server.issue.index.IssueIndex; import org.sonar.server.issue.index.IssueNormalizer; import org.sonar.server.search.IndexClient; +import java.util.Date; + public class IndexProjectIssuesStep implements ComputationStep { private final DbClient dbClient; @@ -39,8 +42,8 @@ public class IndexProjectIssuesStep implements ComputationStep { } @Override - public void execute(DbSession session, AnalysisReportDto report) { - indexProjectIssues(session, report); + public void execute(DbSession session, AnalysisReportDto report, ComponentDto project) { + indexProjectIssues(session, project); } @Override @@ -48,10 +51,18 @@ public class IndexProjectIssuesStep implements ComputationStep { return "Update issues index"; } - private void indexProjectIssues(DbSession session, AnalysisReportDto report) { + private void indexProjectIssues(DbSession session, ComponentDto project) { dbClient.issueDao().synchronizeAfter(session, - index.get(IssueIndex.class).getLastSynchronization(ImmutableMap.of(IssueNormalizer.IssueField.PROJECT.field(), report.getProject().uuid())), - ImmutableMap.of(IssueNormalizer.IssueField.PROJECT.field(), report.getProject().uuid())); + getLastIndexSynchronizationDate(project), + parameters(project)); session.commit(); } + + private ImmutableMap parameters(ComponentDto project) { + return ImmutableMap.of(IssueNormalizer.IssueField.PROJECT.field(), project.uuid()); + } + + private Date getLastIndexSynchronizationDate(ComponentDto project) { + return index.get(IssueIndex.class).getLastSynchronization(parameters(project)); + } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/SwitchSnapshotStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/SwitchSnapshotStep.java index a078a77ee0b..1fe6f0a29b9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/SwitchSnapshotStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/SwitchSnapshotStep.java @@ -20,6 +20,7 @@ package org.sonar.server.computation; +import org.sonar.core.component.ComponentDto; import org.sonar.core.component.SnapshotDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; @@ -36,7 +37,7 @@ public class SwitchSnapshotStep implements ComputationStep { } @Override - public void execute(DbSession session, AnalysisReportDto report) { + public void execute(DbSession session, AnalysisReportDto report, ComponentDto project) { disablePreviousSnapshot(session, report); enableCurrentSnapshot(session, report); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/SynchronizeProjectPermissionsStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/SynchronizeProjectPermissionsStep.java index a529ccf59f0..7d388dd8e08 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/SynchronizeProjectPermissionsStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/SynchronizeProjectPermissionsStep.java @@ -21,6 +21,7 @@ package org.sonar.server.computation; import com.google.common.collect.ImmutableMap; +import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; import org.sonar.server.db.DbClient; @@ -41,8 +42,8 @@ public class SynchronizeProjectPermissionsStep implements ComputationStep { } @Override - public void execute(DbSession session, AnalysisReportDto report) { - synchronizeProjectPermissionsIfNotFound(session, report); + public void execute(DbSession session, AnalysisReportDto report, ComponentDto project) { + synchronizeProjectPermissionsIfNotFound(session, report, project); } @Override @@ -50,8 +51,8 @@ public class SynchronizeProjectPermissionsStep implements ComputationStep { return "Synchronize project permissions"; } - private void synchronizeProjectPermissionsIfNotFound(DbSession session, AnalysisReportDto report) { - String projectUuid = report.getProject().uuid(); + private void synchronizeProjectPermissionsIfNotFound(DbSession session, AnalysisReportDto report, ComponentDto project) { + String projectUuid = project.uuid(); if (index.get(IssueAuthorizationIndex.class).getNullableByKey(projectUuid) == null) { Map params = ImmutableMap.of(IssueAuthorizationNormalizer.IssueAuthorizationField.PROJECT.field(), projectUuid); dbClient.issueAuthorizationDao().synchronizeAfter(session, null, params); diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActiveAnalysisReportsAction.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActiveAnalysisReportsAction.java index 3c559b9c3ab..7c1c4e9bc98 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActiveAnalysisReportsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActiveAnalysisReportsAction.java @@ -57,7 +57,8 @@ public class ActiveAnalysisReportsAction implements RequestHandler { json.beginObject(); json.prop("id", report.getId()); json.prop("project", report.getProjectKey()); - json.prop("projectName", report.getProjectName()); + // TODO give the project name ! + json.prop("projectName", report.getProjectKey()); json.propDateTime("startedAt", report.getStartedAt()); json.propDateTime("finishedAt", report.getFinishedAt()); json.propDateTime("submittedAt", report.getCreatedAt()); diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java index e80acf84300..52de0619f01 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java @@ -590,7 +590,6 @@ class ServerComponents { // Compute engine pico.addSingleton(ComputationService.class); pico.addSingleton(ComputationStepRegistry.class); - pico.addSingleton(GetAndSetProjectStep.class); pico.addSingleton(SynchronizeProjectPermissionsStep.class); pico.addSingleton(IndexProjectIssuesStep.class); pico.addSingleton(SwitchSnapshotStep.class); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportLogMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportLogMediumTest.java index e8863d54143..cf9876282d2 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportLogMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportLogMediumTest.java @@ -27,6 +27,7 @@ import org.junit.ClassRule; import org.junit.Test; import org.sonar.api.utils.DateUtils; import org.sonar.core.activity.Activity; +import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; import org.sonar.server.activity.ActivityService; @@ -70,10 +71,10 @@ public class AnalysisReportLogMediumTest { .setCreatedAt(DateUtils.parseDate("2014-10-15")) .setUpdatedAt(DateUtils.parseDate("2014-10-16")) .setStartedAt(DateUtils.parseDate("2014-10-17")) - .setFinishedAt(DateUtils.parseDate("2014-10-18")) - .setProject(ComponentTesting.newProjectDto()); + .setFinishedAt(DateUtils.parseDate("2014-10-18")); + ComponentDto project = ComponentTesting.newProjectDto(); - service.write(dbSession, ANALYSIS_REPORT, new AnalysisReportLog(report)); + service.write(dbSession, ANALYSIS_REPORT, new AnalysisReportLog(report, project)); dbSession.commit(); // 0. AssertBase case @@ -83,9 +84,9 @@ public class AnalysisReportLogMediumTest { assertThat(activity).isNotNull(); Map details = activity.details(); assertThat(details.get("id")).isEqualTo(String.valueOf(report.getId())); - assertThat(details.get("projectKey")).isEqualTo(report.getProjectKey()); - assertThat(details.get("projectName")).isEqualTo(report.getProjectName()); - assertThat(details.get("projectUuid")).isEqualTo(report.getProjectUuid()); + assertThat(details.get("projectKey")).isEqualTo(project.key()); + assertThat(details.get("projectName")).isEqualTo(project.name()); + assertThat(details.get("projectUuid")).isEqualTo(project.uuid()); assertThat(details.get("status")).isEqualTo("FAILED"); assertThat(details.get("submittedAt")).isEqualTo("2014-10-15T00:00:00+0200"); assertThat(details.get("startedAt")).isEqualTo("2014-10-17T00:00:00+0200"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportQueueMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportQueueMediumTest.java index 2e12107a20b..c3926a41227 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportQueueMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportQueueMediumTest.java @@ -26,7 +26,6 @@ import org.junit.ClassRule; import org.junit.Test; import org.sonar.api.security.DefaultGroups; import org.sonar.api.web.UserRole; -import org.sonar.core.activity.Activity; import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.permission.GlobalPermissions; @@ -34,15 +33,12 @@ import org.sonar.core.permission.PermissionFacade; import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.MyBatis; import org.sonar.core.user.UserDto; -import org.sonar.server.activity.index.ActivityIndex; -import org.sonar.server.component.ComponentTesting; import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.tester.ServerTester; import org.sonar.server.user.MockUserSession; import java.util.List; -import java.util.Map; import static org.fest.assertions.Assertions.assertThat; import static org.sonar.core.computation.db.AnalysisReportDto.Status.SUCCESS; @@ -152,20 +148,15 @@ public class AnalysisReportQueueMediumTest { } @Test - public void remove_remove_from_queue_and_log_a_new_activity() { + public void remove_remove_from_queue() { insertPermissionsForProject(DEFAULT_PROJECT_KEY); sut.add(DEFAULT_PROJECT_KEY, 123L); AnalysisReportDto report = sut.bookNextAvailable(); - report.setProject(ComponentTesting.newProjectDto()); report.setStatus(SUCCESS); sut.remove(report); assertThat(sut.all()).isEmpty(); - List activities = tester.get(ActivityIndex.class).findAll().getHits(); - Map details = activities.get(0).details(); - assertThat(activities).hasSize(1); - assertThat(details.get("finishedAt")).isNotEmpty(); } @Test(expected = ForbiddenException.class) diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportTaskTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportTaskTest.java index 52c5457fa21..ccbec710066 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportTaskTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportTaskTest.java @@ -24,11 +24,8 @@ import org.junit.Before; import org.junit.Test; import org.sonar.core.computation.db.AnalysisReportDto; -import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.*; -import static org.sonar.core.computation.db.AnalysisReportDto.Status.FAILED; -import static org.sonar.core.computation.db.AnalysisReportDto.Status.SUCCESS; public class AnalysisReportTaskTest { @@ -58,19 +55,7 @@ public class AnalysisReportTaskTest { sut.run(); - assertThat(report.getStatus()).isEqualTo(SUCCESS); verify(queue).bookNextAvailable(); verify(service).analyzeReport(report); } - - @Test - public void report_failed_if_analyze_report_throws_an_exception() { - AnalysisReportDto report = AnalysisReportDto.newForTests(1L); - when(queue.bookNextAvailable()).thenReturn(report); - doThrow(Exception.class).when(service).analyzeReport(report); - - sut.run(); - - assertThat(report.getStatus()).isEqualTo(FAILED); - } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationServiceTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationServiceTest.java index 991f2a240e4..304b6dff320 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationServiceTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationServiceTest.java @@ -24,8 +24,12 @@ import com.google.common.collect.Lists; import org.junit.Before; import org.junit.Test; import org.mockito.InOrder; +import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; +import org.sonar.server.activity.ActivityService; +import org.sonar.server.component.ComponentTesting; +import org.sonar.server.component.db.ComponentDao; import org.sonar.server.db.DbClient; import static org.mockito.Matchers.any; @@ -37,14 +41,19 @@ public class ComputationServiceTest { private DbClient dbClient; private ComputationStepRegistry stepRegistry; + private ActivityService activityService; @Before public void before() { this.stepRegistry = mock(ComputationStepRegistry.class); + this.activityService = mock(ActivityService.class); this.dbClient = mock(DbClient.class); when(dbClient.openSession(anyBoolean())).thenReturn(mock(DbSession.class)); + ComponentDao componentDao = mock(ComponentDao.class); + when(dbClient.componentDao()).thenReturn(componentDao); + when(componentDao.getByKey(any(DbSession.class), anyString())).thenReturn(ComponentTesting.newProjectDto()); - this.sut = new ComputationService(dbClient, stepRegistry); + this.sut = new ComputationService(dbClient, stepRegistry, activityService); } @Test @@ -59,8 +68,8 @@ public class ComputationServiceTest { InOrder order = inOrder(firstStep, secondStep, thirdStep); - order.verify(firstStep).execute(any(DbSession.class), any(AnalysisReportDto.class)); - order.verify(secondStep).execute(any(DbSession.class), any(AnalysisReportDto.class)); - order.verify(thirdStep).execute(any(DbSession.class), any(AnalysisReportDto.class)); + order.verify(firstStep).execute(any(DbSession.class), any(AnalysisReportDto.class), any(ComponentDto.class)); + order.verify(secondStep).execute(any(DbSession.class), any(AnalysisReportDto.class), any(ComponentDto.class)); + order.verify(thirdStep).execute(any(DbSession.class), any(AnalysisReportDto.class), any(ComponentDto.class)); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationStepRegistryTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationStepRegistryTest.java index f2cdc8ce10d..8bf1607c54f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationStepRegistryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationStepRegistryTest.java @@ -29,7 +29,6 @@ import static org.mockito.Mockito.mock; public class ComputationStepRegistryTest { private ComputationStepRegistry sut; - private GetAndSetProjectStep getAndSetProjectStep; private SynchronizeProjectPermissionsStep synchronizeProjectPermissionsStep; private IndexProjectIssuesStep indexProjectIssuesStep; private SwitchSnapshotStep switchSnapshotStep; @@ -37,17 +36,16 @@ public class ComputationStepRegistryTest { @Before public void before() { - getAndSetProjectStep = mock(GetAndSetProjectStep.class); synchronizeProjectPermissionsStep = mock(SynchronizeProjectPermissionsStep.class); indexProjectIssuesStep = mock(IndexProjectIssuesStep.class); switchSnapshotStep = mock(SwitchSnapshotStep.class); dataCleanerStep = mock(DataCleanerStep.class); - sut = new ComputationStepRegistry(getAndSetProjectStep, synchronizeProjectPermissionsStep, indexProjectIssuesStep, switchSnapshotStep, dataCleanerStep); + sut = new ComputationStepRegistry(synchronizeProjectPermissionsStep, indexProjectIssuesStep, switchSnapshotStep, dataCleanerStep); } @Test public void steps_returned_in_the_right_order() throws Exception { - assertThat(sut.steps()).containsExactly(getAndSetProjectStep, synchronizeProjectPermissionsStep, switchSnapshotStep, dataCleanerStep, indexProjectIssuesStep); + assertThat(sut.steps()).containsExactly(synchronizeProjectPermissionsStep, switchSnapshotStep, dataCleanerStep, indexProjectIssuesStep); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/DataCleanerStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/DataCleanerStepTest.java index d2f76c270e3..6e90a48cff8 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/DataCleanerStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/DataCleanerStepTest.java @@ -53,9 +53,9 @@ public class DataCleanerStepTest { @Test public void call_purge_method_of_the_purge_task() { AnalysisReportDto report = mock(AnalysisReportDto.class); - when(report.getProject()).thenReturn(mock(ComponentDto.class)); + ComponentDto project = mock(ComponentDto.class); - sut.execute(mock(DbSession.class), report); + sut.execute(mock(DbSession.class), report, project); verify(purgeTask).purge(any(Long.class)); verify(issueIndex).deleteClosedIssuesOfProjectBefore(anyString(), any(Date.class)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/GetAndSetProjectStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/GetAndSetProjectStepTest.java deleted file mode 100644 index 561559d44d1..00000000000 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/GetAndSetProjectStepTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube 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. - * - * SonarQube 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.server.computation; - -import org.junit.Before; -import org.junit.Test; -import org.sonar.core.component.ComponentDto; -import org.sonar.core.computation.db.AnalysisReportDto; -import org.sonar.core.persistence.DbSession; -import org.sonar.server.component.ComponentTesting; -import org.sonar.server.component.db.ComponentDao; -import org.sonar.server.db.DbClient; - -import static org.fest.assertions.Assertions.assertThat; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class GetAndSetProjectStepTest { - - private GetAndSetProjectStep sut; - private DbClient dbClient; - private ComponentDto project; - private DbSession session; - - @Before - public void before() { - this.dbClient = mock(DbClient.class); - this.session = mock(DbSession.class); - this.project = ComponentTesting.newProjectDto(); - - ComponentDao componentDao = mock(ComponentDao.class); - when(dbClient.componentDao()).thenReturn(componentDao); - when(componentDao.getByKey(any(DbSession.class), anyString())).thenReturn(project); - - this.sut = new GetAndSetProjectStep(dbClient); - } - - @Test - public void set_project_return_by_dbclient() { - AnalysisReportDto report = new AnalysisReportDto().setProjectKey("123-456-789"); - - sut.execute(session, report); - - assertThat(report.getProject()).isEqualTo(project); - } - -} diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/IndexProjectIssuesStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/IndexProjectIssuesStepTest.java index 88b3f432762..5fdde8786a1 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/IndexProjectIssuesStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/IndexProjectIssuesStepTest.java @@ -118,9 +118,8 @@ public class IndexProjectIssuesStepTest { queue.add(DEFAULT_PROJECT_KEY, 123L); AnalysisReportDto report = queue.bookNextAvailable(); - report.setProject(project); - sut.execute(session, report); + sut.execute(session, report, project); // Check that the issue has well be indexed in E/S assertThat(tester.get(IssueIndex.class).getNullableByKey(issue.getKey())).isNotNull(); @@ -153,10 +152,9 @@ public class IndexProjectIssuesStepTest { queue.add(DEFAULT_PROJECT_KEY, 123L); List reports = queue.findByProjectKey(DEFAULT_PROJECT_KEY); AnalysisReportDto reportDto = reports.get(0); - reportDto.setProject(project); // ACT - sut.execute(session, reportDto); + sut.execute(session, reportDto, project); session.commit(); session.clearCache(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/SwitchSnapshotStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/SwitchSnapshotStepTest.java index c07035e7975..19ce4de5f1f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/SwitchSnapshotStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/SwitchSnapshotStepTest.java @@ -30,6 +30,7 @@ import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.MyBatis; import org.sonar.core.persistence.TestDatabase; +import org.sonar.server.component.ComponentTesting; import org.sonar.server.component.db.SnapshotDao; import static org.mockito.Mockito.mock; @@ -60,7 +61,7 @@ public class SwitchSnapshotStepTest { public void one_switch_with_a_snapshot_and_his_children() { db.prepareDbUnit(getClass(), "snapshots.xml"); - sut.execute(session, AnalysisReportDto.newForTests(1L).setSnapshotId(1L)); + sut.execute(session, AnalysisReportDto.newForTests(1L).setSnapshotId(1L), ComponentTesting.newProjectDto()); session.commit(); db.assertDbUnit(getClass(), "snapshots-result.xml", "snapshots"); @@ -70,6 +71,6 @@ public class SwitchSnapshotStepTest { public void throw_IllegalStateException_when_not_finding_snapshot() { db.prepareDbUnit(getClass(), "empty.xml"); - sut.execute(session, AnalysisReportDto.newForTests(1L).setSnapshotId(1L)); + sut.execute(session, AnalysisReportDto.newForTests(1L).setSnapshotId(1L), ComponentTesting.newProjectDto()); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/SynchronizeProjectPermissionsStepMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/SynchronizeProjectPermissionsStepMediumTest.java index cf354cf0e69..5e91f0dac4a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/SynchronizeProjectPermissionsStepMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/SynchronizeProjectPermissionsStepMediumTest.java @@ -54,10 +54,8 @@ public class SynchronizeProjectPermissionsStepMediumTest { private SynchronizeProjectPermissionsStep sut; private AnalysisReportQueue queue; - private GetAndSetProjectStep getAndSetProjectStep; private DbClient db; private DbSession session; - private MockUserSession userSession; @Before public void setUp() throws Exception { @@ -65,18 +63,15 @@ public class SynchronizeProjectPermissionsStepMediumTest { db = tester.get(DbClient.class); session = db.openSession(false); queue = tester.get(AnalysisReportQueue.class); - getAndSetProjectStep = tester.get(GetAndSetProjectStep.class); - - sut = tester.get(SynchronizeProjectPermissionsStep.class); - UserDto connectedUser = new UserDto().setLogin("gandalf").setName("Gandalf"); db.userDao().insert(session, connectedUser); - - userSession = MockUserSession.set() + MockUserSession.set() .setLogin(connectedUser.getLogin()) .setUserId(connectedUser.getId().intValue()) .setGlobalPermissions(GlobalPermissions.SCAN_EXECUTION); + sut = tester.get(SynchronizeProjectPermissionsStep.class); + session.commit(); } @@ -87,13 +82,12 @@ public class SynchronizeProjectPermissionsStepMediumTest { @Test public void add_project_issue_permission_in_index() throws Exception { - ComponentDto project = insertPermissionsForProject(DEFAULT_PROJECT_KEY); + ComponentDto project = insertProjectWithPermissions(DEFAULT_PROJECT_KEY); queue.add(DEFAULT_PROJECT_KEY, 123L); List reports = queue.findByProjectKey(DEFAULT_PROJECT_KEY); - getAndSetProjectStep.execute(session, reports.get(0)); - sut.execute(session, reports.get(0)); + sut.execute(session, reports.get(0), project); IssueAuthorizationDoc issueAuthorizationIndex = tester.get(IssueAuthorizationIndex.class).getNullableByKey(project.uuid()); assertThat(issueAuthorizationIndex).isNotNull(); @@ -102,25 +96,25 @@ public class SynchronizeProjectPermissionsStepMediumTest { @Test public void not_add_project_issue_permission_if_already_existing() throws Exception { - ComponentDto project = insertPermissionsForProject(DEFAULT_PROJECT_KEY); + ComponentDto project = insertProjectWithPermissions(DEFAULT_PROJECT_KEY); // Synchronisation on project is already done db.issueAuthorizationDao().synchronizeAfter(session, null, ImmutableMap.of("project", project.uuid())); - // To check that permission will not be synchronized again, add a new permission on the project in db, this permission should not be in the index + // To check that permission will not be synchronized again, add a new permission on the project in db, this permission should not be in + // the index tester.get(PermissionFacade.class).insertGroupPermission(project.getId(), DefaultGroups.USERS, UserRole.USER, session); queue.add(DEFAULT_PROJECT_KEY, 123L); List reports = queue.findByProjectKey(DEFAULT_PROJECT_KEY); - getAndSetProjectStep.execute(session, reports.get(0)); - sut.execute(session, reports.get(0)); + sut.execute(session, reports.get(0), project); IssueAuthorizationDoc issueAuthorizationIndex = tester.get(IssueAuthorizationIndex.class).getNullableByKey(project.uuid()); assertThat(issueAuthorizationIndex).isNotNull(); assertThat(issueAuthorizationIndex.groups()).containsExactly(DefaultGroups.ANYONE); } - private ComponentDto insertPermissionsForProject(String projectKey) { + private ComponentDto insertProjectWithPermissions(String projectKey) { ComponentDto project = ComponentTesting.newProjectDto().setKey(projectKey); db.componentDao().insert(session, project); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/ws/AnalysisReportHistorySearchActionMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/ws/AnalysisReportHistorySearchActionMediumTest.java index fe9231efe01..969f7c2c9fe 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/ws/AnalysisReportHistorySearchActionMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/ws/AnalysisReportHistorySearchActionMediumTest.java @@ -26,6 +26,7 @@ import org.junit.ClassRule; import org.junit.Test; import org.sonar.api.security.DefaultGroups; import org.sonar.api.web.UserRole; +import org.sonar.core.activity.Activity; import org.sonar.core.component.ComponentDto; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.permission.GlobalPermissions; @@ -33,7 +34,11 @@ import org.sonar.core.permission.PermissionFacade; import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.MyBatis; import org.sonar.core.user.UserDto; +import org.sonar.server.activity.ActivityService; +import org.sonar.server.component.ComponentTesting; +import org.sonar.server.computation.AnalysisReportLog; import org.sonar.server.computation.AnalysisReportQueue; +import org.sonar.server.computation.ComputationService; import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.tester.ServerTester; @@ -46,6 +51,8 @@ import static org.fest.assertions.Assertions.assertThat; public class AnalysisReportHistorySearchActionMediumTest { private static final String DEFAULT_PROJECT_KEY = "DefaultProjectKey"; + private static final String DEFAULT_PROJECT_NAME = "DefaultProjectName"; + @ClassRule public static ServerTester tester = new ServerTester(); @@ -54,6 +61,8 @@ public class AnalysisReportHistorySearchActionMediumTest { private WsTester wsTester; private AnalysisReportQueue queue; private MockUserSession userSession; + private ComputationService computationService; + private ActivityService activityService; @Before public void before() { @@ -62,6 +71,7 @@ public class AnalysisReportHistorySearchActionMediumTest { wsTester = tester.get(WsTester.class); session = dbClient.openSession(false); queue = tester.get(AnalysisReportQueue.class); + activityService = tester.get(ActivityService.class); UserDto connectedUser = new UserDto().setLogin("gandalf").setName("Gandalf"); dbClient.userDao().insert(session, connectedUser); @@ -85,23 +95,26 @@ public class AnalysisReportHistorySearchActionMediumTest { queue.add(DEFAULT_PROJECT_KEY, 123L); List reports = queue.all(); + ComponentDto project = ComponentTesting.newProjectDto() + .setName(DEFAULT_PROJECT_NAME) + .setKey(DEFAULT_PROJECT_KEY); for (AnalysisReportDto report : reports) { report.succeed(); - queue.remove(report); + activityService.write(session, Activity.Type.ANALYSIS_REPORT, new AnalysisReportLog(report, project)); } + session.commit(); userSession.setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); WsTester.TestRequest request = wsTester.newGetRequest(AnalysisReportWebService.API_ENDPOINT, AnalysisReportHistorySearchAction.SEARCH_ACTION); WsTester.Result result = request.execute(); assertThat(result).isNotNull(); - // TODO add the createdAt and updatedAt field in the json file when System2 is easily mockable result.assertJson(getClass(), "list_history_reports.json", false); } private ComponentDto insertPermissionsForProject(String projectKey) { - ComponentDto project = new ComponentDto().setKey(projectKey); + ComponentDto project = new ComponentDto().setKey(projectKey).setId(1L); dbClient.componentDao().insert(session, project); tester.get(PermissionFacade.class).insertGroupPermission(project.getId(), DefaultGroups.ANYONE, UserRole.USER, session); diff --git a/server/sonar-server/src/test/resources/org/sonar/server/computation/ws/AnalysisReportHistorySearchActionMediumTest/list_history_reports.json b/server/sonar-server/src/test/resources/org/sonar/server/computation/ws/AnalysisReportHistorySearchActionMediumTest/list_history_reports.json index 35b1d59b4bb..b0ed60a0876 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/computation/ws/AnalysisReportHistorySearchActionMediumTest/list_history_reports.json +++ b/server/sonar-server/src/test/resources/org/sonar/server/computation/ws/AnalysisReportHistorySearchActionMediumTest/list_history_reports.json @@ -2,17 +2,17 @@ "reports": [ { "status": "SUCCESS", - "projectName": "DefaultProjectKey", + "projectName": "DefaultProjectName", "projectKey": "DefaultProjectKey" }, { "status": "SUCCESS", - "projectName": "DefaultProjectKey", + "projectName": "DefaultProjectName", "projectKey": "DefaultProjectKey" }, { "status": "SUCCESS", - "projectName": "DefaultProjectKey", + "projectName": "DefaultProjectName", "projectKey": "DefaultProjectKey" } ] diff --git a/sonar-core/src/main/java/org/sonar/core/component/ComponentDto.java b/sonar-core/src/main/java/org/sonar/core/component/ComponentDto.java index 71ce1b8122c..90e1e93f32d 100644 --- a/sonar-core/src/main/java/org/sonar/core/component/ComponentDto.java +++ b/sonar-core/src/main/java/org/sonar/core/component/ComponentDto.java @@ -48,7 +48,6 @@ public class ComponentDto extends Dto implements Component { private boolean enabled = true; private Date authorizationUpdatedAt; - public Long getId() { return id; } @@ -71,11 +70,6 @@ public class ComponentDto extends Dto implements Component { return kee; } - public ComponentDto setKey(String key) { - this.kee = key; - return this; - } - public String scope() { return scope; } @@ -217,7 +211,12 @@ public class ComponentDto extends Dto implements Component { @Override public String getKey() { - return kee; + return key(); + } + + public ComponentDto setKey(String key) { + this.kee = key; + return this; } @Override diff --git a/sonar-core/src/main/java/org/sonar/core/computation/db/AnalysisReportDto.java b/sonar-core/src/main/java/org/sonar/core/computation/db/AnalysisReportDto.java index 725a87f81a5..52b563dcd7a 100644 --- a/sonar-core/src/main/java/org/sonar/core/computation/db/AnalysisReportDto.java +++ b/sonar-core/src/main/java/org/sonar/core/computation/db/AnalysisReportDto.java @@ -21,18 +21,12 @@ package org.sonar.core.computation.db; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Objects; -import com.google.common.base.Strings; -import org.sonar.core.component.ComponentDto; import org.sonar.core.persistence.Dto; import javax.annotation.Nullable; import java.util.Date; -import static com.google.common.base.Preconditions.checkNotNull; -import static org.sonar.core.computation.db.AnalysisReportDto.Status.FAILED; -import static org.sonar.core.computation.db.AnalysisReportDto.Status.SUCCESS; - public class AnalysisReportDto extends Dto { private Long id; @@ -42,7 +36,6 @@ public class AnalysisReportDto extends Dto { private Long snapshotId; private Date startedAt; private Date finishedAt; - private ComponentDto project; public AnalysisReportDto() { super(); @@ -75,11 +68,11 @@ public class AnalysisReportDto extends Dto { } public void fail() { - this.status = FAILED; + this.status = Status.FAILED; } public void succeed() { - this.status = SUCCESS; + this.status = Status.SUCCESS; } public String getData() { @@ -113,22 +106,6 @@ public class AnalysisReportDto extends Dto { .toString(); } - public String getProjectName() { - if (project == null) { - return getProjectKey(); - } - - return Strings.nullToEmpty(project.name()); - } - - public String getProjectUuid() { - if (project == null) { - return getProjectKey(); - } - - return Strings.nullToEmpty(project.uuid()); - } - public Long getSnapshotId() { return snapshotId; } @@ -168,15 +145,6 @@ public class AnalysisReportDto extends Dto { return this; } - public ComponentDto getProject() { - return checkNotNull(project); - } - - public AnalysisReportDto setProject(ComponentDto project) { - this.project = project; - return this; - } - public enum Status { PENDING, WORKING, SUCCESS, FAILED; -- 2.39.5