You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ja...@apache.org on 2019/01/16 00:44:45 UTC
[incubator-pinot] 01/01: Fix the TableConfig toJSONConfig() method
This is an automated email from the ASF dual-hosted git repository.
jackie pushed a commit to branch json_table_config
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
commit 019e2750184ee8f4d2d82c3e330c5d3eb0f546e9
Author: Jackie (Xiaotian) Jiang <xa...@linkedin.com>
AuthorDate: Tue Jan 15 16:42:58 2019 -0800
Fix the TableConfig toJSONConfig() method
toJSONConfig should return nested json object, instead of serialized json string as the key
Add test to verify that
---
.../apache/pinot/common/config/TableConfig.java | 38 ++++++++++------------
.../pinot/common/config/TableConfigTest.java | 14 ++++++--
2 files changed, 29 insertions(+), 23 deletions(-)
diff --git a/pinot-common/src/main/java/org/apache/pinot/common/config/TableConfig.java b/pinot-common/src/main/java/org/apache/pinot/common/config/TableConfig.java
index ed99729..e5efebc 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/config/TableConfig.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/config/TableConfig.java
@@ -41,15 +41,15 @@ import org.apache.pinot.startree.hll.HllConfig;
@ConfigDoc(value = "Configuration for a table", mandatory = true)
@ConfigKey("table")
public class TableConfig {
- private static final String TABLE_NAME_KEY = "tableName";
- private static final String TABLE_TYPE_KEY = "tableType";
- private static final String VALIDATION_CONFIG_KEY = "segmentsConfig";
- private static final String TENANT_CONFIG_KEY = "tenants";
- private static final String INDEXING_CONFIG_KEY = "tableIndexConfig";
- private static final String CUSTOM_CONFIG_KEY = "metadata";
- private static final String QUOTA_CONFIG_KEY = "quota";
- private static final String TASK_CONFIG_KEY = "task";
- private static final String ROUTING_CONFIG_KEY = "routing";
+ public static final String TABLE_NAME_KEY = "tableName";
+ public static final String TABLE_TYPE_KEY = "tableType";
+ public static final String VALIDATION_CONFIG_KEY = "segmentsConfig";
+ public static final String TENANT_CONFIG_KEY = "tenants";
+ public static final String INDEXING_CONFIG_KEY = "tableIndexConfig";
+ public static final String CUSTOM_CONFIG_KEY = "metadata";
+ public static final String QUOTA_CONFIG_KEY = "quota";
+ public static final String TASK_CONFIG_KEY = "task";
+ public static final String ROUTING_CONFIG_KEY = "routing";
@ConfigKey("name")
@ConfigDoc(value = "The name for the table.", mandatory = true, exampleValue = "myTable")
@@ -158,22 +158,22 @@ public class TableConfig {
}
@Nonnull
- public static JsonNode toJSONConfig(@Nonnull TableConfig tableConfig) throws JsonProcessingException {
+ public static JsonNode toJSONConfig(@Nonnull TableConfig tableConfig) {
ObjectNode jsonConfig = JsonUtils.newObjectNode();
jsonConfig.put(TABLE_NAME_KEY, tableConfig._tableName);
jsonConfig.put(TABLE_TYPE_KEY, tableConfig._tableType.toString());
- jsonConfig.put(VALIDATION_CONFIG_KEY, JsonUtils.objectToString(tableConfig._validationConfig));
- jsonConfig.put(TENANT_CONFIG_KEY, JsonUtils.objectToString(tableConfig._tenantConfig));
- jsonConfig.put(INDEXING_CONFIG_KEY, JsonUtils.objectToString(tableConfig._indexingConfig));
- jsonConfig.put(CUSTOM_CONFIG_KEY, JsonUtils.objectToString(tableConfig._customConfig));
+ jsonConfig.set(VALIDATION_CONFIG_KEY, JsonUtils.objectToJsonNode(tableConfig._validationConfig));
+ jsonConfig.set(TENANT_CONFIG_KEY, JsonUtils.objectToJsonNode(tableConfig._tenantConfig));
+ jsonConfig.set(INDEXING_CONFIG_KEY, JsonUtils.objectToJsonNode(tableConfig._indexingConfig));
+ jsonConfig.set(CUSTOM_CONFIG_KEY, JsonUtils.objectToJsonNode(tableConfig._customConfig));
if (tableConfig._quotaConfig != null) {
- jsonConfig.put(QUOTA_CONFIG_KEY, JsonUtils.objectToString(tableConfig._quotaConfig));
+ jsonConfig.set(QUOTA_CONFIG_KEY, JsonUtils.objectToJsonNode(tableConfig._quotaConfig));
}
if (tableConfig._taskConfig != null) {
- jsonConfig.put(TASK_CONFIG_KEY, JsonUtils.objectToString(tableConfig._taskConfig));
+ jsonConfig.set(TASK_CONFIG_KEY, JsonUtils.objectToJsonNode(tableConfig._taskConfig));
}
if (tableConfig._routingConfig != null) {
- jsonConfig.put(ROUTING_CONFIG_KEY, JsonUtils.objectToString(tableConfig._routingConfig));
+ jsonConfig.set(ROUTING_CONFIG_KEY, JsonUtils.objectToJsonNode(tableConfig._routingConfig));
}
return jsonConfig;
}
@@ -608,10 +608,6 @@ public class TableConfig {
_customConfig.setCustomConfigs(new HashMap<>());
}
- if (_routingConfig == null) {
- _routingConfig = new RoutingConfig();
- }
-
return new TableConfig(_tableName, _tableType, validationConfig, tenantConfig, indexingConfig, _customConfig,
_quotaConfig, _taskConfig, _routingConfig);
}
diff --git a/pinot-common/src/test/java/org/apache/pinot/common/config/TableConfigTest.java b/pinot-common/src/test/java/org/apache/pinot/common/config/TableConfigTest.java
index eef3cf1..5a229dd 100644
--- a/pinot-common/src/test/java/org/apache/pinot/common/config/TableConfigTest.java
+++ b/pinot-common/src/test/java/org/apache/pinot/common/config/TableConfigTest.java
@@ -18,6 +18,8 @@
*/
package org.apache.pinot.common.config;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@@ -43,8 +45,16 @@ public class TableConfigTest {
Assert.assertEquals(tableConfig.getIndexingConfig().getLoadMode(), "HEAP");
Assert.assertNull(tableConfig.getQuotaConfig());
- // Serialize then de-serialize
- TableConfig tableConfigToCompare = TableConfig.fromJSONConfig(TableConfig.toJSONConfig(tableConfig));
+ // Serialize
+ JsonNode jsonTableConfig = TableConfig.toJSONConfig(tableConfig);
+ // All nested configs should be json objects instead of serialized strings
+ Assert.assertTrue(jsonTableConfig.get(TableConfig.VALIDATION_CONFIG_KEY) instanceof ObjectNode);
+ Assert.assertTrue(jsonTableConfig.get(TableConfig.TENANT_CONFIG_KEY) instanceof ObjectNode);
+ Assert.assertTrue(jsonTableConfig.get(TableConfig.INDEXING_CONFIG_KEY) instanceof ObjectNode);
+ Assert.assertTrue(jsonTableConfig.get(TableConfig.CUSTOM_CONFIG_KEY) instanceof ObjectNode);
+
+ // De-serialize
+ TableConfig tableConfigToCompare = TableConfig.fromJSONConfig(jsonTableConfig);
Assert.assertEquals(tableConfigToCompare.getTableName(), tableConfig.getTableName());
Assert.assertNull(tableConfigToCompare.getQuotaConfig());
Assert.assertNull(tableConfigToCompare.getValidationConfig().getReplicaGroupStrategyConfig());
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org