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 <verned...@apache.org>
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;
+    }
 }

Reply via email to