]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7636 Deprecate org.sonar.api.measures.Measure + many small API improvements
authorJulien HENRY <julien.henry@sonarsource.com>
Thu, 12 May 2016 09:32:50 +0000 (11:32 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Thu, 12 May 2016 13:19:59 +0000 (15:19 +0200)
19 files changed:
plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/lang/MeasureSensorTest.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/measure/MetricFinder.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/measure/NewMeasure.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/CountDistributionBuilder.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/Measure.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/MeasureBuilder.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/MeasureUtils.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/MeasuresFilter.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/MeasuresFilters.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/Metric.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/MetricFinder.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/Metrics.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/PersistenceMode.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/PropertiesBuilder.java
sonar-scanner-engine/src/main/java/org/sonar/batch/scan/measure/DefaultMetricFinder.java
sonar-scanner-engine/src/main/java/org/sonar/batch/scan/measure/MeasureCache.java
sonar-scanner-engine/src/test/java/org/sonar/batch/scan/measure/MeasureCacheTest.java
sonar-scanner-engine/src/test/java/org/sonar/batch/sensor/DefaultSensorContextTest.java
sonar-scanner-engine/src/test/java/org/sonar/batch/sensor/DefaultSensorStorageTest.java

index 2b384b02747a65d41ad7b3e65bc0d03d8c914d9c..7ce2dc972ff6d1c5dbed082b162a906879eac6c4 100644 (file)
@@ -19,6 +19,8 @@
  */
 package org.sonar.xoo.lang;
 
+import java.io.File;
+import java.io.IOException;
 import org.apache.commons.io.FileUtils;
 import org.junit.Before;
 import org.junit.Rule;
@@ -32,9 +34,6 @@ import org.sonar.api.batch.sensor.internal.SensorContextTester;
 import org.sonar.api.measures.CoreMetrics;
 import org.sonar.api.measures.Metric;
 
-import java.io.File;
-import java.io.IOException;
-
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -83,10 +82,10 @@ public class MeasureSensorTest {
     Metric<Boolean> booleanMetric = new Metric.Builder("bool", "Bool", Metric.ValueType.BOOL)
       .create();
 
-    when(metricFinder.findByKey("ncloc")).thenReturn(CoreMetrics.NCLOC);
-    when(metricFinder.findByKey("branch_coverage")).thenReturn(CoreMetrics.BRANCH_COVERAGE);
-    when(metricFinder.findByKey("sqale_index")).thenReturn(CoreMetrics.TECHNICAL_DEBT);
-    when(metricFinder.findByKey("bool")).thenReturn(booleanMetric);
+    when(metricFinder.<Integer>findByKey("ncloc")).thenReturn(CoreMetrics.NCLOC);
+    when(metricFinder.<Double>findByKey("branch_coverage")).thenReturn(CoreMetrics.BRANCH_COVERAGE);
+    when(metricFinder.<Long>findByKey("sqale_index")).thenReturn(CoreMetrics.TECHNICAL_DEBT);
+    when(metricFinder.<Boolean>findByKey("bool")).thenReturn(booleanMetric);
 
     sensor.execute(context);
 
index 0e5bf775e530dbb8822e324798d5e03eed7166ea..ed8338d1473324a69f58105779ab82f8580ce9fe 100644 (file)
  */
 package org.sonar.api.batch.measure;
 
-import org.sonar.api.batch.BatchSide;
-
-import javax.annotation.CheckForNull;
-
+import java.io.Serializable;
 import java.util.Collection;
 import java.util.List;
+import javax.annotation.CheckForNull;
+import org.sonar.api.batch.BatchSide;
 
 /**
  * @since 4.5
@@ -33,9 +32,9 @@ import java.util.List;
 public interface MetricFinder {
 
   @CheckForNull
-  Metric findByKey(String key);
+  <G extends Serializable> Metric<G> findByKey(String key);
 
-  Collection<Metric> findAll(List<String> metricKeys);
+  Collection<Metric<Serializable>> findAll(List<String> metricKeys);
 
-  Collection<Metric> findAll();
+  Collection<Metric<Serializable>> findAll();
 }
index 00b3a17a1bed900a2933c2f4a7f262042fad0e4e..0e671dbdc9fa46bca9ec2a744da4237f73b9f018 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.api.batch.sensor.measure;
 import java.io.Serializable;
 import org.sonar.api.batch.fs.InputComponent;
 import org.sonar.api.batch.measure.Metric;
+import org.sonar.api.batch.measure.MetricFinder;
 
 /**
  * Builder to create new Measure.
@@ -36,7 +37,7 @@ public interface NewMeasure<G extends Serializable> {
   NewMeasure<G> on(InputComponent component);
 
   /**
-   * Set the metric this measure belong to.
+   * Set the metric this measure belong to. To find a metric based on its key you can use {@link MetricFinder}.
    */
   NewMeasure<G> forMetric(Metric<G> metric);
 
index 37225d2d255f9fd5324693527e6a1995f828209b..5ab94f297e25a1d0e4c58b3e5a07c4143d0eb6e6 100644 (file)
@@ -33,7 +33,9 @@ import org.sonar.api.utils.SonarException;
  * <p>An example of usage : you wish to record the number of violations for each level of rules priority
  *
  * @since 1.10
+ * @deprecated since 5.6. Scanner side is not responsible to aggregate measures since 5.2.
  */
+@Deprecated
 public class CountDistributionBuilder implements MeasureBuilder {
 
   private final Metric metric;
index fae0b7d794c5461afe2f35720f353e5e5f0eaa2f..3ea25fc8b0e0231ef4acb682920692b962204783 100644 (file)
@@ -26,12 +26,15 @@ import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import org.apache.commons.lang.builder.ReflectionToStringBuilder;
 import org.apache.commons.lang.math.NumberUtils;
+import org.sonar.api.batch.sensor.SensorContext;
 
 /**
  * A class to handle measures.
  *
  * @since 1.10
+ * @deprecated since 5.6. To create a new measure on scanner side use {@link SensorContext#newMeasure()}
  */
+@Deprecated
 public class Measure<G extends Serializable> implements Serializable {
   private static final String INDEX_SHOULD_BE_IN_RANGE_FROM_1_TO_5 = "Index should be in range from 1 to 5";
 
index 0cd78bf11042e74310f4eb7d4ca2ce7e6d9a1628..d2e44159278ee1f5098c14a4e2db7044760ffe8c 100644 (file)
  */
 package org.sonar.api.measures;
 
+import org.sonar.api.batch.sensor.SensorContext;
+
 /**
  * MeasureBuilder helps to build complex measures.
  *
  * @since 1.10
+ * @deprecated since 5.6. To create a new measure on scanner side use {@link SensorContext#newMeasure()}
  */
+@Deprecated
 public interface MeasureBuilder {
   Measure build();
 }
index 0e8290863f3e6bd4c304027959a82406426e3eb4..9542220d04e518374113ba81aa3371cb3999eb2d 100644 (file)
  */
 package org.sonar.api.measures;
 
-import org.apache.commons.lang.StringUtils;
-
-import javax.annotation.Nullable;
-
 import java.util.Collection;
+import javax.annotation.Nullable;
+import org.apache.commons.lang.StringUtils;
 
 /**
  * An utility class to manipulate measures
  *
  * @since 1.10
+ * @deprecated since 5.6. {@link Measure} is deprecated.
  */
+@Deprecated
 public final class MeasureUtils {
 
   /**
index 585df69ec799961253c99b9d704a596ce1baab34..c576b34d88d090b2a99cad22ea96a13384d79280 100644 (file)
@@ -23,7 +23,9 @@ import java.util.Collection;
 
 /**
  * @since 1.10
+ * @deprecated since 5.6. Sensor should only save measures and not read them.
  */
+@Deprecated
 public interface MeasuresFilter<M> {
 
   M filter(Collection<Measure> measures);
index 470593c856f0a2ec71ce55b9a2c84e8716c3909d..189af4466add46253263ef8de5274bde6eec12e3 100644 (file)
@@ -27,7 +27,9 @@ import org.sonar.api.rules.Rule;
 
 /**
  * @since 1.10
+ * @deprecated since 5.6. Sensor should only save measures and not read them.
  */
+@Deprecated
 public final class MeasuresFilters {
 
   private MeasuresFilters() {
index d27e62e34ae6dfb1ba8930b7e2f5d65bfc1b2ee6..3400be34f186567968ceccfce45de5ae711fecb3 100644 (file)
@@ -38,6 +38,10 @@ import static com.google.common.base.Objects.firstNonNull;
 import static com.google.common.base.Preconditions.checkArgument;
 import static org.apache.commons.lang.StringUtils.isNotBlank;
 
+/**
+ * Used to define a metric in a plugin. Should be used with {@link Metrics} extension point.
+ * Should no more be used on scanner side. Use {@link org.sonar.api.batch.measure.Metric} instead. 
+ */
 @BatchSide
 @InstantiationStrategy(InstantiationStrategy.PER_BATCH)
 @ServerSide
index 5aceb4f2471027125b744699e125dbd5bf12430d..5f0d127524ebd1bff1f5aa929f3e35405cff46a3 100644 (file)
@@ -28,7 +28,7 @@ import org.sonar.api.server.ServerSide;
 
 /**
  * @since 2.5
- * @deprecated since 5.1 use {@link org.sonar.api.batch.measure.MetricFinder} on batch side
+ * @deprecated since 5.1 use {@link org.sonar.api.batch.measure.MetricFinder} on scanner side.
  */
 @Deprecated
 @BatchSide
index 96521bac3a5cec268339f16fb7e817c29f449a45..acb2507550916c0d3286b23bc6fb1913b6f91249 100644 (file)
@@ -27,6 +27,7 @@ import org.sonar.api.ce.ComputeEngineSide;
 import org.sonar.api.server.ServerSide;
 
 /**
+ * This is the extension point used by plugins to declare new metrics.
  * @since 1.10
  */
 @BatchSide
index 8ea226e0714aa917e9c2e2bbf226cdd7e437d354..8cf4b150d85ba3435948f0ba499303691290b417 100644 (file)
@@ -28,7 +28,9 @@ package org.sonar.api.measures;
  * </ul>
  *
  * @since 1.10
+ * @deprecated since 5.6. No more used since 5.2.
  */
+@Deprecated
 public enum PersistenceMode {
   MEMORY, DATABASE, FULL;
 
index 00feb2b3b9dc28160b43cc57322e0699e64f6189..2e994a628f305fb4e5eb27c278232905dbcddc38 100644 (file)
  */
 package org.sonar.api.measures;
 
-import org.sonar.api.utils.KeyValueFormat;
-
 import java.util.Map;
 import java.util.TreeMap;
+import org.sonar.api.utils.KeyValueFormat;
 
 /**
  * @since 1.10
+ * @deprecated since 5.6. Use directly {@link KeyValueFormat}.
  */
+@Deprecated
 public class PropertiesBuilder<K, V> {
   private Metric metric;
   private Map<K, V> props;
index f453f1bb5f4dbdad8c97db37f592f3ffda716c7c..f31d562bc084c782e84ca76aa3d098cece65c7ad 100644 (file)
 package org.sonar.batch.scan.measure;
 
 import com.google.common.collect.Lists;
-import org.sonar.api.batch.measure.Metric;
-import org.sonar.api.batch.measure.MetricFinder;
-import org.sonar.api.measures.Metric.ValueType;
-import org.sonar.scanner.protocol.input.GlobalRepositories;
+import java.io.Serializable;
 import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import org.sonar.api.batch.measure.Metric;
+import org.sonar.api.batch.measure.MetricFinder;
+import org.sonar.api.measures.Metric.ValueType;
+import org.sonar.scanner.protocol.input.GlobalRepositories;
 
 public class DefaultMetricFinder implements MetricFinder {
 
-  private Map<String, Metric> metricsByKey = new LinkedHashMap<>();
+  private Map<String, Metric<Serializable>> metricsByKey = new LinkedHashMap<>();
 
   public DefaultMetricFinder(GlobalRepositories globalReferentials) {
     for (org.sonar.scanner.protocol.input.Metric metric : globalReferentials.metrics()) {
@@ -40,15 +41,15 @@ public class DefaultMetricFinder implements MetricFinder {
   }
 
   @Override
-  public Metric findByKey(String key) {
+  public Metric<Serializable> findByKey(String key) {
     return metricsByKey.get(key);
   }
 
   @Override
-  public Collection<Metric> findAll(List<String> metricKeys) {
-    List<Metric> result = Lists.newLinkedList();
+  public Collection<Metric<Serializable>> findAll(List<String> metricKeys) {
+    List<Metric<Serializable>> result = Lists.newLinkedList();
     for (String metricKey : metricKeys) {
-      Metric metric = findByKey(metricKey);
+      Metric<Serializable> metric = findByKey(metricKey);
       if (metric != null) {
         result.add(metric);
       }
@@ -57,7 +58,7 @@ public class DefaultMetricFinder implements MetricFinder {
   }
 
   @Override
-  public Collection<Metric> findAll() {
+  public Collection<Metric<Serializable>> findAll() {
     return metricsByKey.values();
   }
 
index 963f7e14b9148935bfbcfc2e689ff0587a0d6cdb..4b400323e55277e1b9cd3e59c3952551ca9c7841 100644 (file)
@@ -64,8 +64,8 @@ public class MeasureCache {
   }
 
   @CheckForNull
-  public Measure byMetric(String resourceKey, String metricKey) {
-    return cache.get(resourceKey, metricKey);
+  public Measure byMetric(String componentKey, String metricKey) {
+    return cache.get(componentKey, metricKey);
   }
 
   public MeasureCache put(Resource resource, Measure measure) {
index 61f21529547fe7b3f16d8db6f472d9a92a2433fe..02ec903e2ce958a7cb5580cd8b8c1ac0663f4152 100644 (file)
@@ -53,7 +53,7 @@ public class MeasureCacheTest extends AbstractCachesTest {
   public void start() {
     super.start();
     metricFinder = mock(MetricFinder.class);
-    when(metricFinder.findByKey(CoreMetrics.NCLOC_KEY)).thenReturn(CoreMetrics.NCLOC);
+    when(metricFinder.<Integer>findByKey(CoreMetrics.NCLOC_KEY)).thenReturn(CoreMetrics.NCLOC);
     measureCache = new MeasureCache(caches, metricFinder);
   }
 
index 913a5fa67bc71251ca3b90bd4c95e42eb79325e0..cd32cbfeae3876e6e411a7ba7ce16d95843144d1 100644 (file)
@@ -61,8 +61,8 @@ public class DefaultSensorContextTest {
     activeRules = new ActiveRulesBuilder().build();
     fs = new DefaultFileSystem(temp.newFolder().toPath());
     MetricFinder metricFinder = mock(MetricFinder.class);
-    when(metricFinder.findByKey(CoreMetrics.NCLOC_KEY)).thenReturn(CoreMetrics.NCLOC);
-    when(metricFinder.findByKey(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION_KEY)).thenReturn(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION);
+    when(metricFinder.<Integer>findByKey(CoreMetrics.NCLOC_KEY)).thenReturn(CoreMetrics.NCLOC);
+    when(metricFinder.<String>findByKey(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION_KEY)).thenReturn(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION);
     settings = new Settings();
     sensorStorage = mock(SensorStorage.class);
     analysisMode = mock(AnalysisMode.class);
index caa16b11a19b4d627c0030d8053e54d1271e033e..a1c406e2adc458417303c68e729ea469b3abd895 100644 (file)
@@ -75,8 +75,8 @@ public class DefaultSensorStorageTest {
     activeRules = new ActiveRulesBuilder().build();
     fs = new DefaultFileSystem(temp.newFolder().toPath());
     MetricFinder metricFinder = mock(MetricFinder.class);
-    when(metricFinder.findByKey(CoreMetrics.NCLOC_KEY)).thenReturn(CoreMetrics.NCLOC);
-    when(metricFinder.findByKey(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION_KEY)).thenReturn(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION);
+    when(metricFinder.<Integer>findByKey(CoreMetrics.NCLOC_KEY)).thenReturn(CoreMetrics.NCLOC);
+    when(metricFinder.<String>findByKey(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION_KEY)).thenReturn(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION);
     settings = new Settings();
     moduleIssues = mock(ModuleIssues.class);
     project = new Project("myProject");