]> source.dussan.org Git - sonarqube.git/commitdiff
Drop commons-collections
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 8 Mar 2016 09:45:24 +0000 (10:45 +0100)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Sun, 13 Mar 2016 17:32:26 +0000 (18:32 +0100)
12 files changed:
pom.xml
server/sonar-server/pom.xml
server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleIndex.java
sonar-plugin-api/pom.xml
sonar-plugin-api/src/main/java/org/sonar/api/measures/CountDistributionBuilder.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/MultisetDistributionFormat.java [new file with mode: 0644]
sonar-plugin-api/src/main/java/org/sonar/api/measures/RangeDistributionBuilder.java
sonar-plugin-api/src/main/java/org/sonar/api/profiles/RulesProfile.java
sonar-plugin-api/src/main/java/org/sonar/api/rules/ActiveRule.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/KeyValueFormat.java
sonar-plugin-api/src/test/java/org/sonar/api/measures/RangeDistributionBuilderTest.java
sonar-plugin-api/src/test/java/org/sonar/api/utils/KeyValueFormatTest.java

diff --git a/pom.xml b/pom.xml
index b9203a50b02a4f5868df2c10a6b5e2c122b0fc7b..ad4d9e792efc0fbca22c3f76cfc0ba184338f119 100644 (file)
--- a/pom.xml
+++ b/pom.xml
         <version>${sonarCSharp.version}</version>
         <type>sonar-plugin</type>
       </dependency>
-      <dependency>
-        <groupId>commons-collections</groupId>
-        <artifactId>commons-collections</artifactId>
-        <version>3.2.2</version>
-      </dependency>
       <dependency>
         <groupId>org.elasticsearch</groupId>
         <artifactId>elasticsearch</artifactId>
index fc885aecea72a3f8bb4e6870f19b35cb0affdb1c..03ab69e8487b766fe668fa8075f45ede1a451351 100644 (file)
       <groupId>commons-beanutils</groupId>
       <artifactId>commons-beanutils</artifactId>
     </dependency>
-    <dependency>
-      <groupId>commons-collections</groupId>
-      <artifactId>commons-collections</artifactId>
-    </dependency>
     <dependency>
       <groupId>commons-dbutils</groupId>
       <artifactId>commons-dbutils</artifactId>
index 7aaadb5d6030dc1dfa6ac87b52a861cee358551c..47ab72986d0d50d6cb204a8629c288359186d0b3 100644 (file)
@@ -35,7 +35,6 @@ import java.util.Map;
 import java.util.Set;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.action.search.SearchRequestBuilder;
 import org.elasticsearch.action.search.SearchResponse;
@@ -169,7 +168,7 @@ public class RuleIndex extends BaseIndex {
 
     // No contextual query case
     String queryText = query.getQueryText();
-    if (queryText == null || queryText.isEmpty()) {
+    if (StringUtils.isEmpty(queryText)) {
       return QueryBuilders.matchAllQuery();
     }
 
@@ -219,42 +218,42 @@ public class RuleIndex extends BaseIndex {
         FilterBuilders.termFilter(FIELD_RULE_STATUS,
           RuleStatus.REMOVED.toString())));
 
-    if (!StringUtils.isEmpty(query.getInternalKey())) {
+    if (StringUtils.isNotEmpty(query.getInternalKey())) {
       filters.put(FIELD_RULE_INTERNAL_KEY,
         FilterBuilders.termFilter(FIELD_RULE_INTERNAL_KEY, query.getInternalKey()));
     }
 
-    if (!StringUtils.isEmpty(query.getRuleKey())) {
+    if (StringUtils.isNotEmpty(query.getRuleKey())) {
       filters.put(FIELD_RULE_RULE_KEY,
         FilterBuilders.termFilter(FIELD_RULE_RULE_KEY, query.getRuleKey()));
     }
 
-    if (!CollectionUtils.isEmpty(query.getLanguages())) {
+    if (isNotEmpty(query.getLanguages())) {
       filters.put(FIELD_RULE_LANGUAGE,
         FilterBuilders.termsFilter(FIELD_RULE_LANGUAGE, query.getLanguages()));
     }
 
-    if (!CollectionUtils.isEmpty(query.getRepositories())) {
+    if (isNotEmpty(query.getRepositories())) {
       filters.put(FIELD_RULE_REPOSITORY,
         FilterBuilders.termsFilter(FIELD_RULE_REPOSITORY, query.getRepositories()));
     }
 
-    if (!CollectionUtils.isEmpty(query.getSeverities())) {
+    if (isNotEmpty(query.getSeverities())) {
       filters.put(FIELD_RULE_SEVERITY,
         FilterBuilders.termsFilter(FIELD_RULE_SEVERITY, query.getSeverities()));
     }
 
-    if (!StringUtils.isEmpty(query.getKey())) {
+    if (StringUtils.isNotEmpty(query.getKey())) {
       filters.put(FIELD_RULE_KEY,
         FilterBuilders.termFilter(FIELD_RULE_KEY, query.getKey()));
     }
 
-    if (!CollectionUtils.isEmpty(query.getTags())) {
+    if (isNotEmpty(query.getTags())) {
       filters.put(FIELD_RULE_ALL_TAGS,
         FilterBuilders.termsFilter(FIELD_RULE_ALL_TAGS, query.getTags()));
     }
 
-    if (!CollectionUtils.isEmpty(query.getTypes())) {
+    if (isNotEmpty(query.getTypes())) {
       filters.put(FIELD_RULE_TYPE,
         FilterBuilders.termsFilter(FIELD_RULE_TYPE, query.getTypes()));
     }
@@ -264,10 +263,9 @@ public class RuleIndex extends BaseIndex {
         .gte(query.getAvailableSinceLong()));
     }
 
-    Collection<RuleStatus> statusValues = query.getStatuses();
-    if (statusValues != null && !statusValues.isEmpty()) {
+    if (isNotEmpty(query.getStatuses())) {
       Collection<String> stringStatus = new ArrayList<>();
-      for (RuleStatus status : statusValues) {
+      for (RuleStatus status : query.getStatuses()) {
         stringStatus.add(status.name());
       }
       filters.put(FIELD_RULE_STATUS,
@@ -316,7 +314,7 @@ public class RuleIndex extends BaseIndex {
   }
 
   private static BoolFilterBuilder addTermFilter(BoolFilterBuilder filter, String field, @Nullable Collection<String> values) {
-    if (values != null && !values.isEmpty()) {
+    if (isNotEmpty(values)) {
       BoolFilterBuilder valuesFilter = FilterBuilders.boolFilter();
       for (String value : values) {
         FilterBuilder valueFilter = FilterBuilders.termFilter(field, value);
@@ -328,7 +326,7 @@ public class RuleIndex extends BaseIndex {
   }
 
   private static BoolFilterBuilder addTermFilter(BoolFilterBuilder filter, String field, @Nullable String value) {
-    if (value != null && !value.isEmpty()) {
+    if (StringUtils.isNotEmpty(value)) {
       filter.must(FilterBuilders.termFilter(field, value));
     }
     return filter;
@@ -445,7 +443,7 @@ public class RuleIndex extends BaseIndex {
         sort.order(SortOrder.DESC);
       }
       esSearch.addSort(sort);
-    } else if (queryText != null && !queryText.isEmpty()) {
+    } else if (StringUtils.isNotEmpty(queryText)) {
       esSearch.addSort(SortBuilders.scoreSort());
     } else {
       esSearch.addSort(appendSortSuffixIfNeeded(FIELD_RULE_UPDATED_AT), SortOrder.DESC);
@@ -505,8 +503,8 @@ public class RuleIndex extends BaseIndex {
     public RuleKey apply(@Nonnull String input) {
       return RuleKey.parse(input);
     }
-  }
 
+  }
   private enum RuleStatusToString implements Function<RuleStatus, String> {
     INSTANCE;
 
@@ -514,8 +512,8 @@ public class RuleIndex extends BaseIndex {
     public String apply(@Nonnull RuleStatus input) {
       return input.toString();
     }
-  }
 
+  }
   private enum NotRemoved implements Predicate<String> {
     INSTANCE;
 
@@ -523,6 +521,11 @@ public class RuleIndex extends BaseIndex {
     public boolean apply(@Nonnull String input) {
       return !RuleStatus.REMOVED.toString().equals(input);
     }
+
+  }
+
+  private static boolean isNotEmpty(@Nullable Collection list) {
+    return list != null && !list.isEmpty();
   }
 
 }
index bde39416b197d08d1cfa1dcb88130434cf525b67..53510bfaf9a26407c6fd38d473220bb426353884 100644 (file)
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
     </dependency>
-    <dependency>
-      <groupId>commons-collections</groupId>
-      <artifactId>commons-collections</artifactId>
-    </dependency>
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
index d85ea3c4cd6963dc901dd1f75c240764c348f999..379d1e866db49bfe82d99ad91d3118fbe89c5227 100644 (file)
@@ -19,9 +19,9 @@
  */
 package org.sonar.api.measures;
 
+import com.google.common.collect.Multiset;
+import com.google.common.collect.TreeMultiset;
 import java.util.Map;
-import org.apache.commons.collections.SortedBag;
-import org.apache.commons.collections.bag.TreeBag;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
 import org.sonar.api.utils.KeyValueFormat;
@@ -36,9 +36,8 @@ import org.sonar.api.utils.SonarException;
  */
 public class CountDistributionBuilder implements MeasureBuilder {
 
-  private Metric metric;
-  // TODO to be replaced by com.google.common.collect.SortedMultiset while upgrading to Guava 11+
-  private SortedBag countBag;
+  private final Metric metric;
+  private final Multiset countBag = TreeMultiset.create();
 
   /**
    * Creates an empty CountDistributionBuilder for a specified metric
@@ -46,8 +45,10 @@ public class CountDistributionBuilder implements MeasureBuilder {
    * @param metric the metric
    */
   public CountDistributionBuilder(Metric metric) {
-    setMetric(metric);
-    this.countBag = new TreeBag();
+    if (metric == null || !metric.isDataType()) {
+      throw new SonarException("Metric is null or has invalid type");
+    }
+    this.metric = metric;
   }
 
   /**
@@ -62,8 +63,8 @@ public class CountDistributionBuilder implements MeasureBuilder {
       addZero(value);
 
     } else {
-      if (this.countBag.add(value, count)) {
-        //hack
+      if (this.countBag.add(value, count) == 0) {
+        // hack
         this.countBag.add(value, 1);
       }
     }
@@ -152,16 +153,8 @@ public class CountDistributionBuilder implements MeasureBuilder {
    */
   public Measure build(boolean allowEmptyData) {
     if (!isEmpty() || allowEmptyData) {
-      //-1 is a hack to include zero values
-      return new Measure(metric, KeyValueFormat.format(countBag, -1));
+      return new Measure(metric, MultisetDistributionFormat.format(countBag));
     }
     return null;
   }
-
-  private void setMetric(Metric metric) {
-    if (metric == null || !metric.isDataType()) {
-      throw new SonarException("Metric is null or has unvalid type");
-    }
-    this.metric = metric;
-  }
 }
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/measures/MultisetDistributionFormat.java b/sonar-plugin-api/src/main/java/org/sonar/api/measures/MultisetDistributionFormat.java
new file mode 100644 (file)
index 0000000..de931c3
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.api.measures;
+
+import com.google.common.collect.Multiset;
+import org.sonar.api.utils.KeyValueFormat;
+
+/**
+ * Format internal {@link com.google.common.collect.Multiset} of {@link CountDistributionBuilder}
+ * and {@link RangeDistributionBuilder}
+ */
+class MultisetDistributionFormat {
+
+  private MultisetDistributionFormat() {
+    // only statics
+  }
+
+  static String format(Multiset countBag) {
+    StringBuilder sb = new StringBuilder();
+    boolean first = true;
+    for (Object obj : countBag.elementSet()) {
+      if (!first) {
+        sb.append(KeyValueFormat.PAIR_SEPARATOR);
+      }
+      sb.append(obj.toString());
+      sb.append(KeyValueFormat.FIELD_SEPARATOR);
+      // -1 allows to include zero values
+      sb.append(countBag.count(obj) - 1);
+      first = false;
+    }
+    return sb.toString();
+  }
+}
index 592788a18a649942db71756bf0c22a508123620d..5c20bb25dcce0b986f09f68204e5806e22309af1 100644 (file)
  */
 package org.sonar.api.measures;
 
+import com.google.common.base.Function;
+import com.google.common.collect.SortedMultiset;
+import com.google.common.collect.TreeMultiset;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.Nullable;
-import org.apache.commons.collections.SortedBag;
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.collections.bag.TransformedSortedBag;
-import org.apache.commons.collections.bag.TreeBag;
 import org.apache.commons.lang.NumberUtils;
 import org.sonar.api.utils.KeyValueFormat;
-import org.sonar.api.utils.SonarException;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static java.util.Objects.requireNonNull;
 
 /**
  * Utility to build a distribution based on defined ranges
@@ -44,10 +45,11 @@ import org.sonar.api.utils.SonarException;
 @Deprecated
 public class RangeDistributionBuilder implements MeasureBuilder {
 
-  private Metric<String> metric;
-  private SortedBag countBag;
+  private final Metric<String> metric;
+  private final SortedMultiset countBag = TreeMultiset.create();
   private boolean isEmpty = true;
   private Number[] bottomLimits;
+  private RangeTransformer rangeValueTransformer;
   private boolean isValid = true;
 
   /**
@@ -58,17 +60,23 @@ public class RangeDistributionBuilder implements MeasureBuilder {
    * @param bottomLimits the bottom limits of ranges to be used
    */
   public RangeDistributionBuilder(Metric<String> metric, Number[] bottomLimits) {
-    setMetric(metric);
+    requireNonNull(metric, "Metric must not be null");
+    checkArgument(metric.isDataType(), "Metric %s must have data type", metric.key());
+    this.metric = metric;
     init(bottomLimits);
   }
 
+  public RangeDistributionBuilder(Metric<String> metric) {
+    this.metric = metric;
+  }
+
   private void init(Number[] bottomLimits) {
     this.bottomLimits = new Number[bottomLimits.length];
     System.arraycopy(bottomLimits, 0, this.bottomLimits, 0, this.bottomLimits.length);
     Arrays.sort(this.bottomLimits);
     changeDoublesToInts();
-    countBag = TransformedSortedBag.decorate(new TreeBag(), new RangeTransformer());
     doClear();
+    this.rangeValueTransformer = new RangeTransformer();
   }
 
   private void changeDoublesToInts() {
@@ -85,10 +93,6 @@ public class RangeDistributionBuilder implements MeasureBuilder {
     }
   }
 
-  public RangeDistributionBuilder(Metric<String> metric) {
-    this.metric = metric;
-  }
-
   /**
    * Gives the bottom limits of ranges used
    *
@@ -115,9 +119,9 @@ public class RangeDistributionBuilder implements MeasureBuilder {
    * @param count the number by which to increment
    * @return the current object
    */
-  public RangeDistributionBuilder add(Number value, int count) {
+  public RangeDistributionBuilder add(@Nullable Number value, int count) {
     if (value != null && greaterOrEqualsThan(value, bottomLimits[0])) {
-      this.countBag.add(value, count);
+      this.countBag.add(rangeValueTransformer.apply(value), count);
       isEmpty = false;
     }
     return this;
@@ -126,7 +130,7 @@ public class RangeDistributionBuilder implements MeasureBuilder {
   private RangeDistributionBuilder addLimitCount(Number limit, int count) {
     for (Number bottomLimit : bottomLimits) {
       if (NumberUtils.compare(bottomLimit.doubleValue(), limit.doubleValue()) == 0) {
-        this.countBag.add(limit, count);
+        this.countBag.add(rangeValueTransformer.apply(limit), count);
         isEmpty = false;
         return this;
       }
@@ -189,9 +193,7 @@ public class RangeDistributionBuilder implements MeasureBuilder {
   }
 
   private void doClear() {
-    if (countBag != null) {
-      countBag.clear();
-    }
+    countBag.clear();
     if (bottomLimits != null) {
       Collections.addAll(countBag, bottomLimits);
     }
@@ -223,15 +225,14 @@ public class RangeDistributionBuilder implements MeasureBuilder {
    */
   public Measure<String> build(boolean allowEmptyData) {
     if (isValid && (!isEmpty || allowEmptyData)) {
-      return new Measure<>(metric, KeyValueFormat.format(countBag, -1));
+      return new Measure<>(metric, MultisetDistributionFormat.format(countBag));
     }
     return null;
   }
 
-  private class RangeTransformer implements Transformer {
+  private class RangeTransformer implements Function<Number, Number> {
     @Override
-    public Object transform(Object o) {
-      Number n = (Number) o;
+    public Number apply(Number n) {
       for (int i = bottomLimits.length - 1; i >= 0; i--) {
         if (greaterOrEqualsThan(n, bottomLimits[i])) {
           return bottomLimits[i];
@@ -244,11 +245,4 @@ public class RangeDistributionBuilder implements MeasureBuilder {
   private static boolean greaterOrEqualsThan(Number n1, Number n2) {
     return NumberUtils.compare(n1.doubleValue(), n2.doubleValue()) >= 0;
   }
-
-  private void setMetric(Metric metric) {
-    if (metric == null || !metric.isDataType()) {
-      throw new SonarException("Metric is null or has unvalid type");
-    }
-    this.metric = metric;
-  }
 }
index 72263f21ec7891b32f072d76d0b49307dfe526e2..ef6a3fdfbba4771963f1b29a0224323b9e834e86 100644 (file)
  */
 package org.sonar.api.profiles;
 
+import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.Transformer;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -340,12 +340,7 @@ public class RulesProfile implements Cloneable {
     clone.setDefaultProfile(getDefaultProfile());
     clone.setParentName(getParentName());
     if (activeRules != null && !activeRules.isEmpty()) {
-      clone.setActiveRules(new ArrayList<ActiveRule>(CollectionUtils.collect(activeRules, new Transformer() {
-        @Override
-        public Object transform(Object input) {
-          return ((ActiveRule) input).clone();
-        }
-      })));
+      clone.setActiveRules(Lists.transform(activeRules, CloneFunction.INSTANCE));
     }
     return clone;
   }
@@ -375,4 +370,12 @@ public class RulesProfile implements Cloneable {
       return input.getRule().equals(rule);
     }
   }
+
+  private enum CloneFunction implements Function<ActiveRule, ActiveRule> {
+    INSTANCE;
+    @Override
+    public ActiveRule apply(ActiveRule input) {
+      return (ActiveRule) input.clone();
+    }
+  }
 }
index 69b3231ce612f89a70d3e3d2c46c6591f7bdc9e0..80f219d61d9b800bbf4994a4070e05d325cdca8c 100644 (file)
  */
 package org.sonar.api.rules;
 
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.sonar.api.profiles.RulesProfile;
-
-import javax.annotation.CheckForNull;
-
+import com.google.common.base.Function;
+import com.google.common.collect.Lists;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import javax.annotation.CheckForNull;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.sonar.api.profiles.RulesProfile;
 
 public class ActiveRule implements Cloneable {
 
@@ -289,15 +287,15 @@ public class ActiveRule implements Cloneable {
   public Object clone() {
     final ActiveRule clone = new ActiveRule(getRulesProfile(), getRule(), getSeverity());
     clone.setInheritance(getInheritance());
-    if (CollectionUtils.isNotEmpty(getActiveRuleParams())) {
-      clone.setActiveRuleParams(new ArrayList<ActiveRuleParam>(CollectionUtils.collect(getActiveRuleParams(), new Transformer() {
+    if (activeRuleParams != null && !activeRuleParams.isEmpty()) {
+      clone.setActiveRuleParams(Lists.transform(activeRuleParams, new Function<ActiveRuleParam, ActiveRuleParam>() {
         @Override
-        public Object transform(Object input) {
-          ActiveRuleParam activeRuleParamClone = (ActiveRuleParam) ((ActiveRuleParam) input).clone();
+        public ActiveRuleParam apply(ActiveRuleParam input) {
+          ActiveRuleParam activeRuleParamClone = (ActiveRuleParam) input.clone();
           activeRuleParamClone.setActiveRule(clone);
           return activeRuleParamClone;
         }
-      })));
+      }));
     }
     return clone;
   }
index cc21a93c8beebaada9114d62b37319c152ef8d07..5eb2737f108e7af306a83165021d8874128e826d 100644 (file)
@@ -27,7 +27,6 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
-import org.apache.commons.collections.Bag;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
 import org.sonar.api.rules.RulePriority;
@@ -440,25 +439,4 @@ public final class KeyValueFormat {
     return format(map, newStringConverter(), newIntegerConverter());
   }
 
-  /**
-   * @since 1.11
-   * @deprecated use Multiset from google collections instead of commons-collections bags
-   */
-  @Deprecated
-  public static String format(Bag bag, int var) {
-    StringBuilder sb = new StringBuilder();
-    if (bag != null) {
-      boolean first = true;
-      for (Object obj : bag.uniqueSet()) {
-        if (!first) {
-          sb.append(PAIR_SEPARATOR);
-        }
-        sb.append(obj.toString());
-        sb.append(FIELD_SEPARATOR);
-        sb.append(bag.getCount(obj) + var);
-        first = false;
-      }
-    }
-    return sb.toString();
-  }
 }
index 3b2e248214e2447515221dba1e25e58a07adc4f1..4d9bd1afed3d2ba339b93239c141d9ec911948ad 100644 (file)
@@ -43,10 +43,10 @@ public class RangeDistributionBuilderTest {
   public void buildIntegerDistribution() {
     RangeDistributionBuilder builder = new RangeDistributionBuilder(CoreMetrics.CLASS_COMPLEXITY_DISTRIBUTION, new Integer[] {0, 2, 4});
     Measure measure = builder
-        .add(3.2)
-        .add(2.0)
-        .add(6.2)
-        .build();
+      .add(3.2)
+      .add(2.0)
+      .add(6.2)
+      .build();
 
     assertThat(measure.getData()).isEqualTo("0=0;2=2;4=1");
   }
@@ -55,10 +55,10 @@ public class RangeDistributionBuilderTest {
   public void buildDoubleDistribution() {
     RangeDistributionBuilder builder = new RangeDistributionBuilder(CoreMetrics.CLASS_COMPLEXITY_DISTRIBUTION, new Double[] {0.0, 2.0, 4.0});
     Measure measure = builder
-        .add(3.2)
-        .add(2.0)
-        .add(6.2)
-        .build();
+      .add(3.2)
+      .add(2.0)
+      .add(6.2)
+      .build();
 
     assertThat(measure.getData()).isEqualTo("0=0;2=2;4=1");
   }
@@ -67,10 +67,10 @@ public class RangeDistributionBuilderTest {
   public void valueLesserThanMinimumIsIgnored() {
     RangeDistributionBuilder builder = new RangeDistributionBuilder(CoreMetrics.CLASS_COMPLEXITY_DISTRIBUTION, new Integer[] {0, 2, 4});
     Measure measure = builder
-        .add(3.2)
-        .add(2.0)
-        .add(-3.0)
-        .build();
+      .add(3.2)
+      .add(2.0)
+      .add(-3.0)
+      .build();
 
     assertThat(measure.getData()).isEqualTo("0=0;2=2;4=0");
   }
@@ -83,9 +83,9 @@ public class RangeDistributionBuilderTest {
     RangeDistributionBuilder builder = new RangeDistributionBuilder(CoreMetrics.CLASS_COMPLEXITY_DISTRIBUTION, new Integer[] {0, 2});
     builder.clear();
     Measure measure = builder
-        .add(1)
-        .add(measureToAdd)
-        .build();
+      .add(1)
+      .add(measureToAdd)
+      .build();
 
     assertThat(measure.getData()).isEqualTo("0=4;2=5");
   }
@@ -98,9 +98,9 @@ public class RangeDistributionBuilderTest {
     RangeDistributionBuilder builder = new RangeDistributionBuilder(CoreMetrics.CLASS_COMPLEXITY_DISTRIBUTION, new Integer[] {0, 2, 4});
     builder.clear();
     Measure measure = builder
-        .add(1)
-        .add(measureToAdd)
-        .build();
+      .add(1)
+      .add(measureToAdd)
+      .build();
 
     assertThat(measure).isNull();
   }
@@ -113,8 +113,8 @@ public class RangeDistributionBuilderTest {
     RangeDistributionBuilder builder = new RangeDistributionBuilder(CoreMetrics.CLASS_COMPLEXITY_DISTRIBUTION, new Double[] {0.0, 2.0, 4.0});
     builder.clear();
     Measure measure = builder
-        .add(measureToAdd)
-        .build();
+      .add(measureToAdd)
+      .build();
 
     assertThat(measure).isNull();
   }
@@ -130,9 +130,9 @@ public class RangeDistributionBuilderTest {
     RangeDistributionBuilder builder = new RangeDistributionBuilder(CoreMetrics.CLASS_COMPLEXITY_DISTRIBUTION);
     builder.clear();
     Measure measure = builder
-        .add(m1)
-        .add(m2)
-        .build();
+      .add(m1)
+      .add(m2)
+      .build();
 
     assertThat(measure.getData()).isEqualTo("0.5=3;3.5=7;6.5=10");
   }
@@ -148,9 +148,9 @@ public class RangeDistributionBuilderTest {
     RangeDistributionBuilder builder = new RangeDistributionBuilder(CoreMetrics.CLASS_COMPLEXITY_DISTRIBUTION);
     builder.clear();
     Measure measure = builder
-        .add(m1)
-        .add(m2)
-        .build();
+      .add(m1)
+      .add(m2)
+      .build();
 
     assertThat(measure.getData()).isEqualTo("0=3;3=7;6=10");
   }
index a7fe696582483a3630052750dd63dee133e54845..c7d3e529d534871fa62b09ea999716077f04732e 100644 (file)
@@ -26,7 +26,6 @@ import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.TreeMap;
-import org.apache.commons.collections.bag.TreeBag;
 import org.junit.Test;
 import org.sonar.api.rules.RulePriority;
 import org.sonar.test.TestUtils;
@@ -236,20 +235,4 @@ public class KeyValueFormatTest {
     TestUtils.hasOnlyPrivateConstructors(KeyValueFormat.class);
   }
 
-  @Test
-  public void formatBag() {
-    TreeBag bag = new TreeBag();
-    bag.add("hello", 1);
-    bag.add("key", 3);
-    assertThat(KeyValueFormat.format(bag, 0)).isEqualTo("hello=1;key=3");
-  }
-
-  @Test
-  public void formatBagWithVariationHack() {
-    TreeBag bag = new TreeBag();
-    bag.add("hello", 1);
-    bag.add("key", 3);
-    assertThat(KeyValueFormat.format(bag, -1)).isEqualTo("hello=0;key=2");
-  }
-
 }