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

jfim pushed a commit to branch apply-table-config-format-change
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit 8124826fff2c5a35e656d1e3fd00db1dcf795695
Author: Jean-Francois Im <[email protected]>
AuthorDate: Thu Nov 15 11:58:54 2018 -0800

    Change format of the ApplyConfig computed config
    
    Change the format of the computed config in ApplyConfig to make it
    easier to be reused by external tools. The new format is Java
    properties-style HOCON as opposed to the nested structure HOCON format.
---
 .../java/com/linkedin/pinot/common/config/Serializer.java     | 11 +++++++++++
 .../pinot/tools/admin/command/ApplyTableConfigCommand.java    |  3 +--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git 
a/pinot-common/src/main/java/com/linkedin/pinot/common/config/Serializer.java 
b/pinot-common/src/main/java/com/linkedin/pinot/common/config/Serializer.java
index 44e030d..2f66a23 100644
--- 
a/pinot-common/src/main/java/com/linkedin/pinot/common/config/Serializer.java
+++ 
b/pinot-common/src/main/java/com/linkedin/pinot/common/config/Serializer.java
@@ -18,6 +18,7 @@ package com.linkedin.pinot.common.config;
 import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
 import com.typesafe.config.ConfigRenderOptions;
+import com.typesafe.config.ConfigValueFactory;
 import io.vavr.Tuple;
 import io.vavr.collection.HashMap;
 import io.vavr.collection.List;
@@ -52,6 +53,16 @@ public class Serializer {
     return 
config.root().render(ConfigRenderOptions.defaults().setJson(false).setOriginComments(false));
   }
 
+  public static <T> String serializeToPropertiesString(T object) {
+    ConfigRenderOptions configRenderOptions =
+        
ConfigRenderOptions.defaults().setJson(false).setOriginComments(false).setFormatted(false);
+    return serialize(object)
+        .map(keyValueTuple -> keyValueTuple._1 + "=" +
+            
ConfigValueFactory.fromAnyRef(keyValueTuple._2).render(configRenderOptions))
+        .sorted()
+        .mkString("\n");
+  }
+
   private static <T> Map<String, ?> serialize(T object, Class<? extends T> 
clazz, String pathContext) throws Exception {
     if (object == null) {
       return HashMap.empty();
diff --git 
a/pinot-tools/src/main/java/com/linkedin/pinot/tools/admin/command/ApplyTableConfigCommand.java
 
b/pinot-tools/src/main/java/com/linkedin/pinot/tools/admin/command/ApplyTableConfigCommand.java
index b08ada4..72616b7 100644
--- 
a/pinot-tools/src/main/java/com/linkedin/pinot/tools/admin/command/ApplyTableConfigCommand.java
+++ 
b/pinot-tools/src/main/java/com/linkedin/pinot/tools/admin/command/ApplyTableConfigCommand.java
@@ -24,7 +24,6 @@ import 
com.linkedin.pinot.controller.helix.ControllerRequestURLBuilder;
 import com.linkedin.pinot.tools.Command;
 import java.io.File;
 import java.io.InputStream;
-import java.util.List;
 import org.apache.commons.io.IOUtils;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
@@ -80,7 +79,7 @@ public class ApplyTableConfigCommand extends 
AbstractBaseAdminCommand implements
       throw new RuntimeException("Table config does not contain a valid 
offline or realtime table definition.");
     }
 
-    String computedConfig = Serializer.serializeToString(combinedConfig);
+    String computedConfig = 
Serializer.serializeToPropertiesString(combinedConfig);
 
     if (_showComputedConfig) {
       System.out.println(computedConfig);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to