diff --git a/java/google/registry/monitoring/metrics/MetricPoint.java b/java/google/registry/monitoring/metrics/MetricPoint.java index 811f74114..faf454f71 100644 --- a/java/google/registry/monitoring/metrics/MetricPoint.java +++ b/java/google/registry/monitoring/metrics/MetricPoint.java @@ -25,7 +25,7 @@ import org.joda.time.Interval; * time {@link Interval}. */ @AutoValue -public abstract class MetricPoint { +public abstract class MetricPoint implements Comparable> { /** * Returns a new {@link MetricPoint} representing a value at a specific {@link Instant}. @@ -69,4 +69,17 @@ public abstract class MetricPoint { public abstract Interval interval(); public abstract V value(); + + @Override + public int compareTo(MetricPoint other) { + int minLength = Math.min(this.labelValues().size(), other.labelValues().size()); + for (int index = 0; index < minLength; index++) { + int comparisonResult = + this.labelValues().get(index).compareTo(other.labelValues().get(index)); + if (comparisonResult != 0) { + return comparisonResult; + } + } + return Integer.compare(this.labelValues().size(), other.labelValues().size()); + } }