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

zhaojinchao 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 5b9f2edc2cb Refactor YamlMetricConfigurationSwapper (#23565)
5b9f2edc2cb is described below

commit 5b9f2edc2cb5090e3c6497b20f6727a703dda39e
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jan 15 20:32:51 2023 +0800

    Refactor YamlMetricConfigurationSwapper (#23565)
---
 .../metrics/core/config/MetricConfiguration.java   |  4 +--
 .../yaml/entity/YamlMetricConfiguration.java       |  4 +--
 .../swapper/YamlMetricConfigurationSwapper.java    | 14 ++++++--
 .../wrapper/PrometheusWrapperFactory.java          | 41 +++++++++-------------
 4 files changed, 33 insertions(+), 30 deletions(-)

diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/MetricConfiguration.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/MetricConfiguration.java
index e10333b6cfb..576b2cdba22 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/MetricConfiguration.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/MetricConfiguration.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.agent.plugin.metrics.core.config;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
-import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -36,7 +36,7 @@ public final class MetricConfiguration {
     
     private final String help;
     
-    private final Collection<String> labels;
+    private final List<String> labels;
     
     private final Map<String, Object> props;
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/yaml/entity/YamlMetricConfiguration.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/yaml/entity/YamlMetricConfiguration.java
index 85b3293191b..865e552b844 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/yaml/entity/YamlMetricConfiguration.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/yaml/entity/YamlMetricConfiguration.java
@@ -20,9 +20,9 @@ package 
org.apache.shardingsphere.agent.plugin.metrics.core.config.yaml.entity;
 import lombok.Getter;
 import lombok.Setter;
 
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -38,7 +38,7 @@ public final class YamlMetricConfiguration {
     
     private String help;
     
-    private Collection<String> labels = new LinkedList<>();
+    private List<String> labels = new LinkedList<>();
     
     private Map<String, Object> props = new HashMap<>();
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/yaml/swapper/YamlMetricConfigurationSwapper.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/yaml/swapper/YamlMetricConfigurationSwapper.java
index 1fae712666b..f2d5ec9f584 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/yaml/swapper/YamlMetricConfigurationSwapper.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/config/yaml/swapper/YamlMetricConfigurationSwapper.java
@@ -17,12 +17,16 @@
 
 package 
org.apache.shardingsphere.agent.plugin.metrics.core.config.yaml.swapper;
 
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.yaml.entity.YamlMetricConfiguration;
 
 import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 /**
  * YAML metric configuration swapper.
@@ -37,7 +41,13 @@ public final class YamlMetricConfigurationSwapper {
      * @return metric configuration
      */
     public static MetricConfiguration swap(final YamlMetricConfiguration 
yamlConfig) {
-        return new MetricConfiguration(yamlConfig.getId(), 
yamlConfig.getType(), yamlConfig.getHelp(),
-                null == yamlConfig.getLabels() ? Collections.emptyList() : 
yamlConfig.getLabels(), null == yamlConfig.getProps() ? Collections.emptyMap() 
: yamlConfig.getProps());
+        String id = yamlConfig.getId();
+        Preconditions.checkArgument(!Strings.isNullOrEmpty(id), "Metric ID can 
not be null.");
+        String type = yamlConfig.getType();
+        Preconditions.checkArgument(!Strings.isNullOrEmpty(type), "Metric type 
can not be null.");
+        String help = yamlConfig.getHelp();
+        List<String> labels = null == yamlConfig.getLabels() ? 
Collections.emptyList() : yamlConfig.getLabels();
+        Map<String, Object> props = null == yamlConfig.getProps() ? 
Collections.emptyMap() : yamlConfig.getProps();
+        return new MetricConfiguration(id, type, help, labels, props);
     }
 }
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 8506290d6b5..539c13510f5 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
@@ -33,8 +33,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.prometheus.wrapper.type.Ga
 import 
org.apache.shardingsphere.agent.plugin.metrics.prometheus.wrapper.type.HistogramWrapper;
 import 
org.apache.shardingsphere.agent.plugin.metrics.prometheus.wrapper.type.SummaryWrapper;
 
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -57,9 +55,6 @@ public final class PrometheusWrapperFactory implements 
MetricsWrapperFactory {
     }
     
     private Optional<MetricsWrapper> create(final MetricConfiguration 
metricConfig) {
-        if (null == metricConfig.getType()) {
-            return Optional.empty();
-        }
         switch (metricConfig.getType().toUpperCase()) {
             case "COUNTER":
                 return Optional.of(createCounter(metricConfig));
@@ -76,31 +71,31 @@ public final class PrometheusWrapperFactory implements 
MetricsWrapperFactory {
     
     private MetricsWrapper createCounter(final MetricConfiguration 
metricConfig) {
         Counter.Builder builder = 
Counter.build().name(metricConfig.getId()).help(metricConfig.getHelp());
-        List<String> metricLabels = (List<String>) metricConfig.getLabels();
-        if (null != metricLabels) {
-            builder.labelNames(metricLabels.toArray(new String[0]));
+        List<String> labels = metricConfig.getLabels();
+        if (!labels.isEmpty()) {
+            builder.labelNames(labels.toArray(new String[0]));
         }
         return new CounterWrapper(builder.register());
     }
     
     private MetricsWrapper createGauge(final MetricConfiguration metricConfig) 
{
         Gauge.Builder builder = 
Gauge.build().name(metricConfig.getId()).help(metricConfig.getHelp());
-        Collection<String> metricLabels = metricConfig.getLabels();
-        if (null != metricLabels) {
-            builder.labelNames(metricLabels.toArray(new String[0]));
+        List<String> labels = metricConfig.getLabels();
+        if (!labels.isEmpty()) {
+            builder.labelNames(labels.toArray(new String[0]));
         }
         return new GaugeWrapper(builder.register());
     }
     
     private MetricsWrapper createHistogram(final MetricConfiguration 
metricConfig) {
         Histogram.Builder builder = 
Histogram.build().name(metricConfig.getId()).help(metricConfig.getHelp());
-        Collection<String> metricLabels = metricConfig.getLabels();
-        if (null != metricLabels) {
-            builder.labelNames(metricLabels.toArray(new String[0]));
+        List<String> labels = metricConfig.getLabels();
+        if (!labels.isEmpty()) {
+            builder.labelNames(labels.toArray(new String[0]));
         }
-        Map<String, Object> metricProps = metricConfig.getProps();
-        if (null != metricProps) {
-            parseHistogramProperties(builder, metricProps);
+        Map<String, Object> props = metricConfig.getProps();
+        if (!props.isEmpty()) {
+            parseHistogramProperties(builder, props);
         }
         return new HistogramWrapper(builder.register());
     }
@@ -126,9 +121,9 @@ public final class PrometheusWrapperFactory implements 
MetricsWrapperFactory {
     
     private MetricsWrapper createSummary(final MetricConfiguration 
metricConfig) {
         Summary.Builder builder = 
Summary.build().name(metricConfig.getId()).help(metricConfig.getHelp());
-        Collection<String> metricLabels = metricConfig.getLabels();
-        if (null != metricLabels) {
-            builder.labelNames(metricLabels.toArray(new String[0]));
+        List<String> labels = metricConfig.getLabels();
+        if (!labels.isEmpty()) {
+            builder.labelNames(labels.toArray(new String[0]));
         }
         return new SummaryWrapper(builder.register());
     }
@@ -144,9 +139,7 @@ public final class PrometheusWrapperFactory implements 
MetricsWrapperFactory {
     }
     
     private GaugeMetricFamily createGaugeMetricFamily(final 
MetricConfiguration metricConfig) {
-        Collection<String> labels = metricConfig.getLabels();
-        return null == labels
-                ? new GaugeMetricFamily(metricConfig.getId(), 
metricConfig.getHelp(), 1d)
-                : new GaugeMetricFamily(metricConfig.getId(), 
metricConfig.getHelp(), new ArrayList<>(labels));
+        List<String> labels = metricConfig.getLabels();
+        return labels.isEmpty() ? new GaugeMetricFamily(metricConfig.getId(), 
metricConfig.getHelp(), 1d) : new GaugeMetricFamily(metricConfig.getId(), 
metricConfig.getHelp(), labels);
     }
 }

Reply via email to