suneet-s commented on a change in pull request #10463:
URL: https://github.com/apache/druid/pull/10463#discussion_r499034434



##########
File path: 
integration-tests/src/main/java/org/apache/druid/testing/DockerConfigProvider.java
##########
@@ -260,4 +269,32 @@ public String getStreamEndpoint()
       }
     };
   }
+
+  // there is probably a better way to do this...
+  static class ArbitraryPropertiesJsonDeserializer extends 
JsonDeserializer<Map<String, String>>
+  {
+    @Override
+    public Map<String, String> deserialize(JsonParser jsonParser, 
DeserializationContext deserializationContext)
+        throws IOException
+    {
+      // reading like this results in a map that has both nested objects and 
also flattened string pairs
+      // so the map looks something like this:
+
+      //    {
+      //      "a" : { "b": { "c" : "d" }}},
+      //      "a.b.c":"d"
+      //    }
+
+      // filtering out the top level keys which do not have string values 
produces what we want here that
+      // '-Ddruid.test.config.properites.some.property.key=foo' -> { 
"some.property.key":"foo"}
+      Map<String, Object> parsed = jsonParser.readValueAs(Map.class);
+      Map<String, String> flat = new HashMap<>();
+      for (Map.Entry<String, Object> entry : parsed.entrySet()) {
+        if (entry.getValue() instanceof String) {
+          flat.put(entry.getKey(), (String) entry.getValue());
+        }
+      }

Review comment:
       I misread your comment earlier I thought an input of 
   
   ```json
   {"a" : { "b": { "c" : "d" }}}}
   ```
   
   would be converted to a map with an entry like
   
   ```
   "a.b.c":"d"
   ```
   
   To help me understand, could you describe an example (sample input + 
expected output) where the default Deserializer would produce a different 
output from what this deserializer does?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]



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

Reply via email to