aboutsummaryrefslogtreecommitdiff
path: root/api/src/main/java/io/opencensus/metrics/Metric.java
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/main/java/io/opencensus/metrics/Metric.java')
-rw-r--r--api/src/main/java/io/opencensus/metrics/Metric.java61
1 files changed, 37 insertions, 24 deletions
diff --git a/api/src/main/java/io/opencensus/metrics/Metric.java b/api/src/main/java/io/opencensus/metrics/Metric.java
index e8be0b90..9cbd418b 100644
--- a/api/src/main/java/io/opencensus/metrics/Metric.java
+++ b/api/src/main/java/io/opencensus/metrics/Metric.java
@@ -19,8 +19,10 @@ package io.opencensus.metrics;
import com.google.auto.value.AutoValue;
import io.opencensus.common.ExperimentalApi;
import io.opencensus.internal.Utils;
-import io.opencensus.metrics.TimeSeriesList.TimeSeriesCumulativeList;
-import io.opencensus.metrics.TimeSeriesList.TimeSeriesGaugeList;
+import io.opencensus.metrics.Value.ValueDistribution;
+import io.opencensus.metrics.Value.ValueDouble;
+import io.opencensus.metrics.Value.ValueLong;
+import java.util.List;
import javax.annotation.concurrent.Immutable;
/**
@@ -39,11 +41,11 @@ public abstract class Metric {
* Creates a {@link Metric}.
*
* @param metricDescriptor the {@link MetricDescriptor}.
- * @param timeSeriesList the {@link TimeSeriesList} for this metric.
+ * @param timeSeriesList the {@link TimeSeries} list for this metric.
* @return a {@code Metric}.
* @since 0.16
*/
- public static Metric create(MetricDescriptor metricDescriptor, TimeSeriesList timeSeriesList) {
+ public static Metric create(MetricDescriptor metricDescriptor, List<TimeSeries> timeSeriesList) {
checkTypeMatch(metricDescriptor.getType(), timeSeriesList);
return new AutoValue_Metric(metricDescriptor, timeSeriesList);
}
@@ -57,32 +59,43 @@ public abstract class Metric {
public abstract MetricDescriptor getMetricDescriptor();
/**
- * Returns the {@link TimeSeriesList} for this metric.
+ * Returns the {@link TimeSeries} list for this metric.
*
- * <p>The type of the {@link TimeSeriesList} must match {@link MetricDescriptor.Type}.
+ * <p>The type of the {@link TimeSeries#getPoints()} must match {@link MetricDescriptor.Type}.
*
* @return the {@code TimeSeriesList} for this metric.
* @since 0.16
*/
- public abstract TimeSeriesList getTimeSeriesList();
+ public abstract List<TimeSeries> getTimeSeriesList();
- private static void checkTypeMatch(MetricDescriptor.Type type, TimeSeriesList timeSeriesList) {
- switch (type) {
- case GAUGE_INT64:
- case GAUGE_DOUBLE:
- Utils.checkArgument(
- timeSeriesList instanceof TimeSeriesGaugeList,
- String.format(
- "Type mismatch: %s, %s.", type, timeSeriesList.getClass().getSimpleName()));
- break;
- case CUMULATIVE_DISTRIBUTION:
- case CUMULATIVE_DOUBLE:
- case CUMULATIVE_INT64:
- Utils.checkArgument(
- timeSeriesList instanceof TimeSeriesCumulativeList,
- String.format(
- "Type mismatch: %s, %s.", type, timeSeriesList.getClass().getSimpleName()));
- break;
+ private static void checkTypeMatch(MetricDescriptor.Type type, List<TimeSeries> timeSeriesList) {
+ for (TimeSeries timeSeries : timeSeriesList) {
+ for (Point point : timeSeries.getPoints()) {
+ Value value = point.getValue();
+ String valueClassName = "";
+ if (value.getClass().getSuperclass() != null) { // work around nullness check
+ // AutoValue classes should always have a super class.
+ valueClassName = value.getClass().getSuperclass().getSimpleName();
+ }
+ switch (type) {
+ case GAUGE_INT64:
+ case CUMULATIVE_INT64:
+ Utils.checkArgument(
+ value instanceof ValueLong,
+ String.format("Type mismatch: %s, %s.", type, valueClassName));
+ break;
+ case CUMULATIVE_DOUBLE:
+ case GAUGE_DOUBLE:
+ Utils.checkArgument(
+ value instanceof ValueDouble,
+ String.format("Type mismatch: %s, %s.", type, valueClassName));
+ break;
+ case CUMULATIVE_DISTRIBUTION:
+ Utils.checkArgument(
+ value instanceof ValueDistribution,
+ String.format("Type mismatch: %s, %s.", type, valueClassName));
+ }
+ }
}
}
}