]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6324 Disable cross project duplications
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Wed, 10 Jun 2015 12:24:09 +0000 (14:24 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Wed, 10 Jun 2015 12:30:42 +0000 (14:30 +0200)
sonar-batch/src/main/java/org/sonar/batch/cpd/index/DbDuplicationsIndex.java
sonar-batch/src/main/java/org/sonar/batch/cpd/index/IndexFactory.java
sonar-batch/src/test/java/org/sonar/batch/cpd/index/IndexFactoryTest.java

index 70fb4d77b2ad3b27dd0708251af323b901c988fe..5e2908d23f078f299149ff67fd5610b6cc3e6052 100644 (file)
@@ -21,55 +21,26 @@ package org.sonar.batch.cpd.index;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.fs.internal.DefaultInputFile;
-import org.sonar.api.database.DatabaseSession;
-import org.sonar.api.database.model.Snapshot;
-import org.sonar.api.resources.Project;
 import org.sonar.batch.index.BatchComponentCache;
-import org.sonar.core.duplication.DuplicationDao;
 import org.sonar.core.duplication.DuplicationUnitDto;
 import org.sonar.duplications.block.Block;
 import org.sonar.duplications.block.ByteArray;
 
-import javax.persistence.Query;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
 public class DbDuplicationsIndex {
 
-  private static final String RESOURCE_ID = "resourceId";
-  private static final String LAST = "last";
-
   private final Map<ByteArray, Collection<Block>> cache = Maps.newHashMap();
 
-  private final int currentProjectSnapshotId;
-  private final Integer lastSnapshotId;
-  private final String languageKey;
-  private final DuplicationDao dao;
-  private final DatabaseSession session;
   private final BatchComponentCache resourceCache;
 
-  public DbDuplicationsIndex(Project currentProject, DuplicationDao dao,
-    String language, DatabaseSession session, BatchComponentCache resourceCache) {
-    this.dao = dao;
-    this.session = session;
+  public DbDuplicationsIndex(BatchComponentCache resourceCache) {
     this.resourceCache = resourceCache;
-    Snapshot lastSnapshot = getLastSnapshot(currentProject.getId());
-    this.currentProjectSnapshotId = resourceCache.get(currentProject.getEffectiveKey()).snapshotId();
-    this.lastSnapshotId = lastSnapshot == null ? null : lastSnapshot.getId();
-    this.languageKey = language;
-  }
-
-  private Snapshot getLastSnapshot(int resourceId) {
-    String hql = "SELECT s FROM " + Snapshot.class.getSimpleName() + " s WHERE s.last=:last AND s.resourceId=:resourceId";
-    Query query = session.createQuery(hql);
-    query.setParameter(LAST, true);
-    query.setParameter(RESOURCE_ID, resourceId);
-    return session.getSingleResult(query, null);
   }
 
   int getSnapshotIdFor(InputFile inputFile) {
@@ -77,8 +48,7 @@ public class DbDuplicationsIndex {
   }
 
   public void prepareCache(InputFile inputFile) {
-    int resourceSnapshotId = getSnapshotIdFor(inputFile);
-    List<DuplicationUnitDto> units = dao.selectCandidates(resourceSnapshotId, lastSnapshotId, languageKey);
+    List<DuplicationUnitDto> units = new ArrayList<>();
     cache.clear();
     // TODO Godin: maybe remove conversion of units to blocks?
     for (DuplicationUnitDto unit : units) {
@@ -122,7 +92,8 @@ public class DbDuplicationsIndex {
     List<DuplicationUnitDto> units = Lists.newArrayList();
     for (Block block : blocks) {
       DuplicationUnitDto unit = new DuplicationUnitDto(
-        currentProjectSnapshotId,
+        // TODO batch is no more creating snapshot
+        null,
         resourceSnapshotId,
         block.getBlockHash().toString(),
         block.getIndexInFile(),
@@ -130,8 +101,6 @@ public class DbDuplicationsIndex {
         block.getEndLine());
       units.add(unit);
     }
-
-    dao.insert(units);
   }
 
 }
index 6ee5c5edc7d27e1d3bc0916edc4a0b5bee6c4a68..26fa317b8bbc269e8cea7ef7e1e957055ec9a759 100644 (file)
 package org.sonar.batch.cpd.index;
 
 import com.google.common.annotations.VisibleForTesting;
+import javax.annotation.Nullable;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.sonar.api.batch.BatchSide;
 import org.sonar.api.CoreProperties;
+import org.sonar.api.batch.BatchSide;
 import org.sonar.api.config.Settings;
-import org.sonar.api.database.DatabaseSession;
 import org.sonar.api.resources.Project;
 import org.sonar.batch.bootstrap.DefaultAnalysisMode;
-import org.sonar.batch.index.BatchComponentCache;
-import org.sonar.core.duplication.DuplicationDao;
-
-import javax.annotation.Nullable;
 
 @BatchSide
 public class IndexFactory {
 
-  private static final Logger LOG = LoggerFactory.getLogger(IndexFactory.class);
-
   private final Settings settings;
-  private final DuplicationDao dao;
   private final DefaultAnalysisMode mode;
-  private final DatabaseSession session;
-  private final BatchComponentCache resourceCache;
 
-  public IndexFactory(DefaultAnalysisMode mode, Settings settings, @Nullable DuplicationDao dao, @Nullable DatabaseSession session, BatchComponentCache resourceCache) {
+  public IndexFactory(DefaultAnalysisMode mode, Settings settings) {
     this.mode = mode;
     this.settings = settings;
-    this.dao = dao;
-    this.session = session;
-    this.resourceCache = resourceCache;
-  }
-
-  /**
-   * Used by new sensor mode
-   */
-  public IndexFactory(DefaultAnalysisMode mode, Settings settings, BatchComponentCache resourceCache) {
-    this(mode, settings, null, null, resourceCache);
   }
 
   public SonarDuplicationsIndex create(@Nullable Project project, String languageKey) {
-    if (verifyCrossProject(project, LOG) && dao != null && session != null) {
-      return new SonarDuplicationsIndex(new DbDuplicationsIndex(project, dao, languageKey, session, resourceCache));
-    }
     return new SonarDuplicationsIndex();
   }
 
index 7028bfcceba710042766b485aab028f5185b15ea..07279e5396b676d92cc7c31a1f6fff329029c8dd 100644 (file)
@@ -24,11 +24,8 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.config.Settings;
-import org.sonar.api.database.DatabaseSession;
 import org.sonar.api.resources.Project;
 import org.sonar.batch.bootstrap.DefaultAnalysisMode;
-import org.sonar.batch.index.BatchComponentCache;
-import org.sonar.core.duplication.DuplicationDao;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
@@ -48,7 +45,7 @@ public class IndexFactoryTest {
     project = new Project("foo");
     settings = new Settings();
     analysisMode = mock(DefaultAnalysisMode.class);
-    factory = new IndexFactory(analysisMode, settings, mock(DuplicationDao.class), mock(DatabaseSession.class), new BatchComponentCache());
+    factory = new IndexFactory(analysisMode, settings);
     logger = mock(Logger.class);
   }