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>