diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HadoopUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HadoopUtils.java index 6a53c000fe..6dc3335f17 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HadoopUtils.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HadoopUtils.java @@ -205,6 +205,7 @@ public class HadoopUtils implements Closeable { * if rmHaIds is empty, single resourcemanager enabled * if rmHaIds not empty: resourcemanager HA enabled */ + yarnEnabled = true; String appUrl = StringUtils.isEmpty(rmHaIds) ? appAddress : getAppAddress(appAddress, rmHaIds); if (StringUtils.isBlank(appUrl)) { @@ -419,7 +420,9 @@ public class HadoopUtils implements Closeable { String result = Constants.FAILED; String applicationUrl = getApplicationUrl(applicationId); - logger.info("applicationUrl={}", applicationUrl); + if (logger.isDebugEnabled()) { + logger.debug("generate yarn application url, applicationUrl={}", applicationUrl); + } String responseContent = PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE, false) ? KerberosHttpClient.get(applicationUrl) : HttpUtils.get(applicationUrl); if (responseContent != null) { @@ -432,7 +435,9 @@ public class HadoopUtils implements Closeable { } else { //may be in job history String jobHistoryUrl = getJobHistoryUrl(applicationId); - logger.info("jobHistoryUrl={}", jobHistoryUrl); + if (logger.isDebugEnabled()) { + logger.debug("generate yarn job history application url, jobHistoryUrl={}", jobHistoryUrl); + } responseContent = PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE, false) ? KerberosHttpClient.get(jobHistoryUrl) : HttpUtils.get(jobHistoryUrl); if (null != responseContent) { diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/StringUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/StringUtils.java index f506f76627..ffa783316b 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/StringUtils.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/StringUtils.java @@ -17,48 +17,169 @@ package org.apache.dolphinscheduler.common.utils; +import java.util.Collection; +import java.util.Iterator; + +/** + * java.lang.String utils class + */ public class StringUtils { + /** + * The empty String {@code ""}. + */ public static final String EMPTY = ""; private StringUtils() { throw new UnsupportedOperationException("Construct StringUtils"); } + /** + *
Checks if a CharSequence is empty ("") or null.
+ * + * @param cs the CharSequence to check, may be null + * @return {@code true} if the CharSequence is empty or null + */ public static boolean isEmpty(final CharSequence cs) { return cs == null || cs.length() == 0; } + /** + *Checks if a CharSequence is not empty ("") and not null.
+ * + * @param cs the CharSequence to check, may be null + * @return {@code true} if the CharSequence is not empty and not null + */ public static boolean isNotEmpty(final CharSequence cs) { return !isEmpty(cs); } - public static boolean isBlank(String str) { + /** + *Checks if a CharSequence is empty (""), null or whitespace only.
+ * + * @param cs the CharSequence to check, may be null + * @return {@code true} if the CharSequence is null, empty or whitespace only + */ + public static boolean isBlank(final CharSequence cs) { int strLen; - if (str != null && (strLen = str.length()) != 0) { - for (int i = 0; i < strLen; ++i) { - if (!Character.isWhitespace(str.charAt(i))) { - return false; - } + if (cs == null || (strLen = cs.length()) == 0) { + return true; + } + for (int i = 0; i < strLen; i++) { + if (!Character.isWhitespace(cs.charAt(i))) { + return false; } } return true; + } + /** + *Checks if a CharSequence is not empty (""), not null and not whitespace only.
+ * + * @param cs the CharSequence to check, may be null + * @return {@code true} if the CharSequence is not empty and not null and not whitespace only + */ + public static boolean isNotBlank(final CharSequence cs) { + return !isBlank(cs); } - public static boolean isNotBlank(String s) { - return !isBlank(s); + /** + *Replace all strings matching the regular expression \t \n \r with _
+ * + * @param src the String , may be null + * @return the string that has been replaced + */ + public static String replaceNRTtoUnderline(String src) { + return isBlank(src) ? src : src.replaceAll("[\n|\r|\t]", "_"); } - public static String trim(String str) { + /** + *Removes control characters (char <= 32) from both + * ends of this String, handling {@code null} by returning + * {@code null}.
+ * + * @param str the String to be trimmed, may be null + * @return the trimmed string, {@code null} if null String input + */ + public static String trim(final String str) { return str == null ? null : str.trim(); } - public static String defaultIfBlank(String str, String defaultStr) { + /** + *Returns either the passed in CharSequence, or if the CharSequence is + * whitespace, empty ("") or {@code null}, the value of {@code defaultStr}.
+ * + * @paramCompares two String, returning {@code true} if they represent + * equal string, ignoring case.
+ * + * @param str1 the first String, may be null + * @param str2 the second String, may be null + * @return {@code true} if the String are equal, case insensitive, or + * both {@code null} + */ public static boolean equalsIgnoreCase(String str1, String str2) { return str1 == null ? str2 == null : str1.equalsIgnoreCase(str2); } + + /** + *Joins the elements of the provided Collection into a single String + * containing the provided Collection of elements.
+ * + * @param collection the collection, may be null + * @param separator the separator + * @return a single String + */ + public static String join(Collection> collection, String separator) { + return collection == null ? null : join(collection.iterator(), separator); + } + + /** + *Joins the elements of the provided Iterator into a single String + * containing the provided Iterator of elements.
+ * + * @param iterator the iterator, may be null + * @param separator the separator + * @return a single String + */ + public static String join(Iterator> iterator, String separator) { + if (iterator == null) { + return null; + } else if (!iterator.hasNext()) { + return ""; + } else { + Object first = iterator.next(); + if (!iterator.hasNext()) { + return first == null ? "" : first.toString(); + } else { + StringBuilder buf = new StringBuilder(256); + if (first != null) { + buf.append(first); + } + + while (iterator.hasNext()) { + if (separator != null) { + buf.append(separator); + } + + Object obj = iterator.next(); + if (obj != null) { + buf.append(obj); + } + } + return buf.toString(); + } + } + } + } diff --git a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/StringUtilsTest.java b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/StringUtilsTest.java index 3f5aeda3f9..2e59750fe2 100644 --- a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/StringUtilsTest.java +++ b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/StringUtilsTest.java @@ -17,6 +17,9 @@ package org.apache.dolphinscheduler.common.utils; +import java.util.ArrayList; +import java.util.List; + import org.junit.Assert; import org.junit.Test; @@ -80,4 +83,14 @@ public class StringUtilsTest { defaultStr = StringUtils.defaultIfBlank("test", "defaultStr"); Assert.assertEquals("test", defaultStr); } + + @Test + public void testJoin() { + List