You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by ji...@apache.org on 2021/01/26 21:36:09 UTC

[druid] branch 0.20.1 created (now ae4b192)

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

jihoonson pushed a change to branch 0.20.1
in repository https://gitbox.apache.org/repos/asf/druid.git.


      at ae4b192  Cleaner handling for Jackson annotations

This branch includes the following new commits:

     new a12727e  Bump version to 0.20.1-SNAPSHOT manually
     new ae4b192  Cleaner handling for Jackson annotations

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org


[druid] 01/02: Bump version to 0.20.1-SNAPSHOT manually

Posted by ji...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jihoonson pushed a commit to branch 0.20.1
in repository https://gitbox.apache.org/repos/asf/druid.git

commit a12727eed8a9a312c95c2f315e6e56c180b8763e
Author: Jihoon Son <ji...@apache.org>
AuthorDate: Tue Jan 26 12:36:43 2021 -0800

    Bump version to 0.20.1-SNAPSHOT manually
---
 benchmarks/pom.xml                                       | 2 +-
 cloud/aws-common/pom.xml                                 | 2 +-
 cloud/gcp-common/pom.xml                                 | 2 +-
 core/pom.xml                                             | 2 +-
 distribution/pom.xml                                     | 2 +-
 extendedset/pom.xml                                      | 2 +-
 extensions-contrib/aliyun-oss-extensions/pom.xml         | 2 +-
 extensions-contrib/ambari-metrics-emitter/pom.xml        | 2 +-
 extensions-contrib/cassandra-storage/pom.xml             | 2 +-
 extensions-contrib/cloudfiles-extensions/pom.xml         | 2 +-
 extensions-contrib/distinctcount/pom.xml                 | 2 +-
 extensions-contrib/dropwizard-emitter/pom.xml            | 2 +-
 extensions-contrib/gce-extensions/pom.xml                | 2 +-
 extensions-contrib/graphite-emitter/pom.xml              | 2 +-
 extensions-contrib/influx-extensions/pom.xml             | 2 +-
 extensions-contrib/influxdb-emitter/pom.xml              | 2 +-
 extensions-contrib/kafka-emitter/pom.xml                 | 2 +-
 extensions-contrib/materialized-view-maintenance/pom.xml | 2 +-
 extensions-contrib/materialized-view-selection/pom.xml   | 2 +-
 extensions-contrib/momentsketch/pom.xml                  | 2 +-
 extensions-contrib/moving-average-query/pom.xml          | 2 +-
 extensions-contrib/opentsdb-emitter/pom.xml              | 2 +-
 extensions-contrib/redis-cache/pom.xml                   | 2 +-
 extensions-contrib/sqlserver-metadata-storage/pom.xml    | 2 +-
 extensions-contrib/statsd-emitter/pom.xml                | 2 +-
 extensions-contrib/tdigestsketch/pom.xml                 | 2 +-
 extensions-contrib/thrift-extensions/pom.xml             | 2 +-
 extensions-contrib/time-min-max/pom.xml                  | 2 +-
 extensions-contrib/virtual-columns/pom.xml               | 2 +-
 extensions-core/avro-extensions/pom.xml                  | 2 +-
 extensions-core/azure-extensions/pom.xml                 | 2 +-
 extensions-core/datasketches/pom.xml                     | 2 +-
 extensions-core/druid-basic-security/pom.xml             | 2 +-
 extensions-core/druid-bloom-filter/pom.xml               | 2 +-
 extensions-core/druid-kerberos/pom.xml                   | 2 +-
 extensions-core/druid-pac4j/pom.xml                      | 2 +-
 extensions-core/druid-ranger-security/pom.xml            | 2 +-
 extensions-core/ec2-extensions/pom.xml                   | 2 +-
 extensions-core/google-extensions/pom.xml                | 2 +-
 extensions-core/hdfs-storage/pom.xml                     | 2 +-
 extensions-core/histogram/pom.xml                        | 2 +-
 extensions-core/kafka-extraction-namespace/pom.xml       | 2 +-
 extensions-core/kafka-indexing-service/pom.xml           | 2 +-
 extensions-core/kinesis-indexing-service/pom.xml         | 2 +-
 extensions-core/lookups-cached-global/pom.xml            | 2 +-
 extensions-core/lookups-cached-single/pom.xml            | 2 +-
 extensions-core/mysql-metadata-storage/pom.xml           | 2 +-
 extensions-core/orc-extensions/pom.xml                   | 2 +-
 extensions-core/parquet-extensions/pom.xml               | 2 +-
 extensions-core/postgresql-metadata-storage/pom.xml      | 2 +-
 extensions-core/protobuf-extensions/pom.xml              | 2 +-
 extensions-core/s3-extensions/pom.xml                    | 2 +-
 extensions-core/simple-client-sslcontext/pom.xml         | 2 +-
 extensions-core/stats/pom.xml                            | 2 +-
 hll/pom.xml                                              | 2 +-
 indexing-hadoop/pom.xml                                  | 2 +-
 indexing-service/pom.xml                                 | 2 +-
 integration-tests/pom.xml                                | 2 +-
 pom.xml                                                  | 2 +-
 processing/pom.xml                                       | 2 +-
 server/pom.xml                                           | 2 +-
 services/pom.xml                                         | 2 +-
 sql/pom.xml                                              | 2 +-
 web-console/package-lock.json                            | 2 +-
 web-console/package.json                                 | 2 +-
 web-console/pom.xml                                      | 2 +-
 web-console/unified-console.html                         | 2 +-
 website/pom.xml                                          | 2 +-
 68 files changed, 68 insertions(+), 68 deletions(-)

diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml
index cf0b98a..f5c6395 100644
--- a/benchmarks/pom.xml
+++ b/benchmarks/pom.xml
@@ -27,7 +27,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
   </parent>
 
   <prerequisites>
diff --git a/cloud/aws-common/pom.xml b/cloud/aws-common/pom.xml
index a8ac843..bd68805 100644
--- a/cloud/aws-common/pom.xml
+++ b/cloud/aws-common/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/cloud/gcp-common/pom.xml b/cloud/gcp-common/pom.xml
index 942706a..4685fd6 100644
--- a/cloud/gcp-common/pom.xml
+++ b/cloud/gcp-common/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/core/pom.xml b/core/pom.xml
index 86dcd3c..58c6d7b 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <artifactId>druid</artifactId>
     <groupId>org.apache.druid</groupId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
   </parent>
 
   <properties>
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 691bb48..3e877b7 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -31,7 +31,7 @@
     <parent>
         <artifactId>druid</artifactId>
         <groupId>org.apache.druid</groupId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
     </parent>
 
     <dependencies>
diff --git a/extendedset/pom.xml b/extendedset/pom.xml
index 41e154d..3309281 100755
--- a/extendedset/pom.xml
+++ b/extendedset/pom.xml
@@ -32,7 +32,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
   </parent>
 
   <dependencies>
diff --git a/extensions-contrib/aliyun-oss-extensions/pom.xml b/extensions-contrib/aliyun-oss-extensions/pom.xml
index 9659240..f331e3f 100644
--- a/extensions-contrib/aliyun-oss-extensions/pom.xml
+++ b/extensions-contrib/aliyun-oss-extensions/pom.xml
@@ -29,7 +29,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
   
diff --git a/extensions-contrib/ambari-metrics-emitter/pom.xml b/extensions-contrib/ambari-metrics-emitter/pom.xml
index 7e48add..6238a8b 100644
--- a/extensions-contrib/ambari-metrics-emitter/pom.xml
+++ b/extensions-contrib/ambari-metrics-emitter/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-contrib/cassandra-storage/pom.xml b/extensions-contrib/cassandra-storage/pom.xml
index 631df4f..590d75e 100644
--- a/extensions-contrib/cassandra-storage/pom.xml
+++ b/extensions-contrib/cassandra-storage/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-contrib/cloudfiles-extensions/pom.xml b/extensions-contrib/cloudfiles-extensions/pom.xml
index e79d844..8262562 100644
--- a/extensions-contrib/cloudfiles-extensions/pom.xml
+++ b/extensions-contrib/cloudfiles-extensions/pom.xml
@@ -30,7 +30,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-contrib/distinctcount/pom.xml b/extensions-contrib/distinctcount/pom.xml
index 507cc52..699664a 100644
--- a/extensions-contrib/distinctcount/pom.xml
+++ b/extensions-contrib/distinctcount/pom.xml
@@ -30,7 +30,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-contrib/dropwizard-emitter/pom.xml b/extensions-contrib/dropwizard-emitter/pom.xml
index 6959129..9d630d3 100644
--- a/extensions-contrib/dropwizard-emitter/pom.xml
+++ b/extensions-contrib/dropwizard-emitter/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-contrib/gce-extensions/pom.xml b/extensions-contrib/gce-extensions/pom.xml
index db64e27..feaa7a1 100644
--- a/extensions-contrib/gce-extensions/pom.xml
+++ b/extensions-contrib/gce-extensions/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-contrib/graphite-emitter/pom.xml b/extensions-contrib/graphite-emitter/pom.xml
index 7b1963e..1159196 100644
--- a/extensions-contrib/graphite-emitter/pom.xml
+++ b/extensions-contrib/graphite-emitter/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-contrib/influx-extensions/pom.xml b/extensions-contrib/influx-extensions/pom.xml
index 397d6e3..ef9b855 100644
--- a/extensions-contrib/influx-extensions/pom.xml
+++ b/extensions-contrib/influx-extensions/pom.xml
@@ -30,7 +30,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-contrib/influxdb-emitter/pom.xml b/extensions-contrib/influxdb-emitter/pom.xml
index 98c380c..666d247 100644
--- a/extensions-contrib/influxdb-emitter/pom.xml
+++ b/extensions-contrib/influxdb-emitter/pom.xml
@@ -30,7 +30,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-contrib/kafka-emitter/pom.xml b/extensions-contrib/kafka-emitter/pom.xml
index 663f646..7bb2c76 100644
--- a/extensions-contrib/kafka-emitter/pom.xml
+++ b/extensions-contrib/kafka-emitter/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-contrib/materialized-view-maintenance/pom.xml b/extensions-contrib/materialized-view-maintenance/pom.xml
index 3cbf9a3..a4b8019 100644
--- a/extensions-contrib/materialized-view-maintenance/pom.xml
+++ b/extensions-contrib/materialized-view-maintenance/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <artifactId>druid</artifactId>
         <groupId>org.apache.druid</groupId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-contrib/materialized-view-selection/pom.xml b/extensions-contrib/materialized-view-selection/pom.xml
index 0f89ab7..1753943 100644
--- a/extensions-contrib/materialized-view-selection/pom.xml
+++ b/extensions-contrib/materialized-view-selection/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <artifactId>druid</artifactId>
         <groupId>org.apache.druid</groupId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-contrib/momentsketch/pom.xml b/extensions-contrib/momentsketch/pom.xml
index acab207..b8e60e7 100644
--- a/extensions-contrib/momentsketch/pom.xml
+++ b/extensions-contrib/momentsketch/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <artifactId>druid</artifactId>
         <groupId>org.apache.druid</groupId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-contrib/moving-average-query/pom.xml b/extensions-contrib/moving-average-query/pom.xml
index ef7d791..d7a43ce 100644
--- a/extensions-contrib/moving-average-query/pom.xml
+++ b/extensions-contrib/moving-average-query/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-contrib/opentsdb-emitter/pom.xml b/extensions-contrib/opentsdb-emitter/pom.xml
index a700a35..d5f7287 100644
--- a/extensions-contrib/opentsdb-emitter/pom.xml
+++ b/extensions-contrib/opentsdb-emitter/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-contrib/redis-cache/pom.xml b/extensions-contrib/redis-cache/pom.xml
index 8e524cf..1ebfaa5 100644
--- a/extensions-contrib/redis-cache/pom.xml
+++ b/extensions-contrib/redis-cache/pom.xml
@@ -30,7 +30,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-contrib/sqlserver-metadata-storage/pom.xml b/extensions-contrib/sqlserver-metadata-storage/pom.xml
index 871f416..1ee30d2 100644
--- a/extensions-contrib/sqlserver-metadata-storage/pom.xml
+++ b/extensions-contrib/sqlserver-metadata-storage/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-contrib/statsd-emitter/pom.xml b/extensions-contrib/statsd-emitter/pom.xml
index a569bc4..f575a4e 100644
--- a/extensions-contrib/statsd-emitter/pom.xml
+++ b/extensions-contrib/statsd-emitter/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>druid</artifactId>
     <groupId>org.apache.druid</groupId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-contrib/tdigestsketch/pom.xml b/extensions-contrib/tdigestsketch/pom.xml
index 94ea491..6982d09 100644
--- a/extensions-contrib/tdigestsketch/pom.xml
+++ b/extensions-contrib/tdigestsketch/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>druid</artifactId>
     <groupId>org.apache.druid</groupId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-contrib/thrift-extensions/pom.xml b/extensions-contrib/thrift-extensions/pom.xml
index 8bb074f..bf2423a 100644
--- a/extensions-contrib/thrift-extensions/pom.xml
+++ b/extensions-contrib/thrift-extensions/pom.xml
@@ -30,7 +30,7 @@
   <parent>
     <artifactId>druid</artifactId>
     <groupId>org.apache.druid</groupId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-contrib/time-min-max/pom.xml b/extensions-contrib/time-min-max/pom.xml
index bac4ce2..d6ba8b1 100644
--- a/extensions-contrib/time-min-max/pom.xml
+++ b/extensions-contrib/time-min-max/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>druid</artifactId>
     <groupId>org.apache.druid</groupId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-contrib/virtual-columns/pom.xml b/extensions-contrib/virtual-columns/pom.xml
index 2e4b9d6..c2eb1d4 100644
--- a/extensions-contrib/virtual-columns/pom.xml
+++ b/extensions-contrib/virtual-columns/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-core/avro-extensions/pom.xml b/extensions-core/avro-extensions/pom.xml
index d82e378..e9ec7e4 100644
--- a/extensions-core/avro-extensions/pom.xml
+++ b/extensions-core/avro-extensions/pom.xml
@@ -30,7 +30,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/azure-extensions/pom.xml b/extensions-core/azure-extensions/pom.xml
index 5e36dd3..8a85632 100644
--- a/extensions-core/azure-extensions/pom.xml
+++ b/extensions-core/azure-extensions/pom.xml
@@ -30,7 +30,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-core/datasketches/pom.xml b/extensions-core/datasketches/pom.xml
index 2111ff3..c6fd79f 100644
--- a/extensions-core/datasketches/pom.xml
+++ b/extensions-core/datasketches/pom.xml
@@ -30,7 +30,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/druid-basic-security/pom.xml b/extensions-core/druid-basic-security/pom.xml
index 0ac8820..f503d17 100644
--- a/extensions-core/druid-basic-security/pom.xml
+++ b/extensions-core/druid-basic-security/pom.xml
@@ -32,7 +32,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/druid-bloom-filter/pom.xml b/extensions-core/druid-bloom-filter/pom.xml
index fc7a3a8..6d34f1e 100644
--- a/extensions-core/druid-bloom-filter/pom.xml
+++ b/extensions-core/druid-bloom-filter/pom.xml
@@ -30,7 +30,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/druid-kerberos/pom.xml b/extensions-core/druid-kerberos/pom.xml
index 0e7b1d4..1103b76 100644
--- a/extensions-core/druid-kerberos/pom.xml
+++ b/extensions-core/druid-kerberos/pom.xml
@@ -30,7 +30,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/druid-pac4j/pom.xml b/extensions-core/druid-pac4j/pom.xml
index 9cd93ec..eed6aa3 100644
--- a/extensions-core/druid-pac4j/pom.xml
+++ b/extensions-core/druid-pac4j/pom.xml
@@ -29,7 +29,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/druid-ranger-security/pom.xml b/extensions-core/druid-ranger-security/pom.xml
index fcd5b17..0bb1c2f 100644
--- a/extensions-core/druid-ranger-security/pom.xml
+++ b/extensions-core/druid-ranger-security/pom.xml
@@ -32,7 +32,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-core/ec2-extensions/pom.xml b/extensions-core/ec2-extensions/pom.xml
index e2a7fb7..d0c4379 100644
--- a/extensions-core/ec2-extensions/pom.xml
+++ b/extensions-core/ec2-extensions/pom.xml
@@ -30,7 +30,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/google-extensions/pom.xml b/extensions-core/google-extensions/pom.xml
index b14e916..a12cb26 100644
--- a/extensions-core/google-extensions/pom.xml
+++ b/extensions-core/google-extensions/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-core/hdfs-storage/pom.xml b/extensions-core/hdfs-storage/pom.xml
index a75e6a3..5ac47ac 100644
--- a/extensions-core/hdfs-storage/pom.xml
+++ b/extensions-core/hdfs-storage/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-core/histogram/pom.xml b/extensions-core/histogram/pom.xml
index 789cb6d..4c88b98 100644
--- a/extensions-core/histogram/pom.xml
+++ b/extensions-core/histogram/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-core/kafka-extraction-namespace/pom.xml b/extensions-core/kafka-extraction-namespace/pom.xml
index 616f2e8..f90dcdd 100644
--- a/extensions-core/kafka-extraction-namespace/pom.xml
+++ b/extensions-core/kafka-extraction-namespace/pom.xml
@@ -29,7 +29,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/kafka-indexing-service/pom.xml b/extensions-core/kafka-indexing-service/pom.xml
index 50de00b..36026fb 100644
--- a/extensions-core/kafka-indexing-service/pom.xml
+++ b/extensions-core/kafka-indexing-service/pom.xml
@@ -29,7 +29,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/kinesis-indexing-service/pom.xml b/extensions-core/kinesis-indexing-service/pom.xml
index 630f8c3..1e7149e 100644
--- a/extensions-core/kinesis-indexing-service/pom.xml
+++ b/extensions-core/kinesis-indexing-service/pom.xml
@@ -30,7 +30,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-core/lookups-cached-global/pom.xml b/extensions-core/lookups-cached-global/pom.xml
index 235fd27..8dfcef3 100644
--- a/extensions-core/lookups-cached-global/pom.xml
+++ b/extensions-core/lookups-cached-global/pom.xml
@@ -29,7 +29,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/lookups-cached-single/pom.xml b/extensions-core/lookups-cached-single/pom.xml
index a11ab1f..b45a125 100644
--- a/extensions-core/lookups-cached-single/pom.xml
+++ b/extensions-core/lookups-cached-single/pom.xml
@@ -29,7 +29,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/mysql-metadata-storage/pom.xml b/extensions-core/mysql-metadata-storage/pom.xml
index ae0d1ad..56298f4 100644
--- a/extensions-core/mysql-metadata-storage/pom.xml
+++ b/extensions-core/mysql-metadata-storage/pom.xml
@@ -30,7 +30,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-core/orc-extensions/pom.xml b/extensions-core/orc-extensions/pom.xml
index 649ae47..e646082 100644
--- a/extensions-core/orc-extensions/pom.xml
+++ b/extensions-core/orc-extensions/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <artifactId>druid</artifactId>
         <groupId>org.apache.druid</groupId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-core/parquet-extensions/pom.xml b/extensions-core/parquet-extensions/pom.xml
index 9d7cee2..0783112 100644
--- a/extensions-core/parquet-extensions/pom.xml
+++ b/extensions-core/parquet-extensions/pom.xml
@@ -29,7 +29,7 @@
   <parent>
     <artifactId>druid</artifactId>
     <groupId>org.apache.druid</groupId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-core/postgresql-metadata-storage/pom.xml b/extensions-core/postgresql-metadata-storage/pom.xml
index 32e67b8..89df92e 100644
--- a/extensions-core/postgresql-metadata-storage/pom.xml
+++ b/extensions-core/postgresql-metadata-storage/pom.xml
@@ -30,7 +30,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/extensions-core/protobuf-extensions/pom.xml b/extensions-core/protobuf-extensions/pom.xml
index 6097280..99964fb 100644
--- a/extensions-core/protobuf-extensions/pom.xml
+++ b/extensions-core/protobuf-extensions/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <artifactId>druid</artifactId>
     <groupId>org.apache.druid</groupId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/s3-extensions/pom.xml b/extensions-core/s3-extensions/pom.xml
index e5a5d7a..fea7596 100644
--- a/extensions-core/s3-extensions/pom.xml
+++ b/extensions-core/s3-extensions/pom.xml
@@ -30,7 +30,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
diff --git a/extensions-core/simple-client-sslcontext/pom.xml b/extensions-core/simple-client-sslcontext/pom.xml
index ad0ec4b..3845dfc 100644
--- a/extensions-core/simple-client-sslcontext/pom.xml
+++ b/extensions-core/simple-client-sslcontext/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>druid</artifactId>
     <groupId>org.apache.druid</groupId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <relativePath>../../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/extensions-core/stats/pom.xml b/extensions-core/stats/pom.xml
index f2b605a..5dde364 100644
--- a/extensions-core/stats/pom.xml
+++ b/extensions-core/stats/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hll/pom.xml b/hll/pom.xml
index f79d575..89b9027 100644
--- a/hll/pom.xml
+++ b/hll/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
     </parent>
 
     <artifactId>druid-hll</artifactId>
diff --git a/indexing-hadoop/pom.xml b/indexing-hadoop/pom.xml
index 0df931c..9d92649 100644
--- a/indexing-hadoop/pom.xml
+++ b/indexing-hadoop/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
     </parent>
 
     <dependencies>
diff --git a/indexing-service/pom.xml b/indexing-service/pom.xml
index 9da439d..b85716b 100644
--- a/indexing-service/pom.xml
+++ b/indexing-service/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
     </parent>
 
     <dependencies>
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 4fee910..e4d28a3 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
     </parent>
 
     <dependencies>
diff --git a/pom.xml b/pom.xml
index bef0161..f037849 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
 
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Druid</name>
diff --git a/processing/pom.xml b/processing/pom.xml
index aaee5ac..008c77f 100644
--- a/processing/pom.xml
+++ b/processing/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
     </parent>
 
     <dependencies>
diff --git a/server/pom.xml b/server/pom.xml
index d2c9d27..e0f23cd 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
     </parent>
 
     <dependencies>
diff --git a/services/pom.xml b/services/pom.xml
index fe9dbbe..fd1d29a 100644
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.druid</groupId>
         <artifactId>druid</artifactId>
-        <version>0.20.0-SNAPSHOT</version>
+        <version>0.20.1-SNAPSHOT</version>
     </parent>
 
     <dependencies>
diff --git a/sql/pom.xml b/sql/pom.xml
index b9578d4..98aeb26 100644
--- a/sql/pom.xml
+++ b/sql/pom.xml
@@ -29,7 +29,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
   </parent>
 
   <dependencies>
diff --git a/web-console/package-lock.json b/web-console/package-lock.json
index 3693799..6de90c3 100644
--- a/web-console/package-lock.json
+++ b/web-console/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "web-console",
-  "version": "0.20.0",
+  "version": "0.20.1",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
diff --git a/web-console/package.json b/web-console/package.json
index 6d132e9..256c2bf 100644
--- a/web-console/package.json
+++ b/web-console/package.json
@@ -1,6 +1,6 @@
 {
   "name": "web-console",
-  "version": "0.20.0",
+  "version": "0.20.1",
   "description": "A web console for Apache Druid",
   "author": "Apache Druid Developers <de...@druid.apache.org>",
   "license": "Apache-2.0",
diff --git a/web-console/pom.xml b/web-console/pom.xml
index a33c3f0..c688ab2 100644
--- a/web-console/pom.xml
+++ b/web-console/pom.xml
@@ -28,7 +28,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
   </parent>
 
   <properties>
diff --git a/web-console/unified-console.html b/web-console/unified-console.html
index a7d883e..8b444d1 100644
--- a/web-console/unified-console.html
+++ b/web-console/unified-console.html
@@ -28,6 +28,6 @@
   <body class="bp3-dark mouse-mode">
     <div class="app-container"></div>
     <script src="console-config.js"></script>
-    <script src="public/web-console-0.20.0.js"></script>
+    <script src="public/web-console-0.20.1.js"></script>
   </body>
 </html>
diff --git a/website/pom.xml b/website/pom.xml
index b5857be..54ab90f 100644
--- a/website/pom.xml
+++ b/website/pom.xml
@@ -28,7 +28,7 @@
   <parent>
     <groupId>org.apache.druid</groupId>
     <artifactId>druid</artifactId>
-    <version>0.20.0-SNAPSHOT</version>
+    <version>0.20.1-SNAPSHOT</version>
   </parent>
 
   <properties>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org


[druid] 02/02: Cleaner handling for Jackson annotations

Posted by ji...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jihoonson pushed a commit to branch 0.20.1
in repository https://gitbox.apache.org/repos/asf/druid.git

commit ae4b1920c53d34008ab55cfa2e368a8affad77a0
Author: Jihoon Son <ji...@apache.org>
AuthorDate: Tue Jan 26 12:57:09 2021 -0800

    Cleaner handling for Jackson annotations
---
 .../apache/druid/guice/DruidSecondaryModule.java   |  26 +-
 .../druid/guice/GuiceAnnotationIntrospector.java   |  54 ++++
 .../data/input/impl/DimensionsSpecSerdeTest.java   |   5 +
 .../data/input/impl/StringDimensionSchemaTest.java |  63 ++++
 .../druid/guice/DruidSecondaryModuleTest.java      | 353 +++++++++++++++++++++
 .../apache/druid/indexing/common/TestUtils.java    |   3 +
 .../java/org/apache/druid/segment/TestHelper.java  |  22 ++
 7 files changed, 521 insertions(+), 5 deletions(-)

diff --git a/core/src/main/java/org/apache/druid/guice/DruidSecondaryModule.java b/core/src/main/java/org/apache/druid/guice/DruidSecondaryModule.java
index 319c0d1..5e4db78 100644
--- a/core/src/main/java/org/apache/druid/guice/DruidSecondaryModule.java
+++ b/core/src/main/java/org/apache/druid/guice/DruidSecondaryModule.java
@@ -19,8 +19,10 @@
 
 package org.apache.druid.guice;
 
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair;
+import com.google.common.annotations.VisibleForTesting;
 import com.google.inject.Binder;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
@@ -83,14 +85,28 @@ public class DruidSecondaryModule implements Module
     return smileMapper;
   }
 
-  private void setupJackson(Injector injector, final ObjectMapper mapper)
+  @VisibleForTesting
+  public static void setupJackson(Injector injector, final ObjectMapper mapper)
   {
-    final GuiceAnnotationIntrospector guiceIntrospector = new GuiceAnnotationIntrospector();
-
     mapper.setInjectableValues(new GuiceInjectableValues(injector));
+    setupAnnotationIntrospector(mapper, new GuiceAnnotationIntrospector());
+  }
+
+  @VisibleForTesting
+  public static void setupAnnotationIntrospector(
+      final ObjectMapper mapper,
+      final AnnotationIntrospector annotationIntrospector
+  )
+  {
     mapper.setAnnotationIntrospectors(
-        new AnnotationIntrospectorPair(guiceIntrospector, mapper.getSerializationConfig().getAnnotationIntrospector()),
-        new AnnotationIntrospectorPair(guiceIntrospector, mapper.getDeserializationConfig().getAnnotationIntrospector())
+        new AnnotationIntrospectorPair(
+            annotationIntrospector,
+            mapper.getSerializationConfig().getAnnotationIntrospector()
+        ),
+        new AnnotationIntrospectorPair(
+            annotationIntrospector,
+            mapper.getDeserializationConfig().getAnnotationIntrospector()
+        )
     );
   }
 }
diff --git a/core/src/main/java/org/apache/druid/guice/GuiceAnnotationIntrospector.java b/core/src/main/java/org/apache/druid/guice/GuiceAnnotationIntrospector.java
index 7862c97..29fac1a 100644
--- a/core/src/main/java/org/apache/druid/guice/GuiceAnnotationIntrospector.java
+++ b/core/src/main/java/org/apache/druid/guice/GuiceAnnotationIntrospector.java
@@ -20,8 +20,12 @@
 package org.apache.druid.guice;
 
 import com.fasterxml.jackson.annotation.JacksonInject;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.introspect.Annotated;
 import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
 import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
+import com.fasterxml.jackson.databind.introspect.AnnotatedParameter;
 import com.fasterxml.jackson.databind.introspect.NopAnnotationIntrospector;
 import com.google.inject.BindingAnnotation;
 import com.google.inject.Key;
@@ -56,4 +60,54 @@ public class GuiceAnnotationIntrospector extends NopAnnotationIntrospector
     }
     return Key.get(m.getGenericType(), guiceAnnotation);
   }
+
+  /**
+   * This method is used to find what property to ignore in deserialization. Jackson calls this method
+   * per every class and every constructor parameter.
+   *
+   * This implementation returns a {@link JsonIgnoreProperties.Value#empty()} that allows empty names if
+   * the parameters has the {@link JsonProperty} annotation. Otherwise, it returns
+   * {@code JsonIgnoreProperties.Value.forIgnoredProperties("")} that does NOT allow empty names.
+   * This behavior is to work around a bug in Jackson deserializer (see the below comment for details) and
+   * can be removed in the future after the bug is fixed.
+   * For example, suppose a constructor like below:
+   *
+   * <pre>{@code
+   * @JsonCreator
+   * public ClassWithJacksonInject(
+   *   @JsonProperty("val") String val,
+   *   @JacksonInject InjectedParameter injected
+   * )
+   * }</pre>
+   *
+   * During deserializing a JSON string into this class, this method will be called at least twice,
+   * one for {@code val} and another for {@code injected}. It will return {@code Value.empty()} for {@code val},
+   * while {Value.forIgnoredProperties("")} for {@code injected} because the later does not have {@code JsonProperty}.
+   * As a result, {@code injected} will be ignored during deserialization since it has no name.
+   */
+  @Override
+  public JsonIgnoreProperties.Value findPropertyIgnorals(Annotated ac)
+  {
+    // We should not allow empty names in any case. However, there is a known bug in Jackson deserializer
+    // with ignorals (_arrayDelegateDeserializer is not copied when creating a contextual deserializer.
+    // See https://github.com/FasterXML/jackson-databind/issues/3022 for more details), which makes array
+    // deserialization failed even when the array is a valid field. To work around this bug, we return
+    // an empty ignoral when the given Annotated is a parameter with JsonProperty that needs to be deserialized.
+    // This is valid because every property with JsonProperty annoation should have a non-empty name.
+    // We can simply remove the below check after the Jackson bug is fixed.
+    //
+    // This check should be fine for so-called delegate creators that have only one argument without
+    // JsonProperty annotation, because this method is not even called for the argument of
+    // delegate creators. I'm not 100% sure why it's not called, but guess it's because the argument
+    // is some Java type that Jackson already knows how to deserialize. Since there is only one argument,
+    // Jackson perhaps is able to just deserialize it without introspection.
+    if (ac instanceof AnnotatedParameter) {
+      final AnnotatedParameter ap = (AnnotatedParameter) ac;
+      if (ap.hasAnnotation(JsonProperty.class)) {
+        return JsonIgnoreProperties.Value.empty();
+      }
+    }
+
+    return JsonIgnoreProperties.Value.forIgnoredProperties("");
+  }
 }
diff --git a/core/src/test/java/org/apache/druid/data/input/impl/DimensionsSpecSerdeTest.java b/core/src/test/java/org/apache/druid/data/input/impl/DimensionsSpecSerdeTest.java
index 45bb915..9b9b90a 100644
--- a/core/src/test/java/org/apache/druid/data/input/impl/DimensionsSpecSerdeTest.java
+++ b/core/src/test/java/org/apache/druid/data/input/impl/DimensionsSpecSerdeTest.java
@@ -19,9 +19,12 @@
 
 package org.apache.druid.data.input.impl;
 
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import junit.framework.Assert;
+import org.apache.druid.guice.DruidSecondaryModule;
+import org.apache.druid.guice.GuiceAnnotationIntrospector;
 import org.junit.Test;
 
 import java.util.Arrays;
@@ -34,6 +37,8 @@ public class DimensionsSpecSerdeTest
   private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
 
   static {
+    AnnotationIntrospector introspector = new GuiceAnnotationIntrospector();
+    DruidSecondaryModule.setupAnnotationIntrospector(OBJECT_MAPPER, introspector);
     OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
   }
 
diff --git a/core/src/test/java/org/apache/druid/data/input/impl/StringDimensionSchemaTest.java b/core/src/test/java/org/apache/druid/data/input/impl/StringDimensionSchemaTest.java
new file mode 100644
index 0000000..ad29097
--- /dev/null
+++ b/core/src/test/java/org/apache/druid/data/input/impl/StringDimensionSchemaTest.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.druid.data.input.impl;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.druid.data.input.impl.DimensionSchema.MultiValueHandling;
+import org.apache.druid.guice.DruidSecondaryModule;
+import org.apache.druid.guice.GuiceAnnotationIntrospector;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class StringDimensionSchemaTest
+{
+  private final ObjectMapper jsonMapper;
+
+  public StringDimensionSchemaTest()
+  {
+    jsonMapper = new ObjectMapper();
+    AnnotationIntrospector introspector = new GuiceAnnotationIntrospector();
+    DruidSecondaryModule.setupAnnotationIntrospector(jsonMapper, introspector);
+    jsonMapper.registerSubtypes(StringDimensionSchema.class);
+  }
+
+  @Test
+  public void testDeserializeFromSimpleString() throws JsonProcessingException
+  {
+    final String json = "\"dim\"";
+    final StringDimensionSchema schema = (StringDimensionSchema) jsonMapper.readValue(json, DimensionSchema.class);
+    Assert.assertEquals(new StringDimensionSchema("dim"), schema);
+  }
+
+  @Test
+  public void testDeserializeFromJson() throws JsonProcessingException
+  {
+    final String json = "{\n"
+                        + "  \"type\" : \"StringDimensionSchema\",\n"
+                        + "  \"name\" : \"dim\",\n"
+                        + "  \"multiValueHandling\" : \"SORTED_SET\",\n"
+                        + "  \"createBitmapIndex\" : false\n"
+                        + "}";
+    final StringDimensionSchema schema = (StringDimensionSchema) jsonMapper.readValue(json, DimensionSchema.class);
+    Assert.assertEquals(new StringDimensionSchema("dim", MultiValueHandling.SORTED_SET, false), schema);
+  }
+}
diff --git a/core/src/test/java/org/apache/druid/guice/DruidSecondaryModuleTest.java b/core/src/test/java/org/apache/druid/guice/DruidSecondaryModuleTest.java
new file mode 100644
index 0000000..12ab2dd
--- /dev/null
+++ b/core/src/test/java/org/apache/druid/guice/DruidSecondaryModuleTest.java
@@ -0,0 +1,353 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.druid.guice;
+
+import com.fasterxml.jackson.annotation.JacksonInject;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.ImmutableList;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.experimental.runners.Enclosed;
+import org.junit.runner.RunWith;
+
+import javax.annotation.Nullable;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import java.util.List;
+import java.util.Properties;
+
+@RunWith(Enclosed.class)
+public class DruidSecondaryModuleTest
+{
+  private static final String PROPERTY_NAME = "druid.injected.val";
+  private static final String PROPERTY_VALUE = "this is the legit val";
+
+  public static class ConstructorWithJacksonInjectTest
+  {
+    @Test
+    public void testInjectWithAnEmptyPropertyNotOverrideInjection() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+      props.setProperty(PROPERTY_NAME, PROPERTY_VALUE);
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "{\"test\": \"this is an injection test\", \"\": \"nice try\" }";
+      final ClassWithJacksonInject object = mapper.readValue(json, ClassWithJacksonInject.class);
+      Assert.assertEquals("this is an injection test", object.test);
+      Assert.assertEquals(PROPERTY_VALUE, object.injected.val);
+    }
+
+    @Test
+    public void testInjectNormal() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+      props.setProperty(PROPERTY_NAME, PROPERTY_VALUE);
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "{\"test\": \"this is an injection test\" }";
+      final ClassWithJacksonInject object = mapper.readValue(json, ClassWithJacksonInject.class);
+      Assert.assertEquals("this is an injection test", object.test);
+      Assert.assertEquals(PROPERTY_VALUE, object.injected.val);
+    }
+
+    @Test
+    public void testInjectClassWithEmptyProperty() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+      props.setProperty(PROPERTY_NAME, PROPERTY_VALUE);
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "{\"test\": \"this is an injection test\", \"\": \"nice try\" }";
+      final ClassWithEmptyProperty object = mapper.readValue(json, ClassWithEmptyProperty.class);
+      Assert.assertEquals("this is an injection test", object.test);
+      Assert.assertEquals(PROPERTY_VALUE, object.injected.val);
+    }
+
+    private static class ClassWithJacksonInject
+    {
+      private final String test;
+
+      private InjectedParameter injected;
+
+      @JsonCreator
+      public ClassWithJacksonInject(
+          @JsonProperty("test") String test,
+          @JacksonInject InjectedParameter injected
+      )
+      {
+        this.test = test;
+        this.injected = injected;
+      }
+
+      @JsonProperty
+      public String getTest()
+      {
+        return test;
+      }
+    }
+
+    private static class ClassWithEmptyProperty
+    {
+      private final String test;
+
+      private InjectedParameter injected;
+
+      @JsonCreator
+      public ClassWithEmptyProperty(
+          @JsonProperty("test") String test,
+          @JacksonInject @JsonProperty("") InjectedParameter injected
+      )
+      {
+        this.test = test;
+        this.injected = injected;
+      }
+
+      @JsonProperty
+      public String getTest()
+      {
+        return test;
+      }
+    }
+  }
+
+  public static class ConstructorWithoutJacksonInjectTest
+  {
+    @Test
+    public void testInjectionWithEmptyPropertyName() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "[\"this is\", \"an injection test\"]";
+      final ClassWithConstructorOfEmptyName object = mapper.readValue(json, ClassWithConstructorOfEmptyName.class);
+      Assert.assertEquals(ImmutableList.of("this is", "an injection test"), object.getTest());
+    }
+
+    @Test
+    public void testInjectEmptyListWithEmptyPropertyName() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "[]";
+      final ClassWithConstructorOfEmptyName object = mapper.readValue(json, ClassWithConstructorOfEmptyName.class);
+      Assert.assertEquals(ImmutableList.of(), object.getTest());
+    }
+
+    @Test
+    public void testInjectClassWithFactoryMethodOfEmptyPropertyName() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "[\"this is\", \"an injection test\"]";
+      final ClassWithFactoryMethodOfEmptyName object = mapper.readValue(json, ClassWithFactoryMethodOfEmptyName.class);
+      Assert.assertEquals(ImmutableList.of("this is", "an injection test"), object.getTest());
+    }
+
+    @Test
+    public void testInjectEmptyListToClassWithFactoryMethodOfEmptyPropertyName() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "[]";
+      final ClassWithFactoryMethodOfEmptyName object = mapper.readValue(json, ClassWithFactoryMethodOfEmptyName.class);
+      Assert.assertEquals(ImmutableList.of(), object.getTest());
+    }
+
+    @Test
+    public void testInjectClassOfEmptyConstructor() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+      props.setProperty(PROPERTY_NAME, PROPERTY_VALUE);
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "{}";
+      final ClassOfEmptyConstructor object = mapper.readValue(json, ClassOfEmptyConstructor.class);
+      Assert.assertEquals("empty constructor", object.val);
+    }
+
+    private static class ClassWithConstructorOfEmptyName
+    {
+      private final List<String> test;
+
+      @JsonCreator
+      public ClassWithConstructorOfEmptyName(List<String> test)
+      {
+        this.test = test;
+      }
+
+      @JsonValue
+      public List<String> getTest()
+      {
+        return test;
+      }
+    }
+
+    private static class ClassWithFactoryMethodOfEmptyName
+    {
+      private final List<String> test;
+
+      @JsonCreator
+      public static ClassWithFactoryMethodOfEmptyName create(List<String> test)
+      {
+        return new ClassWithFactoryMethodOfEmptyName(test);
+      }
+
+      private ClassWithFactoryMethodOfEmptyName(List<String> test)
+      {
+        this.test = test;
+      }
+
+      @JsonValue
+      public List<String> getTest()
+      {
+        return test;
+      }
+    }
+
+    private static class ClassOfEmptyConstructor
+    {
+      private final String val;
+
+      @JsonCreator
+      public ClassOfEmptyConstructor()
+      {
+        this.val = "empty constructor";
+      }
+    }
+  }
+
+  public static class ClassOfMultipleJsonCreatorsTest
+  {
+    @Test
+    public void testDeserializeUsingMultiArgumentsConstructor() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+      props.setProperty(PROPERTY_NAME, PROPERTY_VALUE);
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "{\"val\": \"this is an injection test\", \"valLen\": 5, \"\": \"nice try\" }";
+      final ClassOfMultipleJsonCreators object = mapper.readValue(json, ClassOfMultipleJsonCreators.class);
+      Assert.assertEquals("this is an injection test", object.val);
+      Assert.assertEquals(5, object.valLen);
+      Assert.assertNotNull(object.injected);
+      Assert.assertEquals(PROPERTY_VALUE, object.injected.val);
+    }
+
+    @Test
+    public void testDeserializeUsingDelegateConstructor() throws JsonProcessingException
+    {
+      final Properties props = new Properties();
+      props.setProperty(PROPERTY_NAME, PROPERTY_VALUE);
+
+      final Injector injector = makeInjectorWithProperties(props);
+      final ObjectMapper mapper = makeObjectMapper(injector);
+      final String json = "\"this is an injection test\"";
+      final ClassOfMultipleJsonCreators object = mapper.readValue(json, ClassOfMultipleJsonCreators.class);
+      Assert.assertEquals("this is an injection test", object.val);
+      Assert.assertEquals(object.val.length(), object.valLen);
+      Assert.assertNull(object.injected);
+    }
+
+    private static class ClassOfMultipleJsonCreators
+    {
+      private final String val;
+      private final int valLen;
+      @Nullable
+      private final InjectedParameter injected;
+
+      @JsonCreator
+      public ClassOfMultipleJsonCreators(
+          @JsonProperty("val") String val,
+          @JsonProperty("valLen") int valLen,
+          @JacksonInject @Nullable InjectedParameter injected
+      )
+      {
+        this.val = val;
+        this.valLen = valLen;
+        this.injected = injected;
+      }
+
+      @JsonCreator
+      public static ClassOfMultipleJsonCreators create(String val)
+      {
+        return new ClassOfMultipleJsonCreators(val, val.length(), null);
+      }
+
+      @JsonProperty
+      public String getVal()
+      {
+        return val;
+      }
+
+      @JsonProperty
+      public int getValLen()
+      {
+        return valLen;
+      }
+    }
+  }
+
+  private static class InjectedParameter
+  {
+    @JsonProperty
+    private String val;
+  }
+
+  private static Injector makeInjectorWithProperties(final Properties props)
+  {
+    return Guice.createInjector(
+        ImmutableList.of(
+            new DruidGuiceExtensions(),
+            (Module) binder -> {
+              binder.bind(Validator.class).toInstance(Validation.buildDefaultValidatorFactory().getValidator());
+              binder.bind(JsonConfigurator.class).in(LazySingleton.class);
+              binder.bind(Properties.class).toInstance(props);
+              JsonConfigProvider.bind(binder, "druid.injected", InjectedParameter.class);
+            }
+        )
+    );
+  }
+
+  private static ObjectMapper makeObjectMapper(Injector injector)
+  {
+    final ObjectMapper mapper = new ObjectMapper();
+    DruidSecondaryModule.setupJackson(injector, mapper);
+    return mapper;
+  }
+}
diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/common/TestUtils.java b/indexing-service/src/test/java/org/apache/druid/indexing/common/TestUtils.java
index c36a072..fe8cadf 100644
--- a/indexing-service/src/test/java/org/apache/druid/indexing/common/TestUtils.java
+++ b/indexing-service/src/test/java/org/apache/druid/indexing/common/TestUtils.java
@@ -30,6 +30,7 @@ import org.apache.druid.client.indexing.IndexingServiceClient;
 import org.apache.druid.client.indexing.NoopIndexingServiceClient;
 import org.apache.druid.data.input.impl.NoopInputFormat;
 import org.apache.druid.data.input.impl.NoopInputSource;
+import org.apache.druid.guice.DruidSecondaryModule;
 import org.apache.druid.guice.FirehoseModule;
 import org.apache.druid.indexing.common.stats.DropwizardRowIngestionMetersFactory;
 import org.apache.druid.indexing.common.task.IndexTaskClientFactory;
@@ -43,6 +44,7 @@ import org.apache.druid.math.expr.ExprMacroTable;
 import org.apache.druid.query.expression.LookupEnabledTestExprMacroTable;
 import org.apache.druid.segment.IndexIO;
 import org.apache.druid.segment.IndexMergerV9;
+import org.apache.druid.segment.TestHelper;
 import org.apache.druid.segment.incremental.RowIngestionMetersFactory;
 import org.apache.druid.segment.loading.LocalDataSegmentPuller;
 import org.apache.druid.segment.loading.LocalLoadSpec;
@@ -115,6 +117,7 @@ public class TestUtils
           }
         }
     );
+    DruidSecondaryModule.setupAnnotationIntrospector(jsonMapper, TestHelper.makeAnnotationIntrospector());
 
     List<? extends Module> firehoseModules = new FirehoseModule().getJacksonModules();
     firehoseModules.forEach(jsonMapper::registerModule);
diff --git a/processing/src/test/java/org/apache/druid/segment/TestHelper.java b/processing/src/test/java/org/apache/druid/segment/TestHelper.java
index a6eb8b0..835d8b0 100644
--- a/processing/src/test/java/org/apache/druid/segment/TestHelper.java
+++ b/processing/src/test/java/org/apache/druid/segment/TestHelper.java
@@ -19,12 +19,16 @@
 
 package org.apache.druid.segment;
 
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
 import com.fasterxml.jackson.databind.InjectableValues;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 import org.apache.druid.data.input.MapBasedRow;
 import org.apache.druid.data.input.Row;
+import org.apache.druid.guice.DruidSecondaryModule;
+import org.apache.druid.guice.GuiceAnnotationIntrospector;
 import org.apache.druid.jackson.DefaultObjectMapper;
 import org.apache.druid.java.util.common.StringUtils;
 import org.apache.druid.java.util.common.guava.Sequence;
@@ -71,9 +75,26 @@ public class TestHelper
     return new IndexIO(JSON_MAPPER, columnConfig);
   }
 
+  public static AnnotationIntrospector makeAnnotationIntrospector()
+  {
+    // Prepare annotationIntrospector with similar logic, except skip Guice loading
+    // because most tests don't use Guice injection.
+    return new GuiceAnnotationIntrospector()
+    {
+      @Override
+      public Object findInjectableValueId(AnnotatedMember m)
+      {
+        return null;
+      }
+    };
+  }
+
   public static ObjectMapper makeJsonMapper()
   {
     final ObjectMapper mapper = new DefaultObjectMapper();
+    AnnotationIntrospector introspector = makeAnnotationIntrospector();
+    DruidSecondaryModule.setupAnnotationIntrospector(mapper, introspector);
+
     mapper.setInjectableValues(
         new InjectableValues.Std()
             .addValue(ExprMacroTable.class.getName(), TestExprMacroTable.INSTANCE)
@@ -86,6 +107,7 @@ public class TestHelper
   public static ObjectMapper makeSmileMapper()
   {
     final ObjectMapper mapper = new DefaultObjectMapper();
+    DruidSecondaryModule.setupAnnotationIntrospector(mapper, makeAnnotationIntrospector());
     mapper.setInjectableValues(
         new InjectableValues.Std()
             .addValue(ExprMacroTable.class.getName(), TestExprMacroTable.INSTANCE)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org