This is an automated email from the ASF dual-hosted git repository.
vernedeng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new 786e5702d2 [INLONG-11087][SDK] Fix potential null pointer exception of
transform SDK (#11088)
786e5702d2 is described below
commit 786e5702d2d0c50837b49b99586caf166cea67b4
Author: vernedeng <[email protected]>
AuthorDate: Thu Sep 12 20:37:35 2024 +0800
[INLONG-11087][SDK] Fix potential null pointer exception of transform SDK
(#11088)
* [INLONG-11087][SDK] Fix potential null pointer exception of transform SDK
* [INLONG-11087][SDK] Fix potential null pointer exception of transform SDK
---
.../sdk/transform/process/TransformProcessor.java | 2 +-
.../process/function/TranslateFunction.java | 31 +++++++++++++++-------
2 files changed, 23 insertions(+), 10 deletions(-)
diff --git
a/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/TransformProcessor.java
b/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/TransformProcessor.java
index 62e8ebf96a..05dc2437f1 100644
---
a/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/TransformProcessor.java
+++
b/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/TransformProcessor.java
@@ -167,7 +167,7 @@ public class TransformProcessor<I, O> {
for (ValueParserNode node : this.selectItems) {
String fieldName = node.getFieldName();
ValueParser parser = node.getParser();
- if (parser == null && StringUtils.equals(fieldName,
SinkEncoder.ALL_SOURCE_FIELD_SIGN)) {
+ if (parser == null || StringUtils.equals(fieldName,
SinkEncoder.ALL_SOURCE_FIELD_SIGN)) {
if (input instanceof String) {
sinkData.addField(fieldName, (String) input);
} else {
diff --git
a/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/TranslateFunction.java
b/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/TranslateFunction.java
index 87920b8619..a51cbad7e4 100644
---
a/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/TranslateFunction.java
+++
b/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/TranslateFunction.java
@@ -22,8 +22,10 @@ import org.apache.inlong.sdk.transform.process.Context;
import org.apache.inlong.sdk.transform.process.operator.OperatorTools;
import org.apache.inlong.sdk.transform.process.parser.ValueParser;
+import com.google.common.collect.ImmutableMap;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.Function;
+import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.List;
@@ -78,16 +80,9 @@ public class TranslateFunction implements ValueParser {
return "";
}
StringBuilder builder = null;
- final int findSize = findChars == null ? 0 : findChars.length();
- final int replaceSize = replaceChars == null ? 0 :
replaceChars.length();
- final int commonSize = Math.min(findSize, replaceSize);
// Create a map to store character replacements
- Map<Character, Character> replacementMap = new HashMap<>();
- for (int i = 0; i < commonSize; i++) {
- char findChar = findChars.charAt(i);
- char replaceChar = replaceChars.charAt(i);
- replacementMap.put(findChar, replaceChar);
- }
+ Map<Character, Character> replacementMap =
parseReplacementMap(findChars, replaceChars);
+
for (int i = 0, size = originalStr.length(); i < size; i++) {
char ch = originalStr.charAt(i);
if (replacementMap.containsKey(ch)) {
@@ -107,4 +102,22 @@ public class TranslateFunction implements ValueParser {
}
return builder == null ? originalStr : builder.toString();
}
+
+ private Map<Character, Character> parseReplacementMap(String findChars,
String replaceChars) {
+ if (StringUtils.isAnyBlank(findChars, replaceChars)) {
+ return ImmutableMap.of();
+ }
+
+ final int findSize = findChars == null ? 0 : findChars.length();
+ final int replaceSize = replaceChars == null ? 0 :
replaceChars.length();
+ final int commonSize = Math.min(findSize, replaceSize);
+ // Create a map to store character replacements
+ Map<Character, Character> replacementMap = new HashMap<>();
+ for (int i = 0; i < commonSize; i++) {
+ char findChar = findChars.charAt(i);
+ char replaceChar = replaceChars.charAt(i);
+ replacementMap.put(findChar, replaceChar);
+ }
+ return replacementMap;
+ }
}