diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-04-18 12:15:13 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-04-18 14:09:18 +0200 |
commit | bfeca720d3a702b77664b0164aa02ce89b353cec (patch) | |
tree | e68bad3f6151ed92c89667fa7e92e55cc8487401 /sonar-batch/src/main | |
parent | 5857333fb71af4090a6b3dcb3e972d465873f98d (diff) | |
download | sonarqube-bfeca720d3a702b77664b0164aa02ce89b353cec.tar.gz sonarqube-bfeca720d3a702b77664b0164aa02ce89b353cec.zip |
SONAR-5218 Once a module has been turned into a project, its issues are no more visible in the UI
Diffstat (limited to 'sonar-batch/src/main')
4 files changed, 17 insertions, 19 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/issue/DefaultIssuable.java b/sonar-batch/src/main/java/org/sonar/batch/issue/DefaultIssuable.java index 62b44e7d69e..578bb2bb49e 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/issue/DefaultIssuable.java +++ b/sonar-batch/src/main/java/org/sonar/batch/issue/DefaultIssuable.java @@ -24,6 +24,7 @@ import org.sonar.api.component.Component; import org.sonar.api.issue.Issuable; import org.sonar.api.issue.Issue; import org.sonar.api.issue.internal.DefaultIssue; +import org.sonar.api.resources.Project; import org.sonar.core.issue.DefaultIssueBuilder; import java.util.List; @@ -36,16 +37,18 @@ public class DefaultIssuable implements Issuable { private final ModuleIssues moduleIssues; private final IssueCache cache; private final Component component; + private final Project project; - DefaultIssuable(Component component, ModuleIssues moduleIssues, IssueCache cache) { + DefaultIssuable(Component component, Project project, ModuleIssues moduleIssues, IssueCache cache) { this.component = component; + this.project = project; this.moduleIssues = moduleIssues; this.cache = cache; } @Override public IssueBuilder newIssueBuilder() { - return new DefaultIssueBuilder().componentKey(component.key()); + return new DefaultIssueBuilder().componentKey(component.key()).projectKey(project.getKey()); } @Override diff --git a/sonar-batch/src/main/java/org/sonar/batch/issue/IssuableFactory.java b/sonar-batch/src/main/java/org/sonar/batch/issue/IssuableFactory.java index 147ab7c7c15..7491bbb7814 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/issue/IssuableFactory.java +++ b/sonar-batch/src/main/java/org/sonar/batch/issue/IssuableFactory.java @@ -22,6 +22,7 @@ package org.sonar.batch.issue; import org.sonar.api.component.Component; import org.sonar.api.issue.Issuable; import org.sonar.api.resources.Scopes; +import org.sonar.batch.ProjectTree; import org.sonar.core.component.PerspectiveBuilder; import org.sonar.core.component.ResourceComponent; @@ -35,11 +36,13 @@ public class IssuableFactory extends PerspectiveBuilder<Issuable> { private final ModuleIssues moduleIssues; private final IssueCache cache; + private final ProjectTree projectTree; - public IssuableFactory(ModuleIssues moduleIssues, IssueCache cache) { + public IssuableFactory(ModuleIssues moduleIssues, IssueCache cache, ProjectTree projectTree) { super(Issuable.class); this.moduleIssues = moduleIssues; this.cache = cache; + this.projectTree = projectTree; } @CheckForNull @@ -49,6 +52,6 @@ public class IssuableFactory extends PerspectiveBuilder<Issuable> { if (component instanceof ResourceComponent) { supported = Scopes.isHigherThanOrEquals(((ResourceComponent) component).scope(), Scopes.FILE); } - return supported ? new DefaultIssuable(component, moduleIssues, cache) : null; + return supported ? new DefaultIssuable(component, projectTree.getRootProject(), moduleIssues, cache) : null; } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/issue/ModuleIssues.java b/sonar-batch/src/main/java/org/sonar/batch/issue/ModuleIssues.java index c0a49d68671..6f46e2cc7a9 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/issue/ModuleIssues.java +++ b/sonar-batch/src/main/java/org/sonar/batch/issue/ModuleIssues.java @@ -67,6 +67,7 @@ public class ModuleIssues { private DefaultIssue newIssue(Violation violation) { return (DefaultIssue) new DefaultIssueBuilder() .componentKey(violation.getResource().getEffectiveKey()) + .projectKey(project.getRoot().getEffectiveKey()) .ruleKey(RuleKey.of(violation.getRule().getRepositoryKey(), violation.getRule().getKey())) .effortToFix(violation.getCost()) .line(violation.getLineId()) diff --git a/sonar-batch/src/main/java/org/sonar/batch/issue/ScanIssueStorage.java b/sonar-batch/src/main/java/org/sonar/batch/issue/ScanIssueStorage.java index 23dab80cde1..723082eb335 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/issue/ScanIssueStorage.java +++ b/sonar-batch/src/main/java/org/sonar/batch/issue/ScanIssueStorage.java @@ -23,6 +23,7 @@ import org.sonar.api.BatchComponent; import org.sonar.api.database.model.Snapshot; import org.sonar.api.issue.internal.DefaultIssue; import org.sonar.api.rules.RuleFinder; +import org.sonar.batch.ProjectTree; import org.sonar.batch.index.SnapshotCache; import org.sonar.core.issue.db.IssueStorage; import org.sonar.core.persistence.MyBatis; @@ -34,16 +35,18 @@ public class ScanIssueStorage extends IssueStorage implements BatchComponent { private final SnapshotCache snapshotCache; private final ResourceDao resourceDao; + private final ProjectTree projectTree; - public ScanIssueStorage(MyBatis mybatis, RuleFinder ruleFinder, SnapshotCache snapshotCache, ResourceDao resourceDao) { + public ScanIssueStorage(MyBatis mybatis, RuleFinder ruleFinder, SnapshotCache snapshotCache, ResourceDao resourceDao, ProjectTree projectTree) { super(mybatis, ruleFinder); this.snapshotCache = snapshotCache; this.resourceDao = resourceDao; + this.projectTree = projectTree; } @Override protected long componentId(DefaultIssue issue) { - Snapshot snapshot = getSnapshot(issue); + Snapshot snapshot = snapshotCache.get(issue.componentKey()); if (snapshot != null) { return snapshot.getResourceId(); } @@ -58,19 +61,7 @@ public class ScanIssueStorage extends IssueStorage implements BatchComponent { @Override protected long projectId(DefaultIssue issue) { - Snapshot snapshot = getSnapshot(issue); - if (snapshot != null) { - return snapshot.getRootProjectId(); - } - throw new IllegalStateException("Project id not found for: " + issue.componentKey()); - } - - private Snapshot getSnapshot(DefaultIssue issue) { - Snapshot snapshot = snapshotCache.get(issue.componentKey()); - if (snapshot != null) { - return snapshot; - } - return null; + return projectTree.getRootProject().getId(); } } |