From: Julien HENRY Date: Thu, 18 Feb 2016 16:49:46 +0000 (+0100) Subject: No need to take into account personId in measure cache (devcockpit moved to CE) X-Git-Tag: 5.5-M4~15 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=cef567021858b0e7239ac80d4512172ef7b70dbd;p=sonarqube.git No need to take into account personId in measure cache (devcockpit moved to CE) --- diff --git a/sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java b/sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java index 7cfeac5697f..d5f1a561729 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java +++ b/sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java @@ -151,20 +151,19 @@ public class DefaultIndex extends SonarIndex { if (indexedResource == null) { return null; } - Iterable unfiltered; + Collection unfiltered = new ArrayList<>(); if (filter instanceof MeasuresFilters.MetricFilter) { // optimization - unfiltered = measureCache.byMetric(indexedResource, ((MeasuresFilters.MetricFilter) filter).filterOnMetricKey()); + Measure byMetric = measureCache.byMetric(indexedResource, ((MeasuresFilters.MetricFilter) filter).filterOnMetricKey()); + if (byMetric != null) { + unfiltered.add(byMetric); + } } else { - unfiltered = measureCache.byResource(indexedResource); - } - Collection 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 diff --git a/sonar-batch/src/main/java/org/sonar/batch/report/CoveragePublisher.java b/sonar-batch/src/main/java/org/sonar/batch/report/CoveragePublisher.java index c1b8b477945..dbfe3b4d03b 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/report/CoveragePublisher.java +++ b/sonar-batch/src/main/java/org/sonar/batch/report/CoveragePublisher.java @@ -102,9 +102,8 @@ public class CoveragePublisher implements ReportPublisherStep { } void applyLineMeasure(String inputFileKey, int lineCount, String metricKey, Map coveragePerLine, MeasureOperation op) { - Iterable measures = measureCache.byMetric(inputFileKey, metricKey); - if (measures.iterator().hasNext()) { - Measure measure = measures.iterator().next(); + Measure measure = measureCache.byMetric(inputFileKey, metricKey); + if (measure != null) { Map lineMeasures = KeyValueFormat.parseIntString((String) measure.value()); for (Map.Entry lineMeasure : lineMeasures.entrySet()) { int lineIdx = lineMeasure.getKey(); diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/measure/MeasureCache.java b/sonar-batch/src/main/java/org/sonar/batch/scan/measure/MeasureCache.java index f262669ac3b..c0adb26f4b6 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/measure/MeasureCache.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/measure/MeasureCache.java @@ -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 byMetric(Resource r, String metricKey) { + @CheckForNull + public Measure byMetric(Resource r, String metricKey) { return byMetric(r.getEffectiveKey(), metricKey); } - public Iterable 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()); } } diff --git a/sonar-batch/src/test/java/org/sonar/batch/report/CoveragePublisherTest.java b/sonar-batch/src/test/java/org/sonar/batch/report/CoveragePublisherTest.java index 8ab2fb9b9df..07952274c45 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/report/CoveragePublisherTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/report/CoveragePublisherTest.java @@ -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.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);