aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch/src/main/java/org/sonar/batch/index/SourcePersister.java
diff options
context:
space:
mode:
Diffstat (limited to 'sonar-batch/src/main/java/org/sonar/batch/index/SourcePersister.java')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/index/SourcePersister.java28
1 files changed, 16 insertions, 12 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/index/SourcePersister.java b/sonar-batch/src/main/java/org/sonar/batch/index/SourcePersister.java
index 4480ab4bef5..1b1857c7fc9 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/index/SourcePersister.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/index/SourcePersister.java
@@ -23,9 +23,8 @@ import com.google.common.collect.Sets;
import org.sonar.api.database.DatabaseSession;
import org.sonar.api.database.model.Snapshot;
import org.sonar.api.database.model.SnapshotSource;
-import org.sonar.api.resources.Project;
+import org.sonar.api.resources.DuplicatedSourceException;
import org.sonar.api.resources.Resource;
-import org.sonar.api.utils.SonarException;
import java.util.Set;
@@ -40,17 +39,22 @@ public final class SourcePersister {
this.resourcePersister = resourcePersister;
}
- public void saveSource(Project project, Resource resource, String source) {
- Snapshot snapshot = resourcePersister.saveResource(project, resource);
- if (snapshot != null) {
-
- if (savedSnapshotIds.contains(snapshot.getId())) {
- throw new SonarException("Can not set twice the source of " + resource);
- }
- session.save(new SnapshotSource(snapshot.getId(), source));
- session.commit();
- savedSnapshotIds.add(snapshot.getId());
+ public void saveSource(Resource resource, String source) {
+ Snapshot snapshot = resourcePersister.getSnapshotOrFail(resource);
+ if (isCached(snapshot)) {
+ throw new DuplicatedSourceException(resource);
}
+ session.save(new SnapshotSource(snapshot.getId(), source));
+ session.commit();
+ addToCache(snapshot);
+ }
+
+ private boolean isCached(Snapshot snapshot) {
+ return savedSnapshotIds.contains(snapshot.getId());
+ }
+
+ private void addToCache(Snapshot snapshot) {
+ savedSnapshotIds.add(snapshot.getId());
}
public void clear() {