Browse Source

Introduce Constant for Common Settings toXContent Params (#84217)

Random find when looking into cluster state -> xcontent serialization.
We're using this specific param a lot so lets make it a constant
to make the serialization loop over settings a little tighter.
Armin Braun 2 years ago
parent
commit
1fd70bfaac

+ 1 - 1
server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java

@@ -2234,7 +2234,7 @@ public class IndexMetadata implements Diffable<IndexMetadata>, ToXContentFragmen
 
             builder.startObject(KEY_SETTINGS);
             if (context != Metadata.XContentContext.API) {
-                indexMetadata.getSettings().toXContent(builder, new MapParams(Collections.singletonMap("flat_settings", "true")));
+                indexMetadata.getSettings().toXContent(builder, Settings.FLAT_SETTINGS_TRUE);
             } else {
                 indexMetadata.getSettings().toXContent(builder, params);
             }

+ 7 - 3
server/src/main/java/org/elasticsearch/common/settings/Settings.java

@@ -78,6 +78,10 @@ public final class Settings implements ToXContentFragment, Writeable, Diffable<S
 
     public static final Settings EMPTY = new Settings(Map.of(), null);
 
+    public static final String FLAT_SETTINGS_PARAM = "flat_settings";
+
+    public static final MapParams FLAT_SETTINGS_TRUE = new MapParams(Map.of(FLAT_SETTINGS_PARAM, "true"));
+
     /** The raw settings from the full key to raw string value. */
     private final NavigableMap<String, Object> settings;
 
@@ -661,7 +665,7 @@ public final class Settings implements ToXContentFragment, Writeable, Diffable<S
     @Override
     public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
         Settings settings = SettingsFilter.filterSettings(params, this);
-        if (params.paramAsBoolean("flat_settings", false) == false) {
+        if (params.paramAsBoolean(FLAT_SETTINGS_PARAM, false) == false) {
             toXContentFlat(builder, settings);
         } else {
             toXContent(builder, settings);
@@ -806,7 +810,7 @@ public final class Settings implements ToXContentFragment, Writeable, Diffable<S
         }
     }
 
-    public static final Set<String> FORMAT_PARAMS = Set.of("settings_filter", "flat_settings");
+    public static final Set<String> FORMAT_PARAMS = Set.of("settings_filter", FLAT_SETTINGS_PARAM);
 
     /**
      * Returns {@code true} if this settings object contains no settings
@@ -1530,7 +1534,7 @@ public final class Settings implements ToXContentFragment, Writeable, Diffable<S
 
     @Override
     public String toString() {
-        return Strings.toString(this, new MapParams(Collections.singletonMap("flat_settings", "true")));
+        return Strings.toString(this, FLAT_SETTINGS_TRUE);
     }
 
     private static String toString(Object o) {

+ 1 - 2
server/src/main/java/org/elasticsearch/common/settings/SettingsModule.java

@@ -13,7 +13,6 @@ import org.apache.logging.log4j.Logger;
 import org.elasticsearch.common.Strings;
 import org.elasticsearch.common.inject.Binder;
 import org.elasticsearch.common.inject.Module;
-import org.elasticsearch.xcontent.ToXContent;
 import org.elasticsearch.xcontent.XContentBuilder;
 import org.elasticsearch.xcontent.XContentType;
 
@@ -132,7 +131,7 @@ public class SettingsModule implements Module {
                 try (XContentBuilder xContentBuilder = XContentBuilder.builder(XContentType.JSON.xContent())) {
                     xContentBuilder.prettyPrint();
                     xContentBuilder.startObject();
-                    indexSettings.toXContent(xContentBuilder, new ToXContent.MapParams(Collections.singletonMap("flat_settings", "true")));
+                    indexSettings.toXContent(xContentBuilder, Settings.FLAT_SETTINGS_TRUE);
                     xContentBuilder.endObject();
                     builder.append(Strings.toString(xContentBuilder));
                 }

+ 2 - 1
server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestGetSettingsAction.java

@@ -12,6 +12,7 @@ import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
 import org.elasticsearch.action.support.IndicesOptions;
 import org.elasticsearch.client.internal.node.NodeClient;
 import org.elasticsearch.common.Strings;
+import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.rest.BaseRestHandler;
 import org.elasticsearch.rest.RestRequest;
 import org.elasticsearch.rest.action.RestChunkedToXContentListener;
@@ -44,7 +45,7 @@ public class RestGetSettingsAction extends BaseRestHandler {
         final String[] names = request.paramAsStringArrayOrEmptyIfAll("name");
         final boolean renderDefaults = request.paramAsBoolean("include_defaults", false);
         // This is required so the "flat_settings" parameter counts as consumed
-        request.paramAsBoolean("flat_settings", false);
+        request.paramAsBoolean(Settings.FLAT_SETTINGS_PARAM, false);
         GetSettingsRequest getSettingsRequest = new GetSettingsRequest().indices(Strings.splitStringByCommaToArray(request.param("index")))
             .indicesOptions(IndicesOptions.fromRequest(request, IndicesOptions.strictExpandOpen()))
             .humanReadable(request.hasParam("human"))

+ 2 - 2
server/src/test/java/org/elasticsearch/common/settings/SettingsTests.java

@@ -543,7 +543,7 @@ public class SettingsTests extends ESTestCase {
         final boolean flatSettings = randomBoolean();
         XContentBuilder builder = XContentBuilder.builder(XContentType.JSON.xContent());
         builder.startObject();
-        settings.toXContent(builder, new ToXContent.MapParams(Collections.singletonMap("flat_settings", "" + flatSettings)));
+        settings.toXContent(builder, new ToXContent.MapParams(Collections.singletonMap(Settings.FLAT_SETTINGS_PARAM, "" + flatSettings)));
         builder.endObject();
         XContentParser parser = createParser(builder);
         Settings build = Settings.fromXContent(parser);
@@ -591,7 +591,7 @@ public class SettingsTests extends ESTestCase {
 
         builder = XContentBuilder.builder(XContentType.JSON.xContent());
         builder.startObject();
-        test.toXContent(builder, new ToXContent.MapParams(Collections.singletonMap("flat_settings", "true")));
+        test.toXContent(builder, Settings.FLAT_SETTINGS_TRUE);
         builder.endObject();
         assertEquals("""
             {"foo.bar":["1","2","3"]}""", Strings.toString(builder));