]> source.dussan.org Git - sonarqube.git/commitdiff
No need to take into account personId in measure cache (devcockpit moved to CE)
authorJulien HENRY <julien.henry@sonarsource.com>
Thu, 18 Feb 2016 16:49:46 +0000 (17:49 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 22 Feb 2016 09:57:25 +0000 (10:57 +0100)
sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java
sonar-batch/src/main/java/org/sonar/batch/report/CoveragePublisher.java
sonar-batch/src/main/java/org/sonar/batch/scan/measure/MeasureCache.java
sonar-batch/src/test/java/org/sonar/batch/report/CoveragePublisherTest.java

index 7cfeac5697f312568bf7932f7923f84ee7cdd26d..d5f1a5617299a1e8e3efe619d110df088eda22d7 100644 (file)
@@ -151,20 +151,19 @@ public class DefaultIndex extends SonarIndex {
     if (indexedResource == null) {
       return null;
     }
-    Iterable<Measure> unfiltered;
+    Collection<Measure> unfiltered = new ArrayList<>();
     if (filter instanceof MeasuresFilters.MetricFilter) {
       // optimization
-      unfiltered = measureCache.byMetric(indexedResource, ((MeasuresFilters.MetricFilter<M>) filter).filterOnMetricKey());
+      Measure byMetric = measureCache.byMetric(indexedResource, ((MeasuresFilters.MetricFilter<M>) filter).filterOnMetricKey());
+      if (byMetric != null) {
+        unfiltered.add(byMetric);
+      }
     } else {
-      unfiltered = measureCache.byResource(indexedResource);
-    }
-    Collection<Measure> all = new ArrayList<>();
-    if (unfiltered != null) {
-      for (Measure measure : unfiltered) {
-        all.add(measure);
+      for (Measure measure : measureCache.byResource(indexedResource)) {
+        unfiltered.add(measure);
       }
     }
-    return filter.filter(all);
+    return filter.filter(unfiltered);
   }
 
   @Override
index c1b8b477945ec697352dc3e31400c734295d40bd..dbfe3b4d03b77ed8a22fd2e8b36cc005665ddbfc 100644 (file)
@@ -102,9 +102,8 @@ public class CoveragePublisher implements ReportPublisherStep {
   }
 
   void applyLineMeasure(String inputFileKey, int lineCount, String metricKey, Map<Integer, Coverage.Builder> coveragePerLine, MeasureOperation op) {
-    Iterable<Measure> measures = measureCache.byMetric(inputFileKey, metricKey);
-    if (measures.iterator().hasNext()) {
-      Measure measure = measures.iterator().next();
+    Measure measure = measureCache.byMetric(inputFileKey, metricKey);
+    if (measure != null) {
       Map<Integer, String> lineMeasures = KeyValueFormat.parseIntString((String) measure.value());
       for (Map.Entry<Integer, String> lineMeasure : lineMeasures.entrySet()) {
         int lineIdx = lineMeasure.getKey();
index f262669ac3b0c53a840759caab51df8f335489ec..c0adb26f4b60a6375598f6aeae5e96ec58bfb150 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.batch.scan.measure;
 
 import com.google.common.base.Preconditions;
+import javax.annotation.CheckForNull;
 import org.sonar.api.batch.BatchSide;
 import org.sonar.api.batch.measure.MetricFinder;
 import org.sonar.api.measures.Measure;
@@ -53,38 +54,27 @@ public class MeasureCache {
     return cache.values(r.getEffectiveKey());
   }
 
-  public Iterable<Measure> byMetric(Resource r, String metricKey) {
+  @CheckForNull
+  public Measure byMetric(Resource r, String metricKey) {
     return byMetric(r.getEffectiveKey(), metricKey);
   }
 
-  public Iterable<Measure> byMetric(String resourceKey, String metricKey) {
-    return cache.values(resourceKey, metricKey);
+  @CheckForNull
+  public Measure byMetric(String resourceKey, String metricKey) {
+    return cache.get(resourceKey, metricKey);
   }
 
   public MeasureCache put(Resource resource, Measure measure) {
     Preconditions.checkNotNull(resource.getEffectiveKey());
     Preconditions.checkNotNull(measure.getMetricKey());
-    cache.put(resource.getEffectiveKey(), measure.getMetricKey(), computeMeasureKey(measure), measure);
+    cache.put(resource.getEffectiveKey(), measure.getMetricKey(), measure);
     return this;
   }
 
   public boolean contains(Resource resource, Measure measure) {
     Preconditions.checkNotNull(resource.getEffectiveKey());
     Preconditions.checkNotNull(measure.getMetricKey());
-    return cache.containsKey(resource.getEffectiveKey(), measure.getMetricKey(), computeMeasureKey(measure));
-  }
-
-  private static String computeMeasureKey(Measure m) {
-    StringBuilder sb = new StringBuilder();
-    if (m.getMetricKey() != null) {
-      sb.append(m.getMetricKey());
-    }
-    sb.append("|");
-    Integer personId = m.getPersonId();
-    if (personId != null) {
-      sb.append(personId);
-    }
-    return sb.toString();
+    return cache.containsKey(resource.getEffectiveKey(), measure.getMetricKey());
   }
 
 }
index 8ab2fb9b9df4f19c2ff67e47052316f7345365a1..07952274c4559ff531f3f806656bb756216e69ac 100644 (file)
@@ -20,8 +20,6 @@
 package org.sonar.batch.report;
 
 import java.io.File;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.Date;
 import org.junit.Before;
 import org.junit.Rule;
@@ -62,7 +60,7 @@ public class CoveragePublisherTest {
     resourceCache.add(p, null).setInputComponent(new DefaultInputModule("foo"));
     resourceCache.add(sampleFile, null).setInputComponent(new DefaultInputFile("foo", "src/Foo.php").setLines(5));
     measureCache = mock(MeasureCache.class);
-    when(measureCache.byMetric(anyString(), anyString())).thenReturn(Collections.<Measure>emptyList());
+    when(measureCache.byMetric(anyString(), anyString())).thenReturn(null);
     publisher = new CoveragePublisher(resourceCache, measureCache);
   }
 
@@ -70,22 +68,22 @@ public class CoveragePublisherTest {
   public void publishCoverage() throws Exception {
 
     Measure utLineHits = new Measure<>(CoreMetrics.COVERAGE_LINE_HITS_DATA).setData("2=1;3=1;5=0;6=3");
-    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.COVERAGE_LINE_HITS_DATA_KEY)).thenReturn(Arrays.asList(utLineHits));
+    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.COVERAGE_LINE_HITS_DATA_KEY)).thenReturn(utLineHits);
 
     Measure conditionsByLine = new Measure<>(CoreMetrics.CONDITIONS_BY_LINE).setData("3=4");
-    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.CONDITIONS_BY_LINE_KEY)).thenReturn(Arrays.asList(conditionsByLine));
+    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.CONDITIONS_BY_LINE_KEY)).thenReturn(conditionsByLine);
 
     Measure coveredConditionsByUts = new Measure<>(CoreMetrics.COVERED_CONDITIONS_BY_LINE).setData("3=2");
-    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.COVERED_CONDITIONS_BY_LINE_KEY)).thenReturn(Arrays.asList(coveredConditionsByUts));
+    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.COVERED_CONDITIONS_BY_LINE_KEY)).thenReturn(coveredConditionsByUts);
 
     Measure itLineHits = new Measure<>(CoreMetrics.IT_COVERAGE_LINE_HITS_DATA).setData("2=0;3=0;5=1");
-    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.IT_COVERAGE_LINE_HITS_DATA_KEY)).thenReturn(Arrays.asList(itLineHits));
+    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.IT_COVERAGE_LINE_HITS_DATA_KEY)).thenReturn(itLineHits);
 
     Measure coveredConditionsByIts = new Measure<>(CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE).setData("3=1");
-    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE_KEY)).thenReturn(Arrays.asList(coveredConditionsByIts));
+    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE_KEY)).thenReturn(coveredConditionsByIts);
 
     Measure overallCoveredConditions = new Measure<>(CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE).setData("3=2");
-    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE_KEY)).thenReturn(Arrays.asList(overallCoveredConditions));
+    when(measureCache.byMetric("foo:src/Foo.php", CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE_KEY)).thenReturn(overallCoveredConditions);
 
     File outputDir = temp.newFolder();
     BatchReportWriter writer = new BatchReportWriter(outputDir);