This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new e2013a7e5fc Refactor PrometheusWrapperFactory (#23437)
e2013a7e5fc is described below

commit e2013a7e5fcd303af3c4a3f353e106798382bcca
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jan 9 17:48:26 2023 +0800

    Refactor PrometheusWrapperFactory (#23437)
---
 .../wrapper/PrometheusWrapperFactory.java          | 150 +++++++++------------
 1 file changed, 60 insertions(+), 90 deletions(-)

diff --git 
a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
 
b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
index fbaac60a2ed..3575c0afbab 100644
--- 
a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
+++ 
b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
@@ -54,104 +54,75 @@ public final class PrometheusWrapperFactory implements 
MetricsWrapperFactory {
         metrics = metricsMap.get("metrics");
     }
     
-    /**
-     * Create metrics wrapper.
-     *
-     * @param id id
-     * @return metrics wrapper
-     */
     @Override
     public Optional<MetricsWrapper> create(final String id) {
-        return createById(id);
-    }
-    
-    /**
-     * Create gauge metric family.
-     *
-     * @param id string
-     * @return gauge metric family
-     */
-    public Optional<GaugeMetricFamily> createGaugeMetricFamily(final String 
id) {
         Optional<Map<String, Object>> metricMap = findMetric(id);
         if (!metricMap.isPresent()) {
             return Optional.empty();
         }
         Map<String, Object> metric = metricMap.get();
-        if (null == getMetricType(metric)) {
-            return Optional.empty();
-        }
-        if ("GAUGEMETRICFAMILY".equalsIgnoreCase(getMetricType(metric))) {
-            return createGaugeMetricFamily(metric);
-        }
-        return Optional.empty();
-    }
-    
-    private Optional<GaugeMetricFamily> createGaugeMetricFamily(final 
Map<String, Object> metric) {
-        return Optional.of(null == getMetricLabels(metric)
-                ? new GaugeMetricFamily(getMetricName(metric), 
getMetricHelpMessage(metric), 1)
-                : new GaugeMetricFamily(getMetricName(metric), 
getMetricHelpMessage(metric), getMetricLabels(metric)));
+        return metric.containsKey("type") ? create(metric, (String) 
metric.get("type")) : Optional.empty();
     }
     
-    private Optional<MetricsWrapper> createById(final String id) {
-        Optional<Map<String, Object>> metricMap = findMetric(id);
-        if (!metricMap.isPresent()) {
-            return Optional.empty();
-        }
-        Map<String, Object> metric = metricMap.get();
-        if (null == getMetricType(metric)) {
-            return Optional.empty();
-        }
-        switch (getMetricType(metric).toUpperCase()) {
+    private Optional<MetricsWrapper> create(final Map<String, Object> metric, 
final String type) {
+        switch (type.toUpperCase()) {
             case "COUNTER":
-                return createCounter(metric);
+                return Optional.of(createCounter(metric));
             case "GAUGE":
-                return createGauge(metric);
+                return Optional.of(createGauge(metric));
             case "HISTOGRAM":
-                return createHistogram(metric);
+                return Optional.of(createHistogram(metric));
             case "SUMMARY":
-                return createSummary(metric);
+                return Optional.of(createSummary(metric));
             default:
                 return Optional.empty();
         }
     }
     
     private Optional<Map<String, Object>> findMetric(final String id) {
-        return metrics.stream().filter(optional -> 
id.equals(getMetricId(optional))).findFirst();
+        return metrics.stream().filter(each -> 
id.equals(each.get("id"))).findFirst();
     }
     
-    private Optional<MetricsWrapper> createCounter(final Map<String, Object> 
metric) {
-        Counter.Builder builder = 
Counter.build().name(getMetricName(metric)).help(getMetricHelpMessage(metric));
-        if (null != getMetricLabels(metric)) {
-            builder.labelNames(getMetricLabels(metric).toArray(new String[0]));
+    @SuppressWarnings("unchecked")
+    private MetricsWrapper createCounter(final Map<String, Object> metric) {
+        Counter.Builder builder = Counter.build().name((String) 
metric.get("name")).help((String) metric.get("help"));
+        List<String> metricLabels = (List<String>) metric.get("labels");
+        if (null != metricLabels) {
+            builder.labelNames(metricLabels.toArray(new String[0]));
         }
-        return Optional.of(new CounterWrapper(builder.register()));
+        return new CounterWrapper(builder.register());
     }
     
-    private Optional<MetricsWrapper> createGauge(final Map<String, Object> 
metric) {
-        Gauge.Builder builder = 
Gauge.build().name(getMetricName(metric)).help(getMetricHelpMessage(metric));
-        if (null != getMetricLabels(metric)) {
-            builder.labelNames(getMetricLabels(metric).toArray(new String[0]));
+    @SuppressWarnings("unchecked")
+    private MetricsWrapper createGauge(final Map<String, Object> metric) {
+        Gauge.Builder builder = Gauge.build().name((String) 
metric.get("name")).help((String) metric.get("help"));
+        List<String> metricLabels = (List<String>) metric.get("labels");
+        if (null != metricLabels) {
+            builder.labelNames(metricLabels.toArray(new String[0]));
         }
-        return Optional.of(new GaugeWrapper(builder.register()));
+        return new GaugeWrapper(builder.register());
     }
     
-    private Optional<MetricsWrapper> createHistogram(final Map<String, Object> 
metric) {
-        Histogram.Builder builder = 
Histogram.build().name(getMetricName(metric)).help(getMetricHelpMessage(metric));
-        if (null != getMetricLabels(metric)) {
-            builder.labelNames(getMetricLabels(metric).toArray(new String[0]));
+    @SuppressWarnings("unchecked")
+    private MetricsWrapper createHistogram(final Map<String, Object> metric) {
+        Histogram.Builder builder = Histogram.build().name((String) 
metric.get("name")).help((String) metric.get("help"));
+        List<String> metricLabels = (List<String>) metric.get("labels");
+        if (null != metricLabels) {
+            builder.labelNames(metricLabels.toArray(new String[0]));
         }
-        if (null != getMetricProperties(metric)) {
-            parserHistogramProperties(builder, getMetricProperties(metric));
+        Map<String, Object> metricProps = (Map<String, Object>) 
metric.get("props");
+        if (null != metricProps) {
+            parseHistogramProperties(builder, metricProps);
         }
-        return Optional.of(new HistogramWrapper(builder.register()));
+        return new HistogramWrapper(builder.register());
     }
     
     @SuppressWarnings("unchecked")
-    private void parserHistogramProperties(final Histogram.Builder builder, 
final Map<String, Object> props) {
-        if (null == props.get("buckets")) {
+    private void parseHistogramProperties(final Histogram.Builder builder, 
final Map<String, Object> props) {
+        Map<String, Object> buckets = (Map<String, Object>) 
props.get("buckets");
+        if (null == buckets) {
             return;
         }
-        Map<String, Object> buckets = (Map<String, Object>) 
props.get("buckets");
         if ("exp".equals(buckets.get("type"))) {
             double start = null == buckets.get("start") ? 1 : 
Double.parseDouble(buckets.get("start").toString());
             double factor = null == buckets.get("factor") ? 1 : 
Double.parseDouble(buckets.get("factor").toString());
@@ -165,37 +136,36 @@ public final class PrometheusWrapperFactory implements 
MetricsWrapperFactory {
         }
     }
     
-    private Optional<MetricsWrapper> createSummary(final Map<String, Object> 
metric) {
-        Summary.Builder builder = 
Summary.build().name(getMetricName(metric)).help(getMetricHelpMessage(metric));
-        if (null != getMetricLabels(metric)) {
-            builder.labelNames(getMetricLabels(metric).toArray(new String[0]));
+    @SuppressWarnings("unchecked")
+    private MetricsWrapper createSummary(final Map<String, Object> metric) {
+        Summary.Builder builder = Summary.build().name((String) 
metric.get("name")).help((String) metric.get("help"));
+        List<String> metricLabels = (List<String>) metric.get("labels");
+        if (null != metricLabels) {
+            builder.labelNames(metricLabels.toArray(new String[0]));
         }
-        return Optional.of(new SummaryWrapper(builder.register()));
+        return new SummaryWrapper(builder.register());
     }
     
-    private String getMetricId(final Map<String, Object> metric) {
-        return (String) metric.get("id");
-    }
-    
-    private String getMetricType(final Map<String, Object> metric) {
-        return (String) metric.get("type");
-    }
-    
-    private String getMetricName(final Map<String, Object> metric) {
-        return (String) metric.get("name");
-    }
-    
-    private String getMetricHelpMessage(final Map<String, Object> metric) {
-        return (String) metric.get("help");
-    }
-    
-    @SuppressWarnings("unchecked")
-    private List<String> getMetricLabels(final Map<String, Object> metric) {
-        return (List<String>) metric.get("labels");
+    /**
+     * Create gauge metric family.
+     *
+     * @param id string
+     * @return gauge metric family
+     */
+    public Optional<GaugeMetricFamily> createGaugeMetricFamily(final String 
id) {
+        Optional<Map<String, Object>> metricMap = findMetric(id);
+        if (!metricMap.isPresent()) {
+            return Optional.empty();
+        }
+        Map<String, Object> metric = metricMap.get();
+        return "GAUGEMETRICFAMILY".equalsIgnoreCase((String) 
metric.get("type")) ? createGaugeMetricFamily(metric) : Optional.empty();
     }
     
     @SuppressWarnings("unchecked")
-    private Map<String, Object> getMetricProperties(final Map<String, Object> 
metric) {
-        return (Map<String, Object>) metric.get("props");
+    private Optional<GaugeMetricFamily> createGaugeMetricFamily(final 
Map<String, Object> metric) {
+        List<String> metricLabels = (List<String>) metric.get("labels");
+        return Optional.of(null == metricLabels
+                ? new GaugeMetricFamily((String) metric.get("name"), (String) 
metric.get("help"), 1d)
+                : new GaugeMetricFamily((String) metric.get("name"), (String) 
metric.get("help"), metricLabels));
     }
 }

Reply via email to