From 1e524dca48c9a9de6bd4e4058138391ff23bea2e Mon Sep 17 00:00:00 2001 From: Eric Gribkoff Date: Mon, 19 Mar 2018 11:10:59 -0700 Subject: Remove usages of guava collections in api/ (#1069) This allows proguard to strip out the com.google.common.collect.* classes on Android --- .../java/io/opencensus/stats/AggregationData.java | 4 +-- .../main/java/io/opencensus/stats/NoopStats.java | 8 ++--- .../main/java/io/opencensus/stats/ViewData.java | 7 +++-- .../main/java/io/opencensus/tags/TagContext.java | 36 ++++++++++++++-------- .../opencensus/trace/export/SampledSpanStore.java | 9 +++--- .../java/io/opencensus/trace/export/SpanData.java | 6 ++-- 6 files changed, 40 insertions(+), 30 deletions(-) diff --git a/api/src/main/java/io/opencensus/stats/AggregationData.java b/api/src/main/java/io/opencensus/stats/AggregationData.java index 0244f4e1..e58e5143 100644 --- a/api/src/main/java/io/opencensus/stats/AggregationData.java +++ b/api/src/main/java/io/opencensus/stats/AggregationData.java @@ -20,8 +20,8 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import com.google.auto.value.AutoValue; -import com.google.common.collect.Lists; import io.opencensus.common.Function; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.annotation.concurrent.Immutable; @@ -291,7 +291,7 @@ public abstract class AggregationData { } checkNotNull(bucketCounts, "bucket counts should not be null."); - List bucketCountsCopy = Collections.unmodifiableList(Lists.newArrayList(bucketCounts)); + List bucketCountsCopy = Collections.unmodifiableList(new ArrayList(bucketCounts)); for (Long bucket : bucketCountsCopy) { checkNotNull(bucket, "bucket should not be null."); } diff --git a/api/src/main/java/io/opencensus/stats/NoopStats.java b/api/src/main/java/io/opencensus/stats/NoopStats.java index 97d2976a..45fb6a17 100644 --- a/api/src/main/java/io/opencensus/stats/NoopStats.java +++ b/api/src/main/java/io/opencensus/stats/NoopStats.java @@ -21,8 +21,6 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import io.opencensus.common.Functions; import io.opencensus.common.Timestamp; import io.opencensus.stats.Measure.MeasureDouble; @@ -31,6 +29,8 @@ import io.opencensus.tags.TagContext; import io.opencensus.tags.TagValue; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -149,7 +149,7 @@ final class NoopStats { private static final Timestamp ZERO_TIMESTAMP = Timestamp.create(0, 0); @GuardedBy("registeredViews") - private final Map registeredViews = Maps.newHashMap(); + private final Map registeredViews = new HashMap(); // Cached set of exported views. It must be set to null whenever a view is registered or // unregistered. @@ -209,7 +209,7 @@ final class NoopStats { // Returns the subset of the given views that should be exported @SuppressWarnings("deprecation") private static Set filterExportedViews(Collection allViews) { - Set views = Sets.newHashSet(); + Set views = new HashSet(); for (View view : allViews) { if (view.getWindow() instanceof View.AggregationWindow.Interval) { continue; diff --git a/api/src/main/java/io/opencensus/stats/ViewData.java b/api/src/main/java/io/opencensus/stats/ViewData.java index 3ee67ca9..491a84e5 100644 --- a/api/src/main/java/io/opencensus/stats/ViewData.java +++ b/api/src/main/java/io/opencensus/stats/ViewData.java @@ -19,7 +19,6 @@ package io.opencensus.stats; import static com.google.common.base.Preconditions.checkArgument; import com.google.auto.value.AutoValue; -import com.google.common.collect.Maps; import io.opencensus.common.Duration; import io.opencensus.common.Function; import io.opencensus.common.Functions; @@ -38,6 +37,7 @@ import io.opencensus.stats.Measure.MeasureLong; import io.opencensus.tags.TagValue; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -125,7 +125,8 @@ public abstract class ViewData { Map, ? extends AggregationData> map, final AggregationWindowData windowData) { checkWindow(view.getWindow(), windowData); - final Map, AggregationData> deepCopy = Maps.newHashMap(); + final Map, AggregationData> deepCopy = + new HashMap, AggregationData>(); for (Entry, ? extends AggregationData> entry : map.entrySet()) { checkAggregation(view.getAggregation(), entry.getValue(), view.getMeasure()); deepCopy.put( @@ -173,7 +174,7 @@ public abstract class ViewData { Map, ? extends AggregationData> map, Timestamp start, Timestamp end) { - Map, AggregationData> deepCopy = Maps.newHashMap(); + Map, AggregationData> deepCopy = new HashMap, AggregationData>(); for (Entry, ? extends AggregationData> entry : map.entrySet()) { checkAggregation(view.getAggregation(), entry.getValue(), view.getMeasure()); deepCopy.put( diff --git a/api/src/main/java/io/opencensus/tags/TagContext.java b/api/src/main/java/io/opencensus/tags/TagContext.java index 841c8ab5..e36acdff 100644 --- a/api/src/main/java/io/opencensus/tags/TagContext.java +++ b/api/src/main/java/io/opencensus/tags/TagContext.java @@ -16,10 +16,7 @@ package io.opencensus.tags; -import com.google.common.collect.HashMultiset; -import com.google.common.collect.ImmutableMultiset; -import com.google.common.collect.Lists; -import com.google.common.collect.Multiset; +import java.util.HashMap; import java.util.Iterator; import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; @@ -70,15 +67,28 @@ public abstract class TagContext { TagContext otherTags = (TagContext) other; Iterator iter1 = getIterator(); Iterator iter2 = otherTags.getIterator(); - Multiset tags1 = - iter1 == null - ? ImmutableMultiset.of() - : HashMultiset.create(Lists.newArrayList(iter1)); - Multiset tags2 = - iter2 == null - ? ImmutableMultiset.of() - : HashMultiset.create(Lists.newArrayList(iter2)); - return tags1.equals(tags2); + HashMap tags = new HashMap(); + while (iter1 != null && iter1.hasNext()) { + Tag tag = iter1.next(); + if (tags.containsKey(tag)) { + tags.put(tag, tags.get(tag) + 1); + } else { + tags.put(tag, 1); + } + } + while (iter2 != null && iter2.hasNext()) { + Tag tag = iter2.next(); + if (!tags.containsKey(tag)) { + return false; + } + int count = tags.get(tag); + if (count > 1) { + tags.put(tag, count - 1); + } else { + tags.remove(tag); + } + } + return tags.isEmpty(); } @Override diff --git a/api/src/main/java/io/opencensus/trace/export/SampledSpanStore.java b/api/src/main/java/io/opencensus/trace/export/SampledSpanStore.java index 67a40567..14b5dcf9 100644 --- a/api/src/main/java/io/opencensus/trace/export/SampledSpanStore.java +++ b/api/src/main/java/io/opencensus/trace/export/SampledSpanStore.java @@ -21,14 +21,13 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.auto.value.AutoValue; import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import io.opencensus.trace.Span; import io.opencensus.trace.Status; import io.opencensus.trace.Status.CanonicalCode; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -487,11 +486,11 @@ public abstract class SampledSpanStore { Collections.emptyMap()); @GuardedBy("registeredSpanNames") - private final Set registeredSpanNames = Sets.newHashSet(); + private final Set registeredSpanNames = new HashSet(); @Override public Summary getSummary() { - Map result = Maps.newHashMap(); + Map result = new HashMap(); synchronized (registeredSpanNames) { for (String registeredSpanName : registeredSpanNames) { result.put(registeredSpanName, EMPTY_PER_SPAN_NAME_SUMMARY); @@ -531,7 +530,7 @@ public abstract class SampledSpanStore { @Override public Set getRegisteredSpanNamesForCollection() { synchronized (registeredSpanNames) { - return Collections.unmodifiableSet(Sets.newHashSet(registeredSpanNames)); + return Collections.unmodifiableSet(new HashSet(registeredSpanNames)); } } } diff --git a/api/src/main/java/io/opencensus/trace/export/SpanData.java b/api/src/main/java/io/opencensus/trace/export/SpanData.java index 120c231a..16ff4331 100644 --- a/api/src/main/java/io/opencensus/trace/export/SpanData.java +++ b/api/src/main/java/io/opencensus/trace/export/SpanData.java @@ -19,7 +19,6 @@ package io.opencensus.trace.export; import static com.google.common.base.Preconditions.checkNotNull; import com.google.auto.value.AutoValue; -import com.google.common.collect.Lists; import io.opencensus.common.Timestamp; import io.opencensus.internal.BaseMessageEventUtil; import io.opencensus.trace.Annotation; @@ -94,7 +93,7 @@ public abstract class SpanData { if (messageOrNetworkEvents == null) { throw new NullPointerException("Null messageOrNetworkEvents"); } - List> messageEventsList = Lists.newArrayList(); + List> messageEventsList = new ArrayList>(); for (TimedEvent timedEvent : messageOrNetworkEvents.getEvents()) { io.opencensus.trace.BaseMessageEvent event = timedEvent.getEvent(); @@ -198,7 +197,8 @@ public abstract class SpanData { @SuppressWarnings({"deprecation"}) public TimedEvents getNetworkEvents() { TimedEvents timedEvents = getMessageEvents(); - List> networkEventsList = Lists.newArrayList(); + List> networkEventsList = + new ArrayList>(); for (TimedEvent timedEvent : timedEvents.getEvents()) { networkEventsList.add( TimedEvent.create( -- cgit v1.2.3