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

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


The following commit(s) were added to refs/heads/master by this push:
     new 674655347da [improve][io] reduce dependencies of pulsar-io-common 
module (#19000)
674655347da is described below

commit 674655347da95305cf671f0696f113dcca88b44d
Author: Nicolò Boschi <[email protected]>
AuthorDate: Tue Dec 20 17:08:55 2022 +0100

    [improve][io] reduce dependencies of pulsar-io-common module (#19000)
---
 pulsar-functions/instance/pom.xml                  |  6 -----
 pulsar-io/common/pom.xml                           |  6 +----
 .../org/apache/pulsar/io/common/IOConfigUtils.java | 31 ++++++++++++++--------
 pulsar-io/nsq/pom.xml                              |  5 ++++
 4 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/pulsar-functions/instance/pom.xml 
b/pulsar-functions/instance/pom.xml
index 2c561c3f905..78d4a072866 100644
--- a/pulsar-functions/instance/pom.xml
+++ b/pulsar-functions/instance/pom.xml
@@ -65,12 +65,6 @@
       <version>${project.version}</version>
     </dependency>
 
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>pulsar-io-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>pulsar-functions-api</artifactId>
diff --git a/pulsar-io/common/pom.xml b/pulsar-io/common/pom.xml
index b421e38781d..77dcba284b4 100644
--- a/pulsar-io/common/pom.xml
+++ b/pulsar-io/common/pom.xml
@@ -33,17 +33,13 @@
     <artifactId>pulsar-io-common</artifactId>
     <name>Pulsar IO :: IO Common</name>
 
+    <!-- This module is supposed to be used by Pulsar IO connectors and to 
only include strictly needed dependencies-->
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>pulsar-io-core</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pulsar-common</artifactId>
-            <version>${project.version}</version>
-        </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
diff --git 
a/pulsar-io/common/src/main/java/org/apache/pulsar/io/common/IOConfigUtils.java 
b/pulsar-io/common/src/main/java/org/apache/pulsar/io/common/IOConfigUtils.java
index 97224ca8721..d15986a897c 100644
--- 
a/pulsar-io/common/src/main/java/org/apache/pulsar/io/common/IOConfigUtils.java
+++ 
b/pulsar-io/common/src/main/java/org/apache/pulsar/io/common/IOConfigUtils.java
@@ -18,25 +18,28 @@
  */
 package org.apache.pulsar.io.common;
 
-import static org.apache.commons.lang.StringUtils.isBlank;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang.StringUtils;
-import org.apache.pulsar.common.util.Reflections;
 import org.apache.pulsar.io.core.SinkContext;
 import org.apache.pulsar.io.core.SourceContext;
 import org.apache.pulsar.io.core.annotations.FieldDoc;
 
 @Slf4j
 public class IOConfigUtils {
+
+    private static final ObjectMapper MAPPER = new ObjectMapper();
+
     public static <T> T loadWithSecrets(Map<String, Object> map, Class<T> 
clazz, SourceContext sourceContext) {
         return loadWithSecrets(map, clazz, secretName -> 
sourceContext.getSecret(secretName));
     }
@@ -46,20 +49,17 @@ public class IOConfigUtils {
     }
 
     public static Map<String, Object> loadConfigFromJsonString(String config) 
throws JsonProcessingException {
-        if (!isBlank(config)) {
-            ObjectMapper mapper = new ObjectMapper();
-            return mapper.readValue(config, new TypeReference<Map<String, 
Object>>() {
-            });
-        } else {
+        if (config == null || config.isEmpty()) {
             return Collections.emptyMap();
         }
+        return MAPPER.readValue(config, new TypeReference<>() {});
     }
 
     private static <T> T loadWithSecrets(Map<String, Object> map, Class<T> 
clazz,
                                          Function<String, String> 
secretsGetter) {
         Map<String, Object> configs = new HashMap<>(map);
 
-        for (Field field : Reflections.getAllFields(clazz)) {
+        for (Field field : getAllFields(clazz)) {
             field.setAccessible(true);
             for (Annotation annotation : field.getAnnotations()) {
                 if (annotation.annotationType().equals(FieldDoc.class)) {
@@ -81,7 +81,7 @@ public class IOConfigUtils {
                             throw new IllegalArgumentException(field.getName() 
+ " cannot be null");
                         }
                         String value = fieldDoc.defaultValue();
-                        if (!StringUtils.isEmpty(value)) {
+                        if (value != null && !value.isEmpty()) {
                             return value;
                         }
                         return null;
@@ -89,6 +89,15 @@ public class IOConfigUtils {
                 }
             }
         }
-        return new ObjectMapper().convertValue(configs, clazz);
+        return MAPPER.convertValue(configs, clazz);
+    }
+
+    private static List<Field> getAllFields(Class<?> type) {
+        List<Field> fields = new LinkedList<>();
+        fields.addAll(Arrays.asList(type.getDeclaredFields()));
+        if (type.getSuperclass() != null) {
+            fields.addAll(getAllFields(type.getSuperclass()));
+        }
+        return fields;
     }
 }
diff --git a/pulsar-io/nsq/pom.xml b/pulsar-io/nsq/pom.xml
index a1cbbd38f1b..032b6ad6c5f 100644
--- a/pulsar-io/nsq/pom.xml
+++ b/pulsar-io/nsq/pom.xml
@@ -59,6 +59,11 @@
       <version>${project.version}</version>
     </dependency>
 
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+
   </dependencies>
 
   <build>

Reply via email to