You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kyuubi.apache.org by ch...@apache.org on 2023/01/07 16:35:57 UTC

[kyuubi] branch master updated: [KYUUBI #4115] [Authz] remove usage of `ClassTagExtensions` and make dependency `jackson-module-scala` in `provided` scope

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

chengpan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kyuubi.git


The following commit(s) were added to refs/heads/master by this push:
     new beba36e85 [KYUUBI #4115] [Authz] remove usage of `ClassTagExtensions` and make dependency `jackson-module-scala` in `provided` scope
beba36e85 is described below

commit beba36e8532ef44cc51debf3769a803125cdb678
Author: liangbowen <li...@gf.com.cn>
AuthorDate: Sun Jan 8 00:35:47 2023 +0800

    [KYUUBI #4115] [Authz] remove usage of `ClassTagExtensions` and make dependency `jackson-module-scala` in `provided` scope
    
    ### _Why are the changes needed?_
    
    - to fix #4102
    - remove usage of ClassTagExtensions for better compatibility to `jackson-module-scala`
    - `spark-core` of Spark 3.x's core already has dependency on `com.fasterxml.jackson.module:jackson-module-scala_${scala.binary.version}`
    - change the scope of `com.fasterxml.jackson.module:jackson-module-scala_${scala.binary.version}` to `provided`
    
    ### _How was this patch tested?_
    - [ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible
    
    - [ ] Add screenshots for manual tests if appropriate
    
    - [x] [Run test](https://kyuubi.apache.org/docs/latest/develop_tools/testing.html#running-tests) locally before make a pull request
    
    Closes #4115 from bowenliang123/authz-jackson-provided.
    
    Closes #4115
    
    5d20eced [liangbowen] style
    d4eb245a [liangbowen] Revert "ensure the earliest version of fasterxml.jackson provided in Spark 3.x"
    112bb846 [liangbowen] ensure the earliest version of fasterxml.jackson provided in Spark 3.x
    b4810142 [liangbowen] remove usage of ClassTagExtensions for better compatibility to `jackson-module-scala` lib
    0487674b [liangbowen] change the scope of `com.fasterxml.jackson.module:jackson-module-scala_${scala.binary.version}` to `provided`
    
    Authored-by: liangbowen <li...@gf.com.cn>
    Signed-off-by: Cheng Pan <ch...@apache.org>
---
 extensions/spark/kyuubi-spark-authz/pom.xml           |  1 +
 .../kyuubi/plugin/spark/authz/serde/package.scala     | 19 +++++++++++--------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/extensions/spark/kyuubi-spark-authz/pom.xml b/extensions/spark/kyuubi-spark-authz/pom.xml
index 2d5c6f793..532564183 100644
--- a/extensions/spark/kyuubi-spark-authz/pom.xml
+++ b/extensions/spark/kyuubi-spark-authz/pom.xml
@@ -254,6 +254,7 @@
         <dependency>
             <groupId>com.fasterxml.jackson.module</groupId>
             <artifactId>jackson-module-scala_${scala.binary.version}</artifactId>
+            <scope>provided</scope>
         </dependency>
 
         <dependency>
diff --git a/extensions/spark/kyuubi-spark-authz/src/main/scala/org/apache/kyuubi/plugin/spark/authz/serde/package.scala b/extensions/spark/kyuubi-spark-authz/src/main/scala/org/apache/kyuubi/plugin/spark/authz/serde/package.scala
index 50174479d..bfc719f22 100644
--- a/extensions/spark/kyuubi-spark-authz/src/main/scala/org/apache/kyuubi/plugin/spark/authz/serde/package.scala
+++ b/extensions/spark/kyuubi-spark-authz/src/main/scala/org/apache/kyuubi/plugin/spark/authz/serde/package.scala
@@ -17,26 +17,27 @@
 
 package org.apache.kyuubi.plugin.spark.authz
 
+import com.fasterxml.jackson.core.`type`.TypeReference
 import com.fasterxml.jackson.databind.json.JsonMapper
-import com.fasterxml.jackson.module.scala.{ClassTagExtensions, DefaultScalaModule}
+import com.fasterxml.jackson.module.scala.DefaultScalaModule
 import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan
 
 import org.apache.kyuubi.plugin.spark.authz.OperationType.{OperationType, QUERY}
 
 package object serde {
 
-  final val mapper = JsonMapper.builder()
-    .addModule(DefaultScalaModule)
-    .build() :: ClassTagExtensions
+  final val mapper = JsonMapper.builder().addModule(DefaultScalaModule).build()
 
   final lazy val DB_COMMAND_SPECS: Map[String, DatabaseCommandSpec] = {
     val is = getClass.getClassLoader.getResourceAsStream("database_command_spec.json")
-    mapper.readValue[Array[DatabaseCommandSpec]](is).map(e => (e.classname, e)).toMap
+    mapper.readValue(is, new TypeReference[Array[DatabaseCommandSpec]] {})
+      .map(e => (e.classname, e)).toMap
   }
 
   final lazy val TABLE_COMMAND_SPECS: Map[String, TableCommandSpec] = {
     val is = getClass.getClassLoader.getResourceAsStream("table_command_spec.json")
-    mapper.readValue[Array[TableCommandSpec]](is).map(e => (e.classname, e)).toMap
+    mapper.readValue(is, new TypeReference[Array[TableCommandSpec]] {})
+      .map(e => (e.classname, e)).toMap
   }
 
   def isKnownTableCommand(r: AnyRef): Boolean = {
@@ -49,12 +50,14 @@ package object serde {
 
   final lazy val FUNCTION_COMMAND_SPECS: Map[String, FunctionCommandSpec] = {
     val is = getClass.getClassLoader.getResourceAsStream("function_command_spec.json")
-    mapper.readValue[Array[FunctionCommandSpec]](is).map(e => (e.classname, e)).toMap
+    mapper.readValue(is, new TypeReference[Array[FunctionCommandSpec]] {})
+      .map(e => (e.classname, e)).toMap
   }
 
   final private lazy val SCAN_SPECS: Map[String, ScanSpec] = {
     val is = getClass.getClassLoader.getResourceAsStream("scan_command_spec.json")
-    mapper.readValue[Array[ScanSpec]](is).map(e => (e.classname, e)).toMap
+    mapper.readValue(is, new TypeReference[Array[ScanSpec]] {})
+      .map(e => (e.classname, e)).toMap
   }
 
   def isKnownScan(r: AnyRef): Boolean = {