// THIS SHOULD EVENTUALLY GO AWAY WHEN I DON'T HAVE TO SEND BUS MESSAGES TO ALERTS public Map<String, Object> toMessageBusObject() { if (tenantId == null) { throw new IllegalStateException("Do not know the tenant ID"); } List<SingleMetric> singleMetrics = new ArrayList<>(); Map<String, List<Map<String, Object>>> gaugesAndCounters = metricsOnlyMetricPayloadBuilder.toObjectPayload(); // list of maps where map is keyed on metric ID ("id") and value is "data" // where "data" is another List<Map<String, Number>> that is the list of metric data. // That inner map is keyed on either "timestamp" or "value" (both are Numbers). List<Map<String, Object>> allMetrics = gaugesAndCounters.get("gaugeMetrics"); if (allMetrics != null) { for (Map<String, Object> metric : allMetrics) { String metricId = (String) metric.get("id"); List<Map<String, Number>> metricListData = (List<Map<String, Number>>) metric.get("data"); for (Map<String, Number> singleMetricData : metricListData) { long timestamp = singleMetricData.get("timestamp").longValue(); double value = singleMetricData.get("value").doubleValue(); singleMetrics.add(new SingleMetric(metricId, timestamp, value)); } } } allMetrics = gaugesAndCounters.get("counterMetrics"); if (allMetrics != null) { for (Map<String, Object> metric : allMetrics) { String metricId = (String) metric.get("id"); List<Map<String, Number>> metricListData = (List<Map<String, Number>>) metric.get("data"); for (Map<String, Number> singleMetricData : metricListData) { long timestamp = singleMetricData.get("timestamp").longValue(); double value = singleMetricData.get("value").doubleValue(); singleMetrics.add(new SingleMetric(metricId, timestamp, value)); } } } Map<String, Object> data = new HashMap<>(2); data.put("tenantId", tenantId); data.put("data", singleMetrics); Map<String, Object> outerBusObject = new HashMap<>(1); outerBusObject.put("metricData", data); return outerBusObject; }
@Override public int getNumberDataPoints() { return metricsOnlyMetricPayloadBuilder.getNumberDataPoints(); }
@Override public void addDataPoint(String key, long timestamp, double value, MetricType metricType) { // delegate metricsOnlyMetricPayloadBuilder.addDataPoint(key, timestamp, value, metricType); }