فهرست منبع

Introduce dedicated interface for health indicator details. (#83417)

This change introduces dedicated interface for health indicator details
to simplify finding usages and potential refactorings.
Ievgen Degtiarenko 3 سال پیش
والد
کامیت
aa2affea54

+ 5 - 0
docs/changelog/83417.yaml

@@ -0,0 +1,5 @@
+pr: 83417
+summary: Introduce dedicated interface for health indicator details
+area: Health
+type: enhancement
+issues: []

+ 24 - 0
server/src/main/java/org/elasticsearch/health/HealthIndicatorDetails.java

@@ -0,0 +1,24 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+package org.elasticsearch.health;
+
+import org.elasticsearch.xcontent.ToXContentFragment;
+import org.elasticsearch.xcontent.XContentBuilder;
+
+import java.io.IOException;
+
+public interface HealthIndicatorDetails extends ToXContentFragment {
+
+    HealthIndicatorDetails EMPTY = new HealthIndicatorDetails() {
+        @Override
+        public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
+            return builder;
+        }
+    };
+}

+ 1 - 2
server/src/main/java/org/elasticsearch/health/HealthIndicatorResult.java

@@ -8,13 +8,12 @@
 
 package org.elasticsearch.health;
 
-import org.elasticsearch.xcontent.ToXContentFragment;
 import org.elasticsearch.xcontent.ToXContentObject;
 import org.elasticsearch.xcontent.XContentBuilder;
 
 import java.io.IOException;
 
-public record HealthIndicatorResult(String name, String component, HealthStatus status, String summary, ToXContentFragment details)
+public record HealthIndicatorResult(String name, String component, HealthStatus status, String summary, HealthIndicatorDetails details)
     implements
         ToXContentObject {
 

+ 29 - 0
server/src/main/java/org/elasticsearch/health/SimpleHealthIndicatorDetails.java

@@ -0,0 +1,29 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+package org.elasticsearch.health;
+
+import org.elasticsearch.xcontent.XContentBuilder;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.Objects;
+
+public class SimpleHealthIndicatorDetails implements HealthIndicatorDetails {
+
+    private final Map<String, Object> details;
+
+    public SimpleHealthIndicatorDetails(Map<String, Object> details) {
+        this.details = Objects.requireNonNull(details);
+    }
+
+    @Override
+    public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
+        return builder.map(details);
+    }
+}