You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2019/03/01 03:31:28 UTC

[kylin] branch 2.6.x updated: KYLIN-3836 fix Kylin StringUtil.join() may cause NPE if iterator is empty

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

shaofengshi pushed a commit to branch 2.6.x
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/2.6.x by this push:
     new e4459d5  KYLIN-3836 fix Kylin StringUtil.join() may cause NPE if iterator is empty
e4459d5 is described below

commit e4459d5b93906f63bcde0e0d3d97efe2d9bfa899
Author: chao long <wa...@qq.com>
AuthorDate: Thu Feb 28 12:18:40 2019 +0800

    KYLIN-3836 fix Kylin StringUtil.join() may cause NPE if iterator is empty
---
 .../org/apache/kylin/common/util/StringUtil.java   | 38 +++++++++++++---------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/core-common/src/main/java/org/apache/kylin/common/util/StringUtil.java b/core-common/src/main/java/org/apache/kylin/common/util/StringUtil.java
index 31f9a14..5dde9cf 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/StringUtil.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/StringUtil.java
@@ -75,26 +75,34 @@ public class StringUtil {
     }
 
     public static String join(Iterable<String> parts, String separator) {
-        StringBuilder buf = new StringBuilder();
-        Iterator<String> iterator = parts.iterator();
-        if (iterator == null || (!iterator.hasNext())) {
+        if (parts == null) {
             return null;
         }
-        final String first = iterator.next();
-        if (first != null) {
-            buf.append(first);
-        }
-        while (iterator.hasNext()) {
-            if (separator != null) {
-                buf.append(separator);
+
+        Iterator<String> iterator = parts.iterator();
+
+        if (iterator == null) {
+            return null;
+        } else if (!iterator.hasNext()) {
+            return "";
+        } else {
+            StringBuilder buf = new StringBuilder();
+            final String first = iterator.next();
+            if (first != null) {
+                buf.append(first);
             }
-            final String part = iterator.next();
-            if (part != null) {
-                buf.append(part);
+            while (iterator.hasNext()) {
+                if (separator != null) {
+                    buf.append(separator);
+                }
+                final String part = iterator.next();
+                if (part != null) {
+                    buf.append(part);
+                }
             }
-        }
 
-        return buf.toString();
+            return buf.toString();
+        }
     }
 
     public static void toUpperCaseArray(String[] source, String[] target) {