You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by lg...@apache.org on 2020/09/02 07:59:55 UTC
[incubator-dolphinscheduler] branch dev updated:
[Improvement][common] Add UnsupportedOperationException for utils construct
(#3381)
This is an automated email from the ASF dual-hosted git repository.
lgcareer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new ac4ed94 [Improvement][common] Add UnsupportedOperationException for utils construct (#3381)
ac4ed94 is described below
commit ac4ed94061e91563268c3bc588c554182d22d277
Author: Yichao Yang <10...@qq.com>
AuthorDate: Wed Sep 2 15:59:47 2020 +0800
[Improvement][common] Add UnsupportedOperationException for utils construct (#3381)
* [Improvement][common] Add UnsupportedOperationException for utils construct
* Fix checkstyle
---
.../apache/dolphinscheduler/common/Constants.java | 3 +-
.../common/utils/CollectionUtils.java | 32 +-
.../dolphinscheduler/common/utils/CommonUtils.java | 205 +++---
.../common/utils/ConnectionUtils.java | 43 +-
.../dolphinscheduler/common/utils/DateUtils.java | 4 +
.../common/utils/DependentUtils.java | 41 +-
.../common/utils/EncryptionUtils.java | 7 +-
.../dolphinscheduler/common/utils/EnumUtils.java | 7 +-
.../dolphinscheduler/common/utils/FileUtils.java | 96 +--
.../dolphinscheduler/common/utils/HttpUtils.java | 224 +++---
.../dolphinscheduler/common/utils/IOUtils.java | 10 +-
.../dolphinscheduler/common/utils/IpUtils.java | 72 +-
.../dolphinscheduler/common/utils/JSONUtils.java | 62 +-
.../dolphinscheduler/common/utils/LoggerUtils.java | 32 +-
.../dolphinscheduler/common/utils/NetUtils.java | 25 +-
.../dolphinscheduler/common/utils/OSUtils.java | 818 +++++++++++----------
.../common/utils/ParameterUtils.java | 406 +++++-----
.../common/utils/Preconditions.java | 19 +-
.../common/utils/PropertyUtils.java | 48 +-
.../common/utils/RetryerUtils.java | 14 +-
.../dolphinscheduler/common/utils/SchemaUtils.java | 222 +++---
.../common/utils/SensitiveLogUtils.java | 10 +-
.../dolphinscheduler/common/utils/StreamUtils.java | 5 +-
.../dolphinscheduler/common/utils/StringUtils.java | 12 +-
.../common/utils/TaskParametersUtils.java | 100 +--
25 files changed, 1313 insertions(+), 1204 deletions(-)
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
index cee83e7..3b12748 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common;
import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
@@ -27,7 +28,7 @@ import java.util.regex.Pattern;
public final class Constants {
private Constants() {
- throw new IllegalStateException("Constants class");
+ throw new UnsupportedOperationException("Construct Constants");
}
/**
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CollectionUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CollectionUtils.java
index d900f0f..bc7c93a 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CollectionUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CollectionUtils.java
@@ -14,13 +14,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
import org.apache.commons.beanutils.BeanMap;
-import org.apache.commons.lang.StringUtils;
-
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* Provides utility methods and decorators for {@link Collection} instances.
@@ -37,8 +43,9 @@ import java.util.*;
public class CollectionUtils {
private CollectionUtils() {
- throw new IllegalStateException("CollectionUtils class");
+ throw new UnsupportedOperationException("Construct CollectionUtils");
}
+
/**
* Returns a new {@link Collection} containing <i>a</i> minus a subset of
* <i>b</i>. Only the elements of <i>b</i> that satisfy the predicate
@@ -71,7 +78,7 @@ public class CollectionUtils {
/**
* String to map
*
- * @param str string
+ * @param str string
* @param separator separator
* @return string to map
*/
@@ -82,7 +89,7 @@ public class CollectionUtils {
/**
* String to map
*
- * @param str string
+ * @param str string
* @param separator separator
* @param keyPrefix prefix
* @return string to map
@@ -112,7 +119,6 @@ public class CollectionUtils {
return map;
}
-
/**
* Helper class to easily access cardinality properties of two collections.
*
@@ -137,8 +143,8 @@ public class CollectionUtils {
* @param b the second collection
*/
public CardinalityHelper(final Iterable<? extends O> a, final Iterable<? extends O> b) {
- cardinalityA = CollectionUtils.<O>getCardinalityMap(a);
- cardinalityB = CollectionUtils.<O>getCardinalityMap(b);
+ cardinalityA = CollectionUtils.getCardinalityMap(a);
+ cardinalityB = CollectionUtils.getCardinalityMap(b);
}
/**
@@ -227,7 +233,7 @@ public class CollectionUtils {
* Only those elements present in the collection will appear as
* keys in the map.
*
- * @param <O> the type of object in the returned {@link Map}. This is a super type of O
+ * @param <O> the type of object in the returned {@link Map}. This is a super type of O
* @param coll the collection to get the cardinality map for, must not be null
* @return the populated cardinality map
*/
@@ -239,9 +245,9 @@ public class CollectionUtils {
return count;
}
-
/**
* Removes certain attributes of each object in the list
+ *
* @param originList origin list
* @param exclusionSet exclusion set
* @param <T> T
@@ -258,8 +264,8 @@ public class CollectionUtils {
Map<String, Object> instanceMap;
for (T instance : originList) {
Map<String, Object> dataMap = new BeanMap(instance);
- instanceMap = new LinkedHashMap<>(16,0.75f,true);
- for (Map.Entry<String, Object> entry: dataMap.entrySet()) {
+ instanceMap = new LinkedHashMap<>(16, 0.75f, true);
+ for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
if (exclusionSet.contains(entry.getKey())) {
continue;
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CommonUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CommonUtils.java
index 6722c23..45c5aa2 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CommonUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CommonUtils.java
@@ -14,124 +14,129 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
-import org.apache.commons.codec.binary.Base64;
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.ResUploadType;
+
+import org.apache.commons.codec.binary.Base64;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.net.URL;
import java.nio.charset.StandardCharsets;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* common utils
*/
public class CommonUtils {
- private static final Logger logger = LoggerFactory.getLogger(CommonUtils.class);
-
- private static final Base64 BASE64 = new Base64();
-
- private CommonUtils() {
- throw new IllegalStateException("CommonUtils class");
- }
-
- /**
- * @return get the path of system environment variables
- */
- public static String getSystemEnvPath() {
- String envPath = PropertyUtils.getString(Constants.DOLPHINSCHEDULER_ENV_PATH);
- if (StringUtils.isEmpty(envPath)) {
- URL envDefaultPath = CommonUtils.class.getClassLoader().getResource(Constants.ENV_PATH);
-
- if (envDefaultPath != null){
- envPath = envDefaultPath.getPath();
- logger.debug("env path :{}", envPath);
- }else{
- envPath = "/etc/profile";
- }
+ private static final Logger logger = LoggerFactory.getLogger(CommonUtils.class);
+
+ private static final Base64 BASE64 = new Base64();
+
+ private CommonUtils() {
+ throw new UnsupportedOperationException("Construct CommonUtils");
}
- return envPath;
- }
-
- /**
- *
- * @return is develop mode
- */
- public static boolean isDevelopMode() {
- return PropertyUtils.getBoolean(Constants.DEVELOPMENT_STATE, true);
- }
-
-
-
- /**
- * if upload resource is HDFS and kerberos startup is true , else false
- * @return true if upload resource is HDFS and kerberos startup
- */
- public static boolean getKerberosStartupState(){
- String resUploadStartupType = PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE);
- ResUploadType resUploadType = ResUploadType.valueOf(resUploadStartupType);
- Boolean kerberosStartupState = PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE,false);
- return resUploadType == ResUploadType.HDFS && kerberosStartupState;
- }
-
- /**
- * load kerberos configuration
- * @throws Exception errors
- */
- public static void loadKerberosConf()throws Exception{
- if (CommonUtils.getKerberosStartupState()) {
- System.setProperty(Constants.JAVA_SECURITY_KRB5_CONF, PropertyUtils.getString(Constants.JAVA_SECURITY_KRB5_CONF_PATH));
- Configuration configuration = new Configuration();
- configuration.set(Constants.HADOOP_SECURITY_AUTHENTICATION, Constants.KERBEROS);
- UserGroupInformation.setConfiguration(configuration);
- UserGroupInformation.loginUserFromKeytab(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_USERNAME),
- PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_PATH));
+ /**
+ * @return get the path of system environment variables
+ */
+ public static String getSystemEnvPath() {
+ String envPath = PropertyUtils.getString(Constants.DOLPHINSCHEDULER_ENV_PATH);
+ if (StringUtils.isEmpty(envPath)) {
+ URL envDefaultPath = CommonUtils.class.getClassLoader().getResource(Constants.ENV_PATH);
+
+ if (envDefaultPath != null) {
+ envPath = envDefaultPath.getPath();
+ logger.debug("env path :{}", envPath);
+ } else {
+ envPath = "/etc/profile";
+ }
+ }
+
+ return envPath;
}
- }
-
- /**
- * encode password
- * @param password
- * @return
- */
- public static String encodePassword(String password) {
- if(StringUtils.isEmpty(password)){return StringUtils.EMPTY; }
- //if encryption is not turned on, return directly
- boolean encryptionEnable = PropertyUtils.getBoolean(Constants.DATASOURCE_ENCRYPTION_ENABLE,false);
- if ( !encryptionEnable){ return password; }
-
- // Using Base64 + salt to process password
- String salt = PropertyUtils.getString(Constants.DATASOURCE_ENCRYPTION_SALT,Constants.DATASOURCE_ENCRYPTION_SALT_DEFAULT);
- String passwordWithSalt = salt + new String(BASE64.encode(password.getBytes(StandardCharsets.UTF_8))) ;
- return new String(BASE64.encode(passwordWithSalt.getBytes(StandardCharsets.UTF_8)));
- }
-
- /**
- * decode password
- * @param password
- * @return
- */
- public static String decodePassword(String password) {
- if(StringUtils.isEmpty(password)){return StringUtils.EMPTY ; }
-
- //if encryption is not turned on, return directly
- boolean encryptionEnable = PropertyUtils.getBoolean(Constants.DATASOURCE_ENCRYPTION_ENABLE,false);
- if ( !encryptionEnable){ return password; }
-
- // Using Base64 + salt to process password
- String salt = PropertyUtils.getString(Constants.DATASOURCE_ENCRYPTION_SALT,Constants.DATASOURCE_ENCRYPTION_SALT_DEFAULT);
- String passwordWithSalt = new String(BASE64.decode(password), StandardCharsets.UTF_8) ;
- if(!passwordWithSalt.startsWith(salt)){
- logger.warn("There is a password and salt mismatch: {} ",password);
- return password;
+
+ /**
+ * @return is develop mode
+ */
+ public static boolean isDevelopMode() {
+ return PropertyUtils.getBoolean(Constants.DEVELOPMENT_STATE, true);
}
- return new String(BASE64.decode(passwordWithSalt.substring(salt.length())), StandardCharsets.UTF_8) ;
- }
+ /**
+ * if upload resource is HDFS and kerberos startup is true , else false
+ *
+ * @return true if upload resource is HDFS and kerberos startup
+ */
+ public static boolean getKerberosStartupState() {
+ String resUploadStartupType = PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE);
+ ResUploadType resUploadType = ResUploadType.valueOf(resUploadStartupType);
+ Boolean kerberosStartupState = PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE, false);
+ return resUploadType == ResUploadType.HDFS && kerberosStartupState;
+ }
+
+ /**
+ * load kerberos configuration
+ *
+ * @throws Exception errors
+ */
+ public static void loadKerberosConf() throws Exception {
+ if (CommonUtils.getKerberosStartupState()) {
+ System.setProperty(Constants.JAVA_SECURITY_KRB5_CONF, PropertyUtils.getString(Constants.JAVA_SECURITY_KRB5_CONF_PATH));
+ Configuration configuration = new Configuration();
+ configuration.set(Constants.HADOOP_SECURITY_AUTHENTICATION, Constants.KERBEROS);
+ UserGroupInformation.setConfiguration(configuration);
+ UserGroupInformation.loginUserFromKeytab(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_USERNAME),
+ PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_PATH));
+ }
+ }
+
+ /**
+ * encode password
+ */
+ public static String encodePassword(String password) {
+ if (StringUtils.isEmpty(password)) {
+ return StringUtils.EMPTY;
+ }
+ //if encryption is not turned on, return directly
+ boolean encryptionEnable = PropertyUtils.getBoolean(Constants.DATASOURCE_ENCRYPTION_ENABLE, false);
+ if (!encryptionEnable) {
+ return password;
+ }
+
+ // Using Base64 + salt to process password
+ String salt = PropertyUtils.getString(Constants.DATASOURCE_ENCRYPTION_SALT, Constants.DATASOURCE_ENCRYPTION_SALT_DEFAULT);
+ String passwordWithSalt = salt + new String(BASE64.encode(password.getBytes(StandardCharsets.UTF_8)));
+ return new String(BASE64.encode(passwordWithSalt.getBytes(StandardCharsets.UTF_8)));
+ }
+
+ /**
+ * decode password
+ */
+ public static String decodePassword(String password) {
+ if (StringUtils.isEmpty(password)) {
+ return StringUtils.EMPTY;
+ }
+
+ //if encryption is not turned on, return directly
+ boolean encryptionEnable = PropertyUtils.getBoolean(Constants.DATASOURCE_ENCRYPTION_ENABLE, false);
+ if (!encryptionEnable) {
+ return password;
+ }
+
+ // Using Base64 + salt to process password
+ String salt = PropertyUtils.getString(Constants.DATASOURCE_ENCRYPTION_SALT, Constants.DATASOURCE_ENCRYPTION_SALT_DEFAULT);
+ String passwordWithSalt = new String(BASE64.decode(password), StandardCharsets.UTF_8);
+ if (!passwordWithSalt.startsWith(salt)) {
+ logger.warn("There is a password and salt mismatch: {} ", password);
+ return password;
+ }
+ return new String(BASE64.decode(passwordWithSalt.substring(salt.length())), StandardCharsets.UTF_8);
+ }
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ConnectionUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ConnectionUtils.java
index f8ea0e7..f0cd8f2 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ConnectionUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ConnectionUtils.java
@@ -14,37 +14,40 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
import java.util.Arrays;
import java.util.Objects;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ConnectionUtils {
- public static final Logger logger = LoggerFactory.getLogger(ConnectionUtils.class);
+ public static final Logger logger = LoggerFactory.getLogger(ConnectionUtils.class);
- private ConnectionUtils() {
- throw new IllegalStateException("ConnectionUtils class");
- }
+ private ConnectionUtils() {
+ throw new UnsupportedOperationException("Construct ConnectionUtils");
+ }
- /**
- * release resource
- * @param resources resources
- */
- public static void releaseResource(AutoCloseable... resources) {
+ /**
+ * release resource
+ *
+ * @param resources resources
+ */
+ public static void releaseResource(AutoCloseable... resources) {
- if (resources == null || resources.length == 0) {
- return;
+ if (resources == null || resources.length == 0) {
+ return;
+ }
+ Arrays.stream(resources).filter(Objects::nonNull)
+ .forEach(resource -> {
+ try {
+ resource.close();
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ });
}
- Arrays.stream(resources).filter(Objects::nonNull)
- .forEach(resource -> {
- try {
- resource.close();
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- });
- }
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DateUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DateUtils.java
index 6cd1d58..283b4e7 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DateUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DateUtils.java
@@ -36,6 +36,10 @@ public class DateUtils {
private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);
+ private DateUtils() {
+ throw new UnsupportedOperationException("Construct DateUtils");
+ }
+
/**
* date to local datetime
*
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DependentUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DependentUtils.java
index 591c16d..b8b6c1d 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DependentUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DependentUtils.java
@@ -20,8 +20,6 @@ import org.apache.dolphinscheduler.common.enums.DependResult;
import org.apache.dolphinscheduler.common.enums.DependentRelation;
import org.apache.dolphinscheduler.common.model.DateInterval;
import org.apache.dolphinscheduler.common.utils.dependent.DependentDateUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Date;
@@ -29,32 +27,35 @@ import java.util.List;
public class DependentUtils {
- private static final Logger logger = LoggerFactory.getLogger(DependentUtils.class);
+ private DependentUtils() {
+ throw new UnsupportedOperationException("Construct DependentUtils");
+ }
public static DependResult getDependResultForRelation(DependentRelation relation,
- List<DependResult> dependResultList){
+ List<DependResult> dependResultList) {
DependResult dependResult = DependResult.SUCCESS;
- switch (relation){
+ switch (relation) {
case AND:
- if(dependResultList.contains(DependResult.FAILED)){
+ if (dependResultList.contains(DependResult.FAILED)) {
dependResult = DependResult.FAILED;
- } if(dependResultList.contains(DependResult.WAITING)){
+ }
+ if (dependResultList.contains(DependResult.WAITING)) {
dependResult = DependResult.WAITING;
}
break;
case OR:
- if(dependResultList.contains(DependResult.SUCCESS)){
+ if (dependResultList.contains(DependResult.SUCCESS)) {
dependResult = DependResult.SUCCESS;
- }else if(dependResultList.contains(DependResult.WAITING)){
+ } else if (dependResultList.contains(DependResult.WAITING)) {
dependResult = DependResult.WAITING;
- }else{
+ } else {
dependResult = DependResult.FAILED;
}
break;
default:
- break;
+ break;
}
return dependResult;
}
@@ -62,36 +63,37 @@ public class DependentUtils {
/**
* get date interval list by business date and date value.
+ *
* @param businessDate business date
* @param dateValue date value
* @return date interval list by business date and date value.
*/
- public static List<DateInterval> getDateIntervalList(Date businessDate, String dateValue){
+ public static List<DateInterval> getDateIntervalList(Date businessDate, String dateValue) {
List<DateInterval> result = new ArrayList<>();
- switch (dateValue){
+ switch (dateValue) {
case "currentHour":
result = DependentDateUtils.getLastHoursInterval(businessDate, 0);
break;
case "last1Hour":
- result = DependentDateUtils.getLastHoursInterval(businessDate, 1);
+ result = DependentDateUtils.getLastHoursInterval(businessDate, 1);
break;
case "last2Hours":
- result = DependentDateUtils.getLastHoursInterval(businessDate, 2);
+ result = DependentDateUtils.getLastHoursInterval(businessDate, 2);
break;
case "last3Hours":
- result = DependentDateUtils.getLastHoursInterval(businessDate, 3);
+ result = DependentDateUtils.getLastHoursInterval(businessDate, 3);
break;
case "last24Hours":
result = DependentDateUtils.getSpecialLastDayInterval(businessDate);
break;
case "today":
- result = DependentDateUtils.getTodayInterval(businessDate);
+ result = DependentDateUtils.getTodayInterval(businessDate);
break;
case "last1Days":
- result = DependentDateUtils.getLastDayInterval(businessDate, 1);
+ result = DependentDateUtils.getLastDayInterval(businessDate, 1);
break;
case "last2Days":
- result = DependentDateUtils.getLastDayInterval(businessDate, 2);
+ result = DependentDateUtils.getLastDayInterval(businessDate, 2);
break;
case "last3Days":
result = DependentDateUtils.getLastDayInterval(businessDate, 3);
@@ -144,5 +146,4 @@ public class DependentUtils {
return result;
}
-
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/EncryptionUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/EncryptionUtils.java
index c153ec8..5d9d540 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/EncryptionUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/EncryptionUtils.java
@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
import org.apache.commons.codec.digest.DigestUtils;
@@ -23,14 +24,16 @@ import org.apache.commons.codec.digest.DigestUtils;
*/
public class EncryptionUtils {
+ private EncryptionUtils() {
+ throw new UnsupportedOperationException("Construct EncryptionUtils");
+ }
/**
- *
* @param rawStr raw string
* @return md5(rawStr)
*/
public static String getMd5(String rawStr) {
- return DigestUtils.md5Hex(null == rawStr ? StringUtils.EMPTY : rawStr);
+ return DigestUtils.md5Hex(null == rawStr ? StringUtils.EMPTY : rawStr);
}
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/EnumUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/EnumUtils.java
index 924e8ff..10963b4 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/EnumUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/EnumUtils.java
@@ -14,12 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dolphinscheduler.common.utils;
-
+package org.apache.dolphinscheduler.common.utils;
public class EnumUtils {
+ private EnumUtils() {
+ throw new UnsupportedOperationException("Construct EnumUtils");
+ }
+
public static <E extends Enum<E>> E getEnum(final Class<E> enumClass, final String enumName) {
if (enumName == null) {
return null;
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java
index de3d429..e3e3356 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java
@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
import static org.apache.dolphinscheduler.common.Constants.DATA_BASEDIR_PATH;
@@ -21,6 +22,9 @@ import static org.apache.dolphinscheduler.common.Constants.RESOURCE_VIEW_SUFFIXS
import static org.apache.dolphinscheduler.common.Constants.RESOURCE_VIEW_SUFFIXS_DEFAULT_VALUE;
import static org.apache.dolphinscheduler.common.Constants.YYYYMMDDHHMMSS;
+import org.apache.commons.io.Charsets;
+import org.apache.commons.io.IOUtils;
+
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
@@ -36,9 +40,6 @@ import java.nio.charset.Charset;
import java.nio.charset.UnsupportedCharsetException;
import java.util.Optional;
-import org.apache.commons.io.Charsets;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,12 +47,17 @@ import org.slf4j.LoggerFactory;
* file utils
*/
public class FileUtils {
+
public static final Logger logger = LoggerFactory.getLogger(FileUtils.class);
- public static final String DATA_BASEDIR = PropertyUtils.getString(DATA_BASEDIR_PATH,"/tmp/dolphinscheduler");
+ public static final String DATA_BASEDIR = PropertyUtils.getString(DATA_BASEDIR_PATH, "/tmp/dolphinscheduler");
public static final ThreadLocal<Logger> taskLoggerThreadLocal = new ThreadLocal<>();
+ private FileUtils() {
+ throw new UnsupportedOperationException("Construct FileUtils");
+ }
+
/**
* get file suffix
*
@@ -80,7 +86,7 @@ public class FileUtils {
String fileName = String.format("%s/download/%s/%s", DATA_BASEDIR, DateUtils.getCurrentTime(YYYYMMDDHHMMSS), filename);
File file = new File(fileName);
- if (!file.getParentFile().exists()){
+ if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
@@ -97,7 +103,7 @@ public class FileUtils {
public static String getUploadFilename(String tenantCode, String filename) {
String fileName = String.format("%s/%s/resources/%s", DATA_BASEDIR, tenantCode, filename);
File file = new File(fileName);
- if (!file.getParentFile().exists()){
+ if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
@@ -106,6 +112,7 @@ public class FileUtils {
/**
* directory of process execution
+ *
* @param projectId project id
* @param processDefineId process definition id
* @param processInstanceId process instance id
@@ -114,9 +121,9 @@ public class FileUtils {
*/
public static String getProcessExecDir(int projectId, int processDefineId, int processInstanceId, int taskInstanceId) {
String fileName = String.format("%s/exec/process/%s/%s/%s/%s", DATA_BASEDIR, Integer.toString(projectId),
- Integer.toString(processDefineId), Integer.toString(processInstanceId),Integer.toString(taskInstanceId));
+ Integer.toString(processDefineId), Integer.toString(processInstanceId), Integer.toString(taskInstanceId));
File file = new File(fileName);
- if (!file.getParentFile().exists()){
+ if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
@@ -125,6 +132,7 @@ public class FileUtils {
/**
* directory of process instances
+ *
* @param projectId project id
* @param processDefineId process definition id
* @param processInstanceId process instance id
@@ -150,6 +158,7 @@ public class FileUtils {
/**
* create directory and user
+ *
* @param execLocalPath execute local path
* @param userName user name
* @throws IOException errors
@@ -190,12 +199,11 @@ public class FileUtils {
OSUtils.taskLoggerThreadLocal.remove();
}
-
/**
* write content to file ,if parent path not exists, it will do one's utmost to mkdir
*
- * @param content content
- * @param filePath target file path
+ * @param content content
+ * @param filePath target file path
* @return true if write success
*/
public static boolean writeContent2File(String content, String filePath) {
@@ -231,13 +239,13 @@ public class FileUtils {
/**
* Writes a String to a file creating the file if it does not exist.
- *
+ * <p>
* NOTE: As from v1.3, the parent directories of the file will be created
* if they do not exist.
*
- * @param file the file to write
- * @param data the content to write to the file
- * @param encoding the encoding to use, {@code null} means platform default
+ * @param file the file to write
+ * @param data the content to write to the file
+ * @param encoding the encoding to use, {@code null} means platform default
* @throws IOException in case of an I/O error
* @throws java.io.UnsupportedEncodingException if the encoding is not supported by the VM
* @since 2.4
@@ -248,13 +256,13 @@ public class FileUtils {
/**
* Writes a String to a file creating the file if it does not exist.
- *
+ * <p>
* NOTE: As from v1.3, the parent directories of the file will be created
* if they do not exist.
*
- * @param file the file to write
- * @param data the content to write to the file
- * @param encoding the encoding to use, {@code null} means platform default
+ * @param file the file to write
+ * @param data the content to write to the file
+ * @param encoding the encoding to use, {@code null} means platform default
* @throws IOException in case of an I/O error
* @throws java.io.UnsupportedEncodingException if the encoding is not supported by the VM
*/
@@ -265,9 +273,9 @@ public class FileUtils {
/**
* Writes a String to a file creating the file if it does not exist.
*
- * @param file the file to write
- * @param data the content to write to the file
- * @param encoding the encoding to use, {@code null} means platform default
+ * @param file the file to write
+ * @param data the content to write to the file
+ * @param encoding the encoding to use, {@code null} means platform default
* @param append if {@code true}, then the String will be added to the
* end of the file rather than overwriting
* @throws IOException in case of an I/O error
@@ -287,15 +295,14 @@ public class FileUtils {
/**
* Writes a String to a file creating the file if it does not exist.
*
- * @param file the file to write
- * @param data the content to write to the file
- * @param encoding the encoding to use, {@code null} means platform default
+ * @param file the file to write
+ * @param data the content to write to the file
+ * @param encoding the encoding to use, {@code null} means platform default
* @param append if {@code true}, then the String will be added to the
* end of the file rather than overwriting
* @throws IOException in case of an I/O error
- * @throws UnsupportedCharsetException
- * thrown instead of {@link UnsupportedEncodingException} in version 2.2 if the encoding is not
- * supported by the VM
+ * @throws UnsupportedCharsetException thrown instead of {@link UnsupportedEncodingException} in version 2.2 if the encoding is not
+ * supported by the VM
* @since 2.1
*/
public static void writeStringToFile(File file, String data, String encoding, boolean append) throws IOException {
@@ -305,8 +312,8 @@ public class FileUtils {
/**
* Writes a String to a file creating the file if it does not exist using the default encoding for the VM.
*
- * @param file the file to write
- * @param data the content to write to the file
+ * @param file the file to write
+ * @param data the content to write to the file
* @throws IOException in case of an I/O error
*/
public static void writeStringToFile(File file, String data) throws IOException {
@@ -316,8 +323,8 @@ public class FileUtils {
/**
* Writes a String to a file creating the file if it does not exist using the default encoding for the VM.
*
- * @param file the file to write
- * @param data the content to write to the file
+ * @param file the file to write
+ * @param data the content to write to the file
* @param append if {@code true}, then the String will be added to the
* end of the file rather than overwriting
* @throws IOException in case of an I/O error
@@ -340,7 +347,7 @@ public class FileUtils {
* An exception is thrown if the file exists but cannot be written to.
* An exception is thrown if the parent directory cannot be created.
*
- * @param file the file to open for output, must not be {@code null}
+ * @param file the file to open for output, must not be {@code null}
* @return a new {@link FileOutputStream} for the specified file
* @throws IOException if the file object is a directory
* @throws IOException if the file cannot be written to
@@ -364,7 +371,7 @@ public class FileUtils {
* An exception is thrown if the file exists but cannot be written to.
* An exception is thrown if the parent directory cannot be created.
*
- * @param file the file to open for output, must not be {@code null}
+ * @param file the file to open for output, must not be {@code null}
* @param append if {@code true}, then bytes will be added to the
* end of the file rather than overwriting
* @return a new {@link FileOutputStream} for the specified file
@@ -384,15 +391,15 @@ public class FileUtils {
} else {
File parent = file.getParentFile();
if (parent != null && !parent.mkdirs() && !parent.isDirectory()) {
- throw new IOException("Directory '" + parent + "' could not be created");
+ throw new IOException("Directory '" + parent + "' could not be created");
}
}
return new FileOutputStream(file, append);
}
-
/**
* deletes a directory recursively
+ *
* @param dir directory
* @throws IOException in case deletion is unsuccessful
*/
@@ -420,17 +427,18 @@ public class FileUtils {
/**
* Gets all the parent subdirectories of the parentDir directory
+ *
* @param parentDir parent dir
* @return all dirs
*/
- public static File[] getAllDir(String parentDir){
- if(parentDir == null || "".equals(parentDir)) {
+ public static File[] getAllDir(String parentDir) {
+ if (parentDir == null || "".equals(parentDir)) {
throw new RuntimeException("parentDir can not be empty");
}
File file = new File(parentDir);
- if(!file.exists() || !file.isDirectory()) {
- throw new RuntimeException("parentDir not exist, or is not a directory:"+parentDir);
+ if (!file.exists() || !file.isDirectory()) {
+ throw new RuntimeException("parentDir not exist, or is not a directory:" + parentDir);
}
return file.listFiles(File::isDirectory);
@@ -438,6 +446,7 @@ public class FileUtils {
/**
* Get Content
+ *
* @param inputStream input stream
* @return string of input stream
*/
@@ -447,15 +456,14 @@ public class FileUtils {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
- while ((length= inputStream.read(buffer)) != -1) {
- output.write(buffer,0,length);
+ while ((length = inputStream.read(buffer)) != -1) {
+ output.write(buffer, 0, length);
}
return output.toString();
} catch (Exception e) {
- logger.error(e.getMessage(),e);
+ logger.error(e.getMessage(), e);
throw new RuntimeException(e);
}
}
-
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java
index 7d1e0a5..36b437f 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/HttpUtils.java
@@ -14,9 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
import org.apache.dolphinscheduler.common.Constants;
+
import org.apache.http.HttpEntity;
import org.apache.http.client.config.AuthSchemes;
import org.apache.http.client.config.CookieSpecs;
@@ -30,148 +32,148 @@ import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* http utils
*/
public class HttpUtils {
+ public static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
- public static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
-
- private HttpUtils() {
-
- }
-
- public static CloseableHttpClient getInstance(){
- return HttpClientInstance.httpClient;
- }
-
- private static class HttpClientInstance{
- private static final CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).setDefaultRequestConfig(requestConfig).build();
- }
-
-
- private static PoolingHttpClientConnectionManager cm;
-
- private static SSLContext ctx = null;
-
- private static SSLConnectionSocketFactory socketFactory;
-
- private static RequestConfig requestConfig;
-
- private static Registry<ConnectionSocketFactory> socketFactoryRegistry;
-
- private static X509TrustManager xtm = new X509TrustManager() {
- @Override
- public void checkClientTrusted(X509Certificate[] chain, String authType) {
- }
-
- @Override
- public void checkServerTrusted(X509Certificate[] chain, String authType) {
- }
+ private HttpUtils() {
+ throw new UnsupportedOperationException("Construct HttpUtils");
+ }
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return null;
- }
- };
+ public static CloseableHttpClient getInstance() {
+ return HttpClientInstance.httpClient;
+ }
- static {
- try {
- ctx = SSLContext.getInstance(SSLConnectionSocketFactory.TLS);
- ctx.init(null, new TrustManager[] { xtm }, null);
- } catch (NoSuchAlgorithmException e) {
- logger.error("SSLContext init with NoSuchAlgorithmException", e);
- } catch (KeyManagementException e) {
- logger.error("SSLContext init with KeyManagementException", e);
- }
- socketFactory = new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE);
- /** set timeout、request time、socket timeout */
- requestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES)
- .setExpectContinueEnabled(Boolean.TRUE)
- .setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST))
- .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC))
- .setConnectTimeout(Constants.HTTP_CONNECT_TIMEOUT).setSocketTimeout(Constants.SOCKET_TIMEOUT)
- .setConnectionRequestTimeout(Constants.HTTP_CONNECTION_REQUEST_TIMEOUT).setRedirectsEnabled(true)
- .build();
- socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
- .register("http", PlainConnectionSocketFactory.INSTANCE).register("https", socketFactory).build();
- cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
- cm.setDefaultMaxPerRoute(60);
- cm.setMaxTotal(100);
+ private static class HttpClientInstance {
+ private static final CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).setDefaultRequestConfig(requestConfig).build();
+ }
- }
+ private static PoolingHttpClientConnectionManager cm;
+
+ private static SSLContext ctx = null;
+
+ private static SSLConnectionSocketFactory socketFactory;
+
+ private static RequestConfig requestConfig;
+
+ private static Registry<ConnectionSocketFactory> socketFactoryRegistry;
+
+ private static X509TrustManager xtm = new X509TrustManager() {
+ @Override
+ public void checkClientTrusted(X509Certificate[] chain, String authType) {
+ }
+
+ @Override
+ public void checkServerTrusted(X509Certificate[] chain, String authType) {
+ }
+
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+ };
+
+ static {
+ try {
+ ctx = SSLContext.getInstance(SSLConnectionSocketFactory.TLS);
+ ctx.init(null, new TrustManager[]{xtm}, null);
+ } catch (NoSuchAlgorithmException e) {
+ logger.error("SSLContext init with NoSuchAlgorithmException", e);
+ } catch (KeyManagementException e) {
+ logger.error("SSLContext init with KeyManagementException", e);
+ }
+ socketFactory = new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE);
+ /** set timeout、request time、socket timeout */
+ requestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES)
+ .setExpectContinueEnabled(Boolean.TRUE)
+ .setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST))
+ .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC))
+ .setConnectTimeout(Constants.HTTP_CONNECT_TIMEOUT).setSocketTimeout(Constants.SOCKET_TIMEOUT)
+ .setConnectionRequestTimeout(Constants.HTTP_CONNECTION_REQUEST_TIMEOUT).setRedirectsEnabled(true)
+ .build();
+ socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
+ .register("http", PlainConnectionSocketFactory.INSTANCE).register("https", socketFactory).build();
+ cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
+ cm.setDefaultMaxPerRoute(60);
+ cm.setMaxTotal(100);
+ }
- /**
- * get http request content
- * @param url url
- * @return http get request response content
- */
- public static String get(String url){
- CloseableHttpClient httpclient = HttpUtils.getInstance();
+ /**
+ * get http request content
+ *
+ * @param url url
+ * @return http get request response content
+ */
+ public static String get(String url) {
+ CloseableHttpClient httpclient = HttpUtils.getInstance();
- HttpGet httpget = new HttpGet(url);
- return getResponseContentString(httpget,httpclient);
+ HttpGet httpget = new HttpGet(url);
+ return getResponseContentString(httpget, httpclient);
}
/**
* get http response content
*
- * @param httpget httpget
+ * @param httpget httpget
* @param httpClient httpClient
* @return http get request response content
*/
public static String getResponseContentString(HttpGet httpget, CloseableHttpClient httpClient) {
- String responseContent = null;
- CloseableHttpResponse response = null;
- try {
- response = httpClient.execute(httpget);
- // check response status is 200
- if (response.getStatusLine().getStatusCode() == 200) {
- HttpEntity entity = response.getEntity();
- if (entity != null) {
- responseContent = EntityUtils.toString(entity, Constants.UTF_8);
- } else {
- logger.warn("http entity is null");
- }
- } else {
- logger.error("http get:{} response status code is not 200!", response.getStatusLine().getStatusCode());
- }
- } catch (IOException ioe) {
- logger.error(ioe.getMessage(), ioe);
- } finally {
- try {
- if (response != null) {
- EntityUtils.consume(response.getEntity());
- response.close();
- }
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- if (!httpget.isAborted()) {
- httpget.releaseConnection();
- httpget.abort();
- }
-
- }
- return responseContent;
+ String responseContent = null;
+ CloseableHttpResponse response = null;
+ try {
+ response = httpClient.execute(httpget);
+ // check response status is 200
+ if (response.getStatusLine().getStatusCode() == 200) {
+ HttpEntity entity = response.getEntity();
+ if (entity != null) {
+ responseContent = EntityUtils.toString(entity, Constants.UTF_8);
+ } else {
+ logger.warn("http entity is null");
+ }
+ } else {
+ logger.error("http get:{} response status code is not 200!", response.getStatusLine().getStatusCode());
+ }
+ } catch (IOException ioe) {
+ logger.error(ioe.getMessage(), ioe);
+ } finally {
+ try {
+ if (response != null) {
+ EntityUtils.consume(response.getEntity());
+ response.close();
+ }
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ if (!httpget.isAborted()) {
+ httpget.releaseConnection();
+ httpget.abort();
+ }
+
+ }
+ return responseContent;
}
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/IOUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/IOUtils.java
index ce551d8..96366d5 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/IOUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/IOUtils.java
@@ -1,4 +1,3 @@
-
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -18,14 +17,17 @@
package org.apache.dolphinscheduler.common.utils;
-
import java.io.Closeable;
import java.io.IOException;
public class IOUtils {
- public static void closeQuietly(Closeable closeable){
- if(closeable != null){
+ private IOUtils() {
+ throw new UnsupportedOperationException("Construct IOUtils");
+ }
+
+ public static void closeQuietly(Closeable closeable) {
+ if (closeable != null) {
try {
closeable.close();
} catch (IOException ignore) {
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/IpUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/IpUtils.java
index 858e5b4..63d43e7 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/IpUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/IpUtils.java
@@ -14,46 +14,50 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dolphinscheduler.common.utils;
+package org.apache.dolphinscheduler.common.utils;
/**
* http utils
*/
public class IpUtils {
- public static final String DOT = ".";
-
- /**
- * ip str to long <p>
- *
- * @param ipStr ip string
- * @return ip to long
- */
- public static Long ipToLong(String ipStr) {
- String[] ipSet = ipStr.split("\\" + DOT);
-
- return Long.parseLong(ipSet[0]) << 24 | Long.parseLong(ipSet[1]) << 16 | Long.parseLong(ipSet[2]) << 8 | Long.parseLong(ipSet[3]);
- }
-
- /**
- * long to ip
- * @param ipLong the long number converted from IP
- * @return String
- */
- public static String longToIp(long ipLong) {
- long[] ipNumbers = new long[4];
- long tmp = 0xFF;
- ipNumbers[0] = ipLong >> 24 & tmp;
- ipNumbers[1] = ipLong >> 16 & tmp;
- ipNumbers[2] = ipLong >> 8 & tmp;
- ipNumbers[3] = ipLong & tmp;
-
- String sb = ipNumbers[0] + DOT +
- ipNumbers[1] + DOT +
- ipNumbers[2] + DOT +
- ipNumbers[3];
- return sb;
- }
+ private IpUtils() {
+ throw new UnsupportedOperationException("Construct IpUtils");
+ }
+
+ public static final String DOT = ".";
+
+ /**
+ * ip str to long <p>
+ *
+ * @param ipStr ip string
+ * @return ip to long
+ */
+ public static Long ipToLong(String ipStr) {
+ String[] ipSet = ipStr.split("\\" + DOT);
+
+ return Long.parseLong(ipSet[0]) << 24 | Long.parseLong(ipSet[1]) << 16 | Long.parseLong(ipSet[2]) << 8 | Long.parseLong(ipSet[3]);
+ }
+
+ /**
+ * long to ip
+ *
+ * @param ipLong the long number converted from IP
+ * @return String
+ */
+ public static String longToIp(long ipLong) {
+ long[] ipNumbers = new long[4];
+ long tmp = 0xFF;
+ ipNumbers[0] = ipLong >> 24 & tmp;
+ ipNumbers[1] = ipLong >> 16 & tmp;
+ ipNumbers[2] = ipLong >> 8 & tmp;
+ ipNumbers[3] = ipLong & tmp;
+
+ return ipNumbers[0] + DOT
+ + ipNumbers[1] + DOT
+ + ipNumbers[2] + DOT
+ + ipNumbers[3];
+ }
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java
index 3e88a84..56ef74d 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java
@@ -14,25 +14,39 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
+import static com.fasterxml.jackson.databind.DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT;
+import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
+import static com.fasterxml.jackson.databind.DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL;
+import static com.fasterxml.jackson.databind.MapperFeature.REQUIRE_SETTERS_FOR_GETTERS;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.TextNode;
import com.fasterxml.jackson.databind.type.CollectionType;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.*;
-
-import static com.fasterxml.jackson.databind.DeserializationFeature.*;
-import static com.fasterxml.jackson.databind.MapperFeature.REQUIRE_SETTERS_FOR_GETTERS;
/**
* json utils
@@ -49,13 +63,12 @@ public class JSONUtils {
.configure(ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, true)
.configure(READ_UNKNOWN_ENUM_VALUES_AS_NULL, true)
.configure(REQUIRE_SETTERS_FOR_GETTERS, true)
- .setTimeZone(TimeZone.getDefault())
- ;
+ .setTimeZone(TimeZone.getDefault());
private JSONUtils() {
+ throw new UnsupportedOperationException("Construct JSONUtils");
}
-
public static ArrayNode createArrayNode() {
return objectMapper.createArrayNode();
}
@@ -94,9 +107,9 @@ public class JSONUtils {
* the fields of the specified object are generics, just the object itself should not be a
* generic type.
*
- * @param json the string from which the object is to be deserialized
+ * @param json the string from which the object is to be deserialized
* @param clazz the class of T
- * @param <T> T
+ * @param <T> T
* @return an object of type T from the string
* classOfT
*/
@@ -116,9 +129,9 @@ public class JSONUtils {
/**
* json to list
*
- * @param json json string
+ * @param json json string
* @param clazz class
- * @param <T> T
+ * @param <T> T
* @return list
*/
public static <T> List<T> toList(String json, Class<T> clazz) {
@@ -137,7 +150,6 @@ public class JSONUtils {
return Collections.emptyList();
}
-
/**
* check json object valid
*
@@ -160,13 +172,12 @@ public class JSONUtils {
return false;
}
-
/**
* Method for finding a JSON Object field with specified name in this
* node or its child nodes, and returning value it has.
* If no matching field is found in this node or its descendants, returns null.
*
- * @param jsonNode json node
+ * @param jsonNode json node
* @param fieldName Name of field to look for
* @return Value of first matching node found, if any; null if none
*/
@@ -180,7 +191,6 @@ public class JSONUtils {
return node.toString();
}
-
/**
* json to map
* <p>
@@ -195,7 +205,8 @@ public class JSONUtils {
}
try {
- return objectMapper.readValue(json, new TypeReference<Map<String, String>>() {});
+ return objectMapper.readValue(json, new TypeReference<Map<String, String>>() {
+ });
} catch (Exception e) {
logger.error("json to map exception!", e);
}
@@ -206,11 +217,11 @@ public class JSONUtils {
/**
* json to map
*
- * @param json json
+ * @param json json
* @param classK classK
* @param classV classV
- * @param <K> K
- * @param <V> V
+ * @param <K> K
+ * @param <V> V
* @return to map
*/
public static <K, V> Map<K, V> toMap(String json, Class<K> classK, Class<V> classV) {
@@ -258,7 +269,6 @@ public class JSONUtils {
}
}
-
/**
* json serializer
*/
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/LoggerUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/LoggerUtils.java
index e3cf652..211f0a0 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/LoggerUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/LoggerUtils.java
@@ -14,22 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
+import org.apache.dolphinscheduler.common.Constants;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.dolphinscheduler.common.Constants;
import org.slf4j.Logger;
/**
- * logger utils
+ * logger utils
*/
public class LoggerUtils {
+ private LoggerUtils() {
+ throw new UnsupportedOperationException("Construct LoggerUtils");
+ }
+
/**
* rules for extracting application ID
*/
@@ -53,29 +59,29 @@ public class LoggerUtils {
/**
* build job id
*
- * @param affix Task Logger's prefix
- * @param processDefId process define id
+ * @param affix Task Logger's prefix
+ * @param processDefId process define id
* @param processInstId process instance id
- * @param taskId task id
+ * @param taskId task id
* @return task id format
*/
public static String buildTaskId(String affix,
- int processDefId,
- int processInstId,
- int taskId){
+ int processDefId,
+ int processInstId,
+ int taskId) {
// - [taskAppId=TASK_79_4084_15210]
- return String.format(" - %s%s-%s-%s-%s]",TASK_APPID_LOG_FORMAT,affix,
+ return String.format(" - %s%s-%s-%s-%s]", TASK_APPID_LOG_FORMAT, affix,
processDefId,
processInstId,
taskId);
}
-
/**
* processing log
* get yarn application id list
- * @param log log content
- * @param logger logger
+ *
+ * @param log log content
+ * @param logger logger
* @return app id list
*/
public static List<String> getAppIds(String log, Logger logger) {
@@ -87,7 +93,7 @@ public class LoggerUtils {
// analyse logs to get all submit yarn application id
while (matcher.find()) {
String appId = matcher.group();
- if(!appIds.contains(appId)){
+ if (!appIds.contains(appId)) {
logger.info("find app id: {}", appId);
appIds.add(appId);
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java
index 13a25dc..b001825 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java
@@ -14,27 +14,36 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import static org.apache.dolphinscheduler.common.Constants.DOLPHIN_SCHEDULER_PREFERRED_NETWORK_INTERFACE;
+
+import static java.util.Collections.emptyList;
import java.io.IOException;
-import java.net.*;
-import java.util.*;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import java.util.Enumeration;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
import java.util.regex.Pattern;
-import static java.util.Collections.emptyList;
-import static org.apache.dolphinscheduler.common.Constants.DOLPHIN_SCHEDULER_PREFERRED_NETWORK_INTERFACE;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* NetUtils
*/
public class NetUtils {
-
private NetUtils() {
- throw new IllegalStateException("Utility class");
+ throw new UnsupportedOperationException("Construct NetUtils");
}
private static Logger logger = LoggerFactory.getLogger(NetUtils.class);
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
index c3fcb50..08e092d 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
@@ -14,8 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
+import org.apache.dolphinscheduler.common.Constants;
+import org.apache.dolphinscheduler.common.shell.ShellExecutor;
+
+import org.apache.commons.configuration.Configuration;
+
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
@@ -32,9 +38,6 @@ import java.util.Optional;
import java.util.StringTokenizer;
import java.util.regex.Pattern;
-import org.apache.commons.configuration.Configuration;
-import org.apache.dolphinscheduler.common.Constants;
-import org.apache.dolphinscheduler.common.shell.ShellExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,431 +48,444 @@ import oshi.hardware.HardwareAbstractionLayer;
/**
* os utils
- *
*/
public class OSUtils {
- private static final Logger logger = LoggerFactory.getLogger(OSUtils.class);
-
- public static final ThreadLocal<Logger> taskLoggerThreadLocal = new ThreadLocal<>();
-
- private static final SystemInfo SI = new SystemInfo();
- public static final String TWO_DECIMAL = "0.00";
-
- /**
- * return -1 when the function can not get hardware env info
- * e.g {@link OSUtils#loadAverage()} {@link OSUtils#cpuUsage()}
- */
- public static final double NEGATIVE_ONE = -1;
-
- private static HardwareAbstractionLayer hal = SI.getHardware();
-
- private OSUtils() {}
-
- /**
- * Initialization regularization, solve the problem of pre-compilation performance,
- * avoid the thread safety problem of multi-thread operation
- */
- private static final Pattern PATTERN = Pattern.compile("\\s+");
-
-
- /**
- * get memory usage
- * Keep 2 decimal
- * @return percent %
- */
- public static double memoryUsage() {
- GlobalMemory memory = hal.getMemory();
- double memoryUsage = (memory.getTotal() - memory.getAvailable() - memory.getSwapUsed()) * 0.1 / memory.getTotal() * 10;
-
- DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
- df.setRoundingMode(RoundingMode.HALF_UP);
- return Double.parseDouble(df.format(memoryUsage));
- }
-
-
- /**
- * get available physical memory size
- *
- * Keep 2 decimal
- * @return available Physical Memory Size, unit: G
- */
- public static double availablePhysicalMemorySize() {
- GlobalMemory memory = hal.getMemory();
- double availablePhysicalMemorySize = (memory.getAvailable() + memory.getSwapUsed()) /1024.0/1024/1024;
-
- DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
- df.setRoundingMode(RoundingMode.HALF_UP);
- return Double.parseDouble(df.format(availablePhysicalMemorySize));
-
- }
-
- /**
- * get total physical memory size
- *
- * Keep 2 decimal
- * @return available Physical Memory Size, unit: G
- */
- public static double totalMemorySize() {
- GlobalMemory memory = hal.getMemory();
- double availablePhysicalMemorySize = memory.getTotal() /1024.0/1024/1024;
-
- DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
- df.setRoundingMode(RoundingMode.HALF_UP);
- return Double.parseDouble(df.format(availablePhysicalMemorySize));
- }
-
-
- /**
- * load average
- *
- * @return load average
- */
- public static double loadAverage() {
- double loadAverage = hal.getProcessor().getSystemLoadAverage();
- if (Double.isNaN(loadAverage)) {
- return NEGATIVE_ONE;
+ private static final Logger logger = LoggerFactory.getLogger(OSUtils.class);
+
+ public static final ThreadLocal<Logger> taskLoggerThreadLocal = new ThreadLocal<>();
+
+ private static final SystemInfo SI = new SystemInfo();
+ public static final String TWO_DECIMAL = "0.00";
+
+ /**
+ * return -1 when the function can not get hardware env info
+ * e.g {@link OSUtils#loadAverage()} {@link OSUtils#cpuUsage()}
+ */
+ public static final double NEGATIVE_ONE = -1;
+
+ private static HardwareAbstractionLayer hal = SI.getHardware();
+
+ private OSUtils() {
+ throw new UnsupportedOperationException("Construct OSUtils");
}
- DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
- df.setRoundingMode(RoundingMode.HALF_UP);
- return Double.parseDouble(df.format(loadAverage));
- }
-
- /**
- * get cpu usage
- *
- * @return cpu usage
- */
- public static double cpuUsage() {
- CentralProcessor processor = hal.getProcessor();
- double cpuUsage = processor.getSystemCpuLoad();
- if (Double.isNaN(cpuUsage)) {
- return NEGATIVE_ONE;
+ /**
+ * Initialization regularization, solve the problem of pre-compilation performance,
+ * avoid the thread safety problem of multi-thread operation
+ */
+ private static final Pattern PATTERN = Pattern.compile("\\s+");
+
+ /**
+ * get memory usage
+ * Keep 2 decimal
+ *
+ * @return percent %
+ */
+ public static double memoryUsage() {
+ GlobalMemory memory = hal.getMemory();
+ double memoryUsage = (memory.getTotal() - memory.getAvailable() - memory.getSwapUsed()) * 0.1 / memory.getTotal() * 10;
+
+ DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
+ df.setRoundingMode(RoundingMode.HALF_UP);
+ return Double.parseDouble(df.format(memoryUsage));
}
- DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
- df.setRoundingMode(RoundingMode.HALF_UP);
- return Double.parseDouble(df.format(cpuUsage));
- }
-
- public static List<String> getUserList() {
- try {
- if (isMacOS()) {
- return getUserListFromMac();
- } else if (isWindows()) {
- return getUserListFromWindows();
- } else {
- return getUserListFromLinux();
- }
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
+ /**
+ * get available physical memory size
+ * <p>
+ * Keep 2 decimal
+ *
+ * @return available Physical Memory Size, unit: G
+ */
+ public static double availablePhysicalMemorySize() {
+ GlobalMemory memory = hal.getMemory();
+ double availablePhysicalMemorySize = (memory.getAvailable() + memory.getSwapUsed()) / 1024.0 / 1024 / 1024;
+
+ DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
+ df.setRoundingMode(RoundingMode.HALF_UP);
+ return Double.parseDouble(df.format(availablePhysicalMemorySize));
+
+ }
+
+ /**
+ * get total physical memory size
+ * <p>
+ * Keep 2 decimal
+ *
+ * @return available Physical Memory Size, unit: G
+ */
+ public static double totalMemorySize() {
+ GlobalMemory memory = hal.getMemory();
+ double availablePhysicalMemorySize = memory.getTotal() / 1024.0 / 1024 / 1024;
+
+ DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
+ df.setRoundingMode(RoundingMode.HALF_UP);
+ return Double.parseDouble(df.format(availablePhysicalMemorySize));
+ }
+
+ /**
+ * load average
+ *
+ * @return load average
+ */
+ public static double loadAverage() {
+ double loadAverage = hal.getProcessor().getSystemLoadAverage();
+ if (Double.isNaN(loadAverage)) {
+ return NEGATIVE_ONE;
+ }
+
+ DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
+ df.setRoundingMode(RoundingMode.HALF_UP);
+ return Double.parseDouble(df.format(loadAverage));
}
- return Collections.emptyList();
- }
-
- /**
- * get user list from linux
- *
- * @return user list
- */
- private static List<String> getUserListFromLinux() throws IOException {
- List<String> userList = new ArrayList<>();
-
- try (BufferedReader bufferedReader = new BufferedReader(
- new InputStreamReader(new FileInputStream("/etc/passwd")))) {
- String line;
-
- while ((line = bufferedReader.readLine()) != null) {
- if (line.contains(":")) {
- String[] userInfo = line.split(":");
- userList.add(userInfo[0]);
+ /**
+ * get cpu usage
+ *
+ * @return cpu usage
+ */
+ public static double cpuUsage() {
+ CentralProcessor processor = hal.getProcessor();
+ double cpuUsage = processor.getSystemCpuLoad();
+ if (Double.isNaN(cpuUsage)) {
+ return NEGATIVE_ONE;
}
- }
+
+ DecimalFormat df = new DecimalFormat(TWO_DECIMAL);
+ df.setRoundingMode(RoundingMode.HALF_UP);
+ return Double.parseDouble(df.format(cpuUsage));
}
- return userList;
- }
-
- /**
- * get user list from mac
- * @return user list
- */
- private static List<String> getUserListFromMac() throws IOException {
- String result = exeCmd("dscl . list /users");
- if (StringUtils.isNotEmpty(result)) {
- return Arrays.asList(result.split( "\n"));
+ public static List<String> getUserList() {
+ try {
+ if (isMacOS()) {
+ return getUserListFromMac();
+ } else if (isWindows()) {
+ return getUserListFromWindows();
+ } else {
+ return getUserListFromLinux();
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return Collections.emptyList();
+ }
+
+ /**
+ * get user list from linux
+ *
+ * @return user list
+ */
+ private static List<String> getUserListFromLinux() throws IOException {
+ List<String> userList = new ArrayList<>();
+
+ try (BufferedReader bufferedReader = new BufferedReader(
+ new InputStreamReader(new FileInputStream("/etc/passwd")))) {
+ String line;
+
+ while ((line = bufferedReader.readLine()) != null) {
+ if (line.contains(":")) {
+ String[] userInfo = line.split(":");
+ userList.add(userInfo[0]);
+ }
+ }
+ }
+
+ return userList;
}
- return Collections.emptyList();
- }
-
- /**
- * get user list from windows
- * @return user list
- * @throws IOException
- */
- private static List<String> getUserListFromWindows() throws IOException {
- String result = exeCmd("net user");
- String[] lines = result.split("\n");
-
- int startPos = 0;
- int endPos = lines.length - 2;
- for (int i = 0; i < lines.length; i++) {
- if (lines[i].isEmpty()) {
- continue;
- }
-
- int count = 0;
- if (lines[i].charAt(0) == '-') {
- for (int j = 0; j < lines[i].length(); j++) {
- if (lines[i].charAt(i) == '-') {
- count++;
- }
+ /**
+ * get user list from mac
+ *
+ * @return user list
+ */
+ private static List<String> getUserListFromMac() throws IOException {
+ String result = exeCmd("dscl . list /users");
+ if (StringUtils.isNotEmpty(result)) {
+ return Arrays.asList(result.split("\n"));
}
- }
- if (count == lines[i].length()) {
- startPos = i + 1;
- break;
- }
+ return Collections.emptyList();
}
- List<String> users = new ArrayList<>();
- while (startPos <= endPos) {
- users.addAll(Arrays.asList(PATTERN.split(lines[startPos])));
- startPos++;
+ /**
+ * get user list from windows
+ *
+ * @return user list
+ */
+ private static List<String> getUserListFromWindows() throws IOException {
+ String result = exeCmd("net user");
+ String[] lines = result.split("\n");
+
+ int startPos = 0;
+ int endPos = lines.length - 2;
+ for (int i = 0; i < lines.length; i++) {
+ if (lines[i].isEmpty()) {
+ continue;
+ }
+
+ int count = 0;
+ if (lines[i].charAt(0) == '-') {
+ for (int j = 0; j < lines[i].length(); j++) {
+ if (lines[i].charAt(i) == '-') {
+ count++;
+ }
+ }
+ }
+
+ if (count == lines[i].length()) {
+ startPos = i + 1;
+ break;
+ }
+ }
+
+ List<String> users = new ArrayList<>();
+ while (startPos <= endPos) {
+ users.addAll(Arrays.asList(PATTERN.split(lines[startPos])));
+ startPos++;
+ }
+
+ return users;
}
- return users;
- }
-
- /**
- * create user
- * @param userName user name
- * @return true if creation was successful, otherwise false
- */
- public static boolean createUser(String userName) {
- try {
- String userGroup = OSUtils.getGroup();
- if (StringUtils.isEmpty(userGroup)) {
- String errorLog = String.format("%s group does not exist for this operating system.", userGroup);
- LoggerUtils.logError(Optional.ofNullable(logger), errorLog);
- LoggerUtils.logError(Optional.ofNullable(taskLoggerThreadLocal.get()), errorLog);
+ /**
+ * create user
+ *
+ * @param userName user name
+ * @return true if creation was successful, otherwise false
+ */
+ public static boolean createUser(String userName) {
+ try {
+ String userGroup = OSUtils.getGroup();
+ if (StringUtils.isEmpty(userGroup)) {
+ String errorLog = String.format("%s group does not exist for this operating system.", userGroup);
+ LoggerUtils.logError(Optional.ofNullable(logger), errorLog);
+ LoggerUtils.logError(Optional.ofNullable(taskLoggerThreadLocal.get()), errorLog);
+ return false;
+ }
+ if (isMacOS()) {
+ createMacUser(userName, userGroup);
+ } else if (isWindows()) {
+ createWindowsUser(userName, userGroup);
+ } else {
+ createLinuxUser(userName, userGroup);
+ }
+ return true;
+ } catch (Exception e) {
+ LoggerUtils.logError(Optional.ofNullable(logger), e);
+ LoggerUtils.logError(Optional.ofNullable(taskLoggerThreadLocal.get()), e);
+ }
+
return false;
- }
- if (isMacOS()) {
- createMacUser(userName, userGroup);
- } else if (isWindows()) {
- createWindowsUser(userName, userGroup);
- } else {
- createLinuxUser(userName, userGroup);
- }
- return true;
- } catch (Exception e) {
- LoggerUtils.logError(Optional.ofNullable(logger), e);
- LoggerUtils.logError(Optional.ofNullable(taskLoggerThreadLocal.get()), e);
}
- return false;
- }
-
- /**
- * create linux user
- * @param userName user name
- * @param userGroup user group
- * @throws IOException in case of an I/O error
- */
- private static void createLinuxUser(String userName, String userGroup) throws IOException {
- String infoLog1 = String.format("create linux os user : %s", userName);
- LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog1);
- LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog1);
-
- String cmd = String.format("sudo useradd -g %s %s", userGroup, userName);
- String infoLog2 = String.format("execute cmd : %s", cmd);
- LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog2);
- LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog2);
- OSUtils.exeCmd(cmd);
- }
-
- /**
- * create mac user (Supports Mac OSX 10.10+)
- * @param userName user name
- * @param userGroup user group
- * @throws IOException in case of an I/O error
- */
- private static void createMacUser(String userName, String userGroup) throws IOException {
-
- Optional<Logger> optionalLogger = Optional.ofNullable(logger);
- Optional<Logger> optionalTaskLogger = Optional.ofNullable(taskLoggerThreadLocal.get());
-
- String infoLog1 = String.format("create mac os user : %s", userName);
- LoggerUtils.logInfo(optionalLogger, infoLog1);
- LoggerUtils.logInfo(optionalTaskLogger, infoLog1);
-
- String createUserCmd = String.format("sudo sysadminctl -addUser %s -password %s", userName, userName);
- String infoLog2 = String.format("create user command : %s", createUserCmd);
- LoggerUtils.logInfo(optionalLogger, infoLog2);
- LoggerUtils.logInfo(optionalTaskLogger, infoLog2);
- OSUtils.exeCmd(createUserCmd);
-
- String appendGroupCmd = String.format("sudo dseditgroup -o edit -a %s -t user %s", userName, userGroup);
- String infoLog3 = String.format("append user to group : %s", appendGroupCmd);
- LoggerUtils.logInfo(optionalLogger, infoLog3);
- LoggerUtils.logInfo(optionalTaskLogger, infoLog3);
- OSUtils.exeCmd(appendGroupCmd);
- }
-
- /**
- * create windows user
- * @param userName user name
- * @param userGroup user group
- * @throws IOException in case of an I/O error
- */
- private static void createWindowsUser(String userName, String userGroup) throws IOException {
- String infoLog1 = String.format("create windows os user : %s", userName);
- LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog1);
- LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog1);
-
- String userCreateCmd = String.format("net user \"%s\" /add", userName);
- String infoLog2 = String.format("execute create user command : %s", userCreateCmd);
- LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog2);
- LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog2);
- OSUtils.exeCmd(userCreateCmd);
-
- String appendGroupCmd = String.format("net localgroup \"%s\" \"%s\" /add", userGroup, userName);
- String infoLog3 = String.format("execute append user to group : %s", appendGroupCmd);
- LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog3);
- LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog3);
- OSUtils.exeCmd(appendGroupCmd);
- }
-
- /**
- * get system group information
- * @return system group info
- * @throws IOException errors
- */
- public static String getGroup() throws IOException {
- if (isWindows()) {
- String currentProcUserName = System.getProperty("user.name");
- String result = exeCmd(String.format("net user \"%s\"", currentProcUserName));
- String line = result.split("\n")[22];
- String group = PATTERN.split(line)[1];
- if (group.charAt(0) == '*') {
- return group.substring(1);
- } else {
- return group;
- }
- } else {
- String result = exeCmd("groups");
- if (StringUtils.isNotEmpty(result)) {
- String[] groupInfo = result.split(" ");
- return groupInfo[0];
- }
+ /**
+ * create linux user
+ *
+ * @param userName user name
+ * @param userGroup user group
+ * @throws IOException in case of an I/O error
+ */
+ private static void createLinuxUser(String userName, String userGroup) throws IOException {
+ String infoLog1 = String.format("create linux os user : %s", userName);
+ LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog1);
+ LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog1);
+
+ String cmd = String.format("sudo useradd -g %s %s", userGroup, userName);
+ String infoLog2 = String.format("execute cmd : %s", cmd);
+ LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog2);
+ LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog2);
+ OSUtils.exeCmd(cmd);
}
- return null;
- }
-
- /**
- * Execute the corresponding command of Linux or Windows
- *
- * @param command command
- * @return result of execute command
- * @throws IOException errors
- */
- public static String exeCmd(String command) throws IOException {
- StringTokenizer st = new StringTokenizer(command);
- String[] cmdArray = new String[st.countTokens()];
- for (int i = 0; st.hasMoreTokens(); i++) {
- cmdArray[i] = st.nextToken();
+ /**
+ * create mac user (Supports Mac OSX 10.10+)
+ *
+ * @param userName user name
+ * @param userGroup user group
+ * @throws IOException in case of an I/O error
+ */
+ private static void createMacUser(String userName, String userGroup) throws IOException {
+
+ Optional<Logger> optionalLogger = Optional.ofNullable(logger);
+ Optional<Logger> optionalTaskLogger = Optional.ofNullable(taskLoggerThreadLocal.get());
+
+ String infoLog1 = String.format("create mac os user : %s", userName);
+ LoggerUtils.logInfo(optionalLogger, infoLog1);
+ LoggerUtils.logInfo(optionalTaskLogger, infoLog1);
+
+ String createUserCmd = String.format("sudo sysadminctl -addUser %s -password %s", userName, userName);
+ String infoLog2 = String.format("create user command : %s", createUserCmd);
+ LoggerUtils.logInfo(optionalLogger, infoLog2);
+ LoggerUtils.logInfo(optionalTaskLogger, infoLog2);
+ OSUtils.exeCmd(createUserCmd);
+
+ String appendGroupCmd = String.format("sudo dseditgroup -o edit -a %s -t user %s", userName, userGroup);
+ String infoLog3 = String.format("append user to group : %s", appendGroupCmd);
+ LoggerUtils.logInfo(optionalLogger, infoLog3);
+ LoggerUtils.logInfo(optionalTaskLogger, infoLog3);
+ OSUtils.exeCmd(appendGroupCmd);
}
- return exeShell(cmdArray);
- }
-
- /**
- * Execute the shell
- * @param command command
- * @return result of execute the shell
- * @throws IOException errors
- */
- public static String exeShell(String[] command) throws IOException {
- return ShellExecutor.execCommand(command);
- }
-
- /**
- * get process id
- * @return process id
- */
- public static int getProcessID() {
- RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
- return Integer.parseInt(runtimeMXBean.getName().split("@")[0]);
- }
-
- /**
- * whether is macOS
- * @return true if mac
- */
- public static boolean isMacOS() {
- return getOSName().startsWith("Mac");
- }
-
-
- /**
- * whether is windows
- * @return true if windows
- */
- public static boolean isWindows() {
- return getOSName().startsWith("Windows");
- }
-
- /**
- * get current OS name
- * @return current OS name
- */
- public static String getOSName() {
- return System.getProperty("os.name");
- }
-
- /**
- * check memory and cpu usage
- * @param systemCpuLoad systemCpuLoad
- * @param systemReservedMemory systemReservedMemory
- * @return check memory and cpu usage
- */
- public static Boolean checkResource(double systemCpuLoad, double systemReservedMemory){
- // system load average
- double loadAverage = OSUtils.loadAverage();
- // system available physical memory
- double availablePhysicalMemorySize = OSUtils.availablePhysicalMemorySize();
-
- if(loadAverage > systemCpuLoad || availablePhysicalMemorySize < systemReservedMemory){
- logger.warn("load is too high or availablePhysicalMemorySize(G) is too low, it's availablePhysicalMemorySize(G):{},loadAvg:{}", availablePhysicalMemorySize , loadAverage);
- return false;
- }else{
- return true;
+
+ /**
+ * create windows user
+ *
+ * @param userName user name
+ * @param userGroup user group
+ * @throws IOException in case of an I/O error
+ */
+ private static void createWindowsUser(String userName, String userGroup) throws IOException {
+ String infoLog1 = String.format("create windows os user : %s", userName);
+ LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog1);
+ LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog1);
+
+ String userCreateCmd = String.format("net user \"%s\" /add", userName);
+ String infoLog2 = String.format("execute create user command : %s", userCreateCmd);
+ LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog2);
+ LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog2);
+ OSUtils.exeCmd(userCreateCmd);
+
+ String appendGroupCmd = String.format("net localgroup \"%s\" \"%s\" /add", userGroup, userName);
+ String infoLog3 = String.format("execute append user to group : %s", appendGroupCmd);
+ LoggerUtils.logInfo(Optional.ofNullable(logger), infoLog3);
+ LoggerUtils.logInfo(Optional.ofNullable(taskLoggerThreadLocal.get()), infoLog3);
+ OSUtils.exeCmd(appendGroupCmd);
}
- }
-
- /**
- * check memory and cpu usage
- * @param conf conf
- * @param isMaster is master
- * @return check memory and cpu usage
- */
- public static Boolean checkResource(Configuration conf, Boolean isMaster){
- double systemCpuLoad;
- double systemReservedMemory;
-
- if(Boolean.TRUE.equals(isMaster)){
- systemCpuLoad = conf.getDouble(Constants.MASTER_MAX_CPULOAD_AVG, Constants.DEFAULT_MASTER_CPU_LOAD);
- systemReservedMemory = conf.getDouble(Constants.MASTER_RESERVED_MEMORY, Constants.DEFAULT_MASTER_RESERVED_MEMORY);
- }else{
- systemCpuLoad = conf.getDouble(Constants.WORKER_MAX_CPULOAD_AVG, Constants.DEFAULT_WORKER_CPU_LOAD);
- systemReservedMemory = conf.getDouble(Constants.WORKER_RESERVED_MEMORY, Constants.DEFAULT_WORKER_RESERVED_MEMORY);
+
+ /**
+ * get system group information
+ *
+ * @return system group info
+ * @throws IOException errors
+ */
+ public static String getGroup() throws IOException {
+ if (isWindows()) {
+ String currentProcUserName = System.getProperty("user.name");
+ String result = exeCmd(String.format("net user \"%s\"", currentProcUserName));
+ String line = result.split("\n")[22];
+ String group = PATTERN.split(line)[1];
+ if (group.charAt(0) == '*') {
+ return group.substring(1);
+ } else {
+ return group;
+ }
+ } else {
+ String result = exeCmd("groups");
+ if (StringUtils.isNotEmpty(result)) {
+ String[] groupInfo = result.split(" ");
+ return groupInfo[0];
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Execute the corresponding command of Linux or Windows
+ *
+ * @param command command
+ * @return result of execute command
+ * @throws IOException errors
+ */
+ public static String exeCmd(String command) throws IOException {
+ StringTokenizer st = new StringTokenizer(command);
+ String[] cmdArray = new String[st.countTokens()];
+ for (int i = 0; st.hasMoreTokens(); i++) {
+ cmdArray[i] = st.nextToken();
+ }
+ return exeShell(cmdArray);
+ }
+
+ /**
+ * Execute the shell
+ *
+ * @param command command
+ * @return result of execute the shell
+ * @throws IOException errors
+ */
+ public static String exeShell(String[] command) throws IOException {
+ return ShellExecutor.execCommand(command);
+ }
+
+ /**
+ * get process id
+ *
+ * @return process id
+ */
+ public static int getProcessID() {
+ RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
+ return Integer.parseInt(runtimeMXBean.getName().split("@")[0]);
+ }
+
+ /**
+ * whether is macOS
+ *
+ * @return true if mac
+ */
+ public static boolean isMacOS() {
+ return getOSName().startsWith("Mac");
+ }
+
+ /**
+ * whether is windows
+ *
+ * @return true if windows
+ */
+ public static boolean isWindows() {
+ return getOSName().startsWith("Windows");
+ }
+
+ /**
+ * get current OS name
+ *
+ * @return current OS name
+ */
+ public static String getOSName() {
+ return System.getProperty("os.name");
+ }
+
+ /**
+ * check memory and cpu usage
+ *
+ * @param systemCpuLoad systemCpuLoad
+ * @param systemReservedMemory systemReservedMemory
+ * @return check memory and cpu usage
+ */
+ public static Boolean checkResource(double systemCpuLoad, double systemReservedMemory) {
+ // system load average
+ double loadAverage = OSUtils.loadAverage();
+ // system available physical memory
+ double availablePhysicalMemorySize = OSUtils.availablePhysicalMemorySize();
+
+ if (loadAverage > systemCpuLoad || availablePhysicalMemorySize < systemReservedMemory) {
+ logger.warn("load is too high or availablePhysicalMemorySize(G) is too low, it's availablePhysicalMemorySize(G):{},loadAvg:{}", availablePhysicalMemorySize, loadAverage);
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ /**
+ * check memory and cpu usage
+ *
+ * @param conf conf
+ * @param isMaster is master
+ * @return check memory and cpu usage
+ */
+ public static Boolean checkResource(Configuration conf, Boolean isMaster) {
+ double systemCpuLoad;
+ double systemReservedMemory;
+
+ if (Boolean.TRUE.equals(isMaster)) {
+ systemCpuLoad = conf.getDouble(Constants.MASTER_MAX_CPULOAD_AVG, Constants.DEFAULT_MASTER_CPU_LOAD);
+ systemReservedMemory = conf.getDouble(Constants.MASTER_RESERVED_MEMORY, Constants.DEFAULT_MASTER_RESERVED_MEMORY);
+ } else {
+ systemCpuLoad = conf.getDouble(Constants.WORKER_MAX_CPULOAD_AVG, Constants.DEFAULT_WORKER_CPU_LOAD);
+ systemReservedMemory = conf.getDouble(Constants.WORKER_RESERVED_MEMORY, Constants.DEFAULT_WORKER_RESERVED_MEMORY);
+ }
+ return checkResource(systemCpuLoad, systemReservedMemory);
}
- return checkResource(systemCpuLoad,systemReservedMemory);
- }
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java
index 2d624de..39ec04a 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java
@@ -14,10 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.time.DateUtils;
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.CommandType;
import org.apache.dolphinscheduler.common.enums.DataType;
@@ -25,231 +24,228 @@ import org.apache.dolphinscheduler.common.process.Property;
import org.apache.dolphinscheduler.common.utils.placeholder.BusinessTimeUtils;
import org.apache.dolphinscheduler.common.utils.placeholder.PlaceholderUtils;
import org.apache.dolphinscheduler.common.utils.placeholder.TimePlaceholderUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.sql.PreparedStatement;
-import java.text.ParseException;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* parameter parse utils
*/
public class ParameterUtils {
- private static final Logger logger = LoggerFactory.getLogger(ParameterUtils.class);
-
- /**
- * convert parameters place holders
- *
- * @param parameterString parameter
- * @param parameterMap parameter map
- * @return convert parameters place holders
- */
- public static String convertParameterPlaceholders(String parameterString, Map<String, String> parameterMap) {
- if (StringUtils.isEmpty(parameterString) || parameterMap == null) {
- return parameterString;
- }
-
- //Get current time, schedule execute time
- String cronTimeStr = parameterMap.get(Constants.PARAMETER_DATETIME);
-
- Date cronTime = null;
-
- if (StringUtils.isNotEmpty(cronTimeStr)) {
- try {
- cronTime = DateUtils.parseDate(cronTimeStr, new String[]{Constants.PARAMETER_FORMAT_TIME});
- } catch (ParseException e) {
- logger.error("parse {} exception", cronTimeStr, e);
- }
- } else {
- cronTime = new Date();
- }
-
- // replace variable ${} form,refers to the replacement of system variables and custom variables
- parameterString = PlaceholderUtils.replacePlaceholders(parameterString, parameterMap, true);
+ private static final Logger logger = LoggerFactory.getLogger(ParameterUtils.class);
- // replace time $[...] form, eg. $[yyyyMMdd]
- if (cronTime != null) {
- parameterString = TimePlaceholderUtils.replacePlaceholders(parameterString, cronTime, true);
+ private ParameterUtils() {
+ throw new UnsupportedOperationException("Construct ParameterUtils");
}
- return parameterString;
- }
-
- /**
- * new
- * convert parameters place holders
- *
- * @param parameterString parameter
- * @param parameterMap parameter map
- * @return convert parameters place holders
- */
- public static String convertParameterPlaceholders2(String parameterString, Map<String, String> parameterMap) {
- if (StringUtils.isEmpty(parameterString)) {
- return parameterString;
- }
- //Get current time, schedule execute time
- String cronTimeStr = parameterMap.get(Constants.PARAMETER_SHECDULE_TIME);
- Date cronTime = null;
-
- if (StringUtils.isNotEmpty(cronTimeStr)) {
- try {
- cronTime = DateUtils.parseDate(cronTimeStr, new String[]{Constants.PARAMETER_FORMAT_TIME});
-
- } catch (ParseException e) {
- logger.error(String.format("parse %s exception", cronTimeStr), e);
- }
- } else {
- cronTime = new Date();
+ /**
+ * convert parameters place holders
+ *
+ * @param parameterString parameter
+ * @param parameterMap parameter map
+ * @return convert parameters place holders
+ */
+ public static String convertParameterPlaceholders(String parameterString, Map<String, String> parameterMap) {
+ if (StringUtils.isEmpty(parameterString) || parameterMap == null) {
+ return parameterString;
+ }
+
+ //Get current time, schedule execute time
+ String cronTimeStr = parameterMap.get(Constants.PARAMETER_DATETIME);
+
+ Date cronTime = null;
+
+ if (StringUtils.isNotEmpty(cronTimeStr)) {
+ cronTime = DateUtils.parse(cronTimeStr, Constants.PARAMETER_FORMAT_TIME);
+ } else {
+ cronTime = new Date();
+ }
+
+ // replace variable ${} form,refers to the replacement of system variables and custom variables
+ parameterString = PlaceholderUtils.replacePlaceholders(parameterString, parameterMap, true);
+
+ // replace time $[...] form, eg. $[yyyyMMdd]
+ if (cronTime != null) {
+ parameterString = TimePlaceholderUtils.replacePlaceholders(parameterString, cronTime, true);
+ }
+
+ return parameterString;
}
- // replace variable ${} form,refers to the replacement of system variables and custom variables
- parameterString = PlaceholderUtils.replacePlaceholders(parameterString, parameterMap, true);
-
- // replace time $[...] form, eg. $[yyyyMMdd]
- if (cronTime != null) {
- parameterString = TimePlaceholderUtils.replacePlaceholders(parameterString, cronTime, true);
-
- }
- return parameterString;
- }
-
-
- /**
- * set in parameter
- * @param index index
- * @param stmt preparedstatement
- * @param dataType data type
- * @param value value
- * @throws Exception errors
- */
- public static void setInParameter(int index, PreparedStatement stmt, DataType dataType, String value)throws Exception{
- if (dataType.equals(DataType.VARCHAR)){
- stmt.setString(index,value);
- }else if (dataType.equals(DataType.INTEGER)){
- stmt.setInt(index, Integer.parseInt(value));
- }else if (dataType.equals(DataType.LONG)){
- stmt.setLong(index, Long.parseLong(value));
- }else if (dataType.equals(DataType.FLOAT)){
- stmt.setFloat(index, Float.parseFloat(value));
- }else if (dataType.equals(DataType.DOUBLE)){
- stmt.setDouble(index, Double.parseDouble(value));
- }else if (dataType.equals(DataType.DATE)){
- stmt.setDate(index, java.sql.Date.valueOf(value));
- }else if (dataType.equals(DataType.TIME)){
- stmt.setString(index, value);
- }else if (dataType.equals(DataType.TIMESTAMP)){
- stmt.setTimestamp(index, java.sql.Timestamp.valueOf(value));
- }else if (dataType.equals(DataType.BOOLEAN)){
- stmt.setBoolean(index,Boolean.parseBoolean(value));
- }
- }
-
- /**
- * curing user define parameters
- *
- * @param globalParamMap global param map
- * @param globalParamList global param list
- * @param commandType command type
- * @param scheduleTime schedule time
- * @return curing user define parameters
- */
- public static String curingGlobalParams(Map<String,String> globalParamMap, List<Property> globalParamList,
- CommandType commandType, Date scheduleTime){
-
- if (globalParamList == null || globalParamList.isEmpty()) {
- return null;
+ /**
+ * new
+ * convert parameters place holders
+ *
+ * @param parameterString parameter
+ * @param parameterMap parameter map
+ * @return convert parameters place holders
+ */
+ public static String convertParameterPlaceholders2(String parameterString, Map<String, String> parameterMap) {
+ if (StringUtils.isEmpty(parameterString)) {
+ return parameterString;
+ }
+ //Get current time, schedule execute time
+ String cronTimeStr = parameterMap.get(Constants.PARAMETER_SHECDULE_TIME);
+ Date cronTime = null;
+
+ if (StringUtils.isNotEmpty(cronTimeStr)) {
+ cronTime = DateUtils.parse(cronTimeStr, Constants.PARAMETER_FORMAT_TIME);
+
+ } else {
+ cronTime = new Date();
+ }
+
+ // replace variable ${} form,refers to the replacement of system variables and custom variables
+ parameterString = PlaceholderUtils.replacePlaceholders(parameterString, parameterMap, true);
+
+ // replace time $[...] form, eg. $[yyyyMMdd]
+ if (cronTime != null) {
+ parameterString = TimePlaceholderUtils.replacePlaceholders(parameterString, cronTime, true);
+
+ }
+ return parameterString;
}
- Map<String, String> globalMap = new HashMap<>();
- if (globalParamMap!= null){
- globalMap.putAll(globalParamMap);
+ /**
+ * set in parameter
+ *
+ * @param index index
+ * @param stmt preparedstatement
+ * @param dataType data type
+ * @param value value
+ * @throws Exception errors
+ */
+ public static void setInParameter(int index, PreparedStatement stmt, DataType dataType, String value) throws Exception {
+ if (dataType.equals(DataType.VARCHAR)) {
+ stmt.setString(index, value);
+ } else if (dataType.equals(DataType.INTEGER)) {
+ stmt.setInt(index, Integer.parseInt(value));
+ } else if (dataType.equals(DataType.LONG)) {
+ stmt.setLong(index, Long.parseLong(value));
+ } else if (dataType.equals(DataType.FLOAT)) {
+ stmt.setFloat(index, Float.parseFloat(value));
+ } else if (dataType.equals(DataType.DOUBLE)) {
+ stmt.setDouble(index, Double.parseDouble(value));
+ } else if (dataType.equals(DataType.DATE)) {
+ stmt.setDate(index, java.sql.Date.valueOf(value));
+ } else if (dataType.equals(DataType.TIME)) {
+ stmt.setString(index, value);
+ } else if (dataType.equals(DataType.TIMESTAMP)) {
+ stmt.setTimestamp(index, java.sql.Timestamp.valueOf(value));
+ } else if (dataType.equals(DataType.BOOLEAN)) {
+ stmt.setBoolean(index, Boolean.parseBoolean(value));
+ }
}
- Map<String,String> allParamMap = new HashMap<>();
- //If it is a complement, a complement time needs to be passed in, according to the task type
- Map<String,String> timeParams = BusinessTimeUtils
- .getBusinessTime(commandType, scheduleTime);
- if (timeParams != null) {
- allParamMap.putAll(timeParams);
+ /**
+ * curing user define parameters
+ *
+ * @param globalParamMap global param map
+ * @param globalParamList global param list
+ * @param commandType command type
+ * @param scheduleTime schedule time
+ * @return curing user define parameters
+ */
+ public static String curingGlobalParams(Map<String, String> globalParamMap, List<Property> globalParamList,
+ CommandType commandType, Date scheduleTime) {
+
+ if (globalParamList == null || globalParamList.isEmpty()) {
+ return null;
+ }
+
+ Map<String, String> globalMap = new HashMap<>();
+ if (globalParamMap != null) {
+ globalMap.putAll(globalParamMap);
+ }
+ Map<String, String> allParamMap = new HashMap<>();
+ //If it is a complement, a complement time needs to be passed in, according to the task type
+ Map<String, String> timeParams = BusinessTimeUtils
+ .getBusinessTime(commandType, scheduleTime);
+
+ if (timeParams != null) {
+ allParamMap.putAll(timeParams);
+ }
+
+ allParamMap.putAll(globalMap);
+
+ Set<Map.Entry<String, String>> entries = allParamMap.entrySet();
+
+ Map<String, String> resolveMap = new HashMap<>();
+ for (Map.Entry<String, String> entry : entries) {
+ String val = entry.getValue();
+ if (val.startsWith("$")) {
+ String str = ParameterUtils.convertParameterPlaceholders(val, allParamMap);
+ resolveMap.put(entry.getKey(), str);
+ }
+ }
+ globalMap.putAll(resolveMap);
+
+ for (Property property : globalParamList) {
+ String val = globalMap.get(property.getProp());
+ if (val != null) {
+ property.setValue(val);
+ }
+ }
+ return JSONUtils.toJsonString(globalParamList);
}
- allParamMap.putAll(globalMap);
-
- Set<Map.Entry<String, String>> entries = allParamMap.entrySet();
-
- Map<String,String> resolveMap = new HashMap<>();
- for (Map.Entry<String,String> entry : entries){
- String val = entry.getValue();
- if (val.startsWith("$")){
- String str = ParameterUtils.convertParameterPlaceholders(val, allParamMap);
- resolveMap.put(entry.getKey(),str);
- }
+ /**
+ * handle escapes
+ *
+ * @param inputString input string
+ * @return string filter escapes
+ */
+ public static String handleEscapes(String inputString) {
+
+ if (StringUtils.isNotEmpty(inputString)) {
+ return inputString.replace("%", "////%").replaceAll("[\n|\r\t]", "_");
+ }
+ return inputString;
}
- globalMap.putAll(resolveMap);
- for (Property property : globalParamList){
- String val = globalMap.get(property.getProp());
- if (val != null){
- property.setValue(val);
- }
+ /**
+ * $[yyyyMMdd] replace schedule time
+ */
+ public static String replaceScheduleTime(String text, Date scheduleTime) {
+ Map<String, Property> paramsMap = new HashMap<>();
+ //if getScheduleTime null ,is current date
+ if (null == scheduleTime) {
+ scheduleTime = new Date();
+ }
+
+ String dateTime = org.apache.dolphinscheduler.common.utils.DateUtils.format(scheduleTime, Constants.PARAMETER_FORMAT_TIME);
+ Property p = new Property();
+ p.setValue(dateTime);
+ p.setProp(Constants.PARAMETER_SHECDULE_TIME);
+ paramsMap.put(Constants.PARAMETER_SHECDULE_TIME, p);
+ text = ParameterUtils.convertParameterPlaceholders2(text, convert(paramsMap));
+
+ return text;
}
- return JSONUtils.toJsonString(globalParamList);
- }
-
- /**
- * handle escapes
- * @param inputString input string
- * @return string filter escapes
- */
- public static String handleEscapes(String inputString){
-
- if(StringUtils.isNotEmpty(inputString)){
- return inputString.replace("%", "////%").replaceAll("[\n|\r\t]", "_");
- }
- return inputString;
- }
-
-
- /**
- * $[yyyyMMdd] replace schedule time
- * @param text
- * @param scheduleTime
- * @return
- */
- public static String replaceScheduleTime(String text, Date scheduleTime) {
- Map<String, Property> paramsMap = new HashMap<>();
- //if getScheduleTime null ,is current date
- if (null == scheduleTime) {
- scheduleTime = new Date();
- }
-
- String dateTime = org.apache.dolphinscheduler.common.utils.DateUtils.format(scheduleTime, Constants.PARAMETER_FORMAT_TIME);
- Property p = new Property();
- p.setValue(dateTime);
- p.setProp(Constants.PARAMETER_SHECDULE_TIME);
- paramsMap.put(Constants.PARAMETER_SHECDULE_TIME, p);
- text = ParameterUtils.convertParameterPlaceholders2(text, convert(paramsMap));
-
- return text;
- }
-
-
- /**
- * format convert
- * @param paramsMap params map
- * @return Map of converted
- * see org.apache.dolphinscheduler.server.utils.ParamUtils.convert
- */
- public static Map<String,String> convert(Map<String,Property> paramsMap){
- Map<String,String> map = new HashMap<>();
- Iterator<Map.Entry<String, Property>> iter = paramsMap.entrySet().iterator();
- while (iter.hasNext()){
- Map.Entry<String, Property> en = iter.next();
- map.put(en.getKey(),en.getValue().getValue());
+ /**
+ * format convert
+ *
+ * @param paramsMap params map
+ * @return Map of converted
+ * see org.apache.dolphinscheduler.server.utils.ParamUtils.convert
+ */
+ public static Map<String, String> convert(Map<String, Property> paramsMap) {
+ Map<String, String> map = new HashMap<>();
+ Iterator<Map.Entry<String, Property>> iter = paramsMap.entrySet().iterator();
+ while (iter.hasNext()) {
+ Map.Entry<String, Property> en = iter.next();
+ map.put(en.getKey(), en.getValue().getValue());
+ }
+ return map;
}
- return map;
- }
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/Preconditions.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/Preconditions.java
index 1fe40b9..9db2852 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/Preconditions.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/Preconditions.java
@@ -14,16 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dolphinscheduler.common.utils;
+package org.apache.dolphinscheduler.common.utils;
/**
- * utility methods for validating input
- *
+ * utility methods for validating input
*/
public final class Preconditions {
- private Preconditions() {}
+ private Preconditions() {
+ throw new UnsupportedOperationException("Construct Preconditions");
+ }
/**
* if obj is null will throw NPE
@@ -41,32 +42,30 @@ public final class Preconditions {
/**
* if obj is null will throw NullPointerException with error message
+ *
* @param obj obj
* @param errorMsg error message
* @param <T> T
* @return T
*/
- public static <T> T checkNotNull(T obj, String errorMsg) {
+ public static <T> T checkNotNull(T obj, String errorMsg) {
if (obj == null) {
throw new NullPointerException(errorMsg);
}
return obj;
}
-
/**
* if condition is false will throw an IllegalArgumentException with the given message
*
* @param condition condition
- * @param errorMsg error message
- *
+ * @param errorMsg error message
* @throws IllegalArgumentException Thrown, if the condition is violated.
*/
- public static void checkArgument(boolean condition, Object errorMsg) {
+ public static void checkArgument(boolean condition, Object errorMsg) {
if (!condition) {
throw new IllegalArgumentException(String.valueOf(errorMsg));
}
}
-
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/PropertyUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/PropertyUtils.java
index 8952707..9edf793 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/PropertyUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/PropertyUtils.java
@@ -14,13 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
+import static org.apache.dolphinscheduler.common.Constants.COMMON_PROPERTIES_PATH;
+
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.ResUploadType;
+
import org.apache.commons.io.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
@@ -28,7 +30,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
-import static org.apache.dolphinscheduler.common.Constants.COMMON_PROPERTIES_PATH;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* property utils
@@ -44,7 +47,7 @@ public class PropertyUtils {
private static final Properties properties = new Properties();
private PropertyUtils() {
- throw new IllegalStateException("PropertyUtils class");
+ throw new UnsupportedOperationException("Construct PropertyUtils");
}
static {
@@ -68,10 +71,9 @@ public class PropertyUtils {
}
/**
- *
- * @return judge whether resource upload startup
+ * @return judge whether resource upload startup
*/
- public static Boolean getResUploadStartupState(){
+ public static Boolean getResUploadStartupState() {
String resUploadStartupType = PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE);
ResUploadType resUploadType = ResUploadType.valueOf(resUploadStartupType);
return resUploadType == ResUploadType.HDFS || resUploadType == ResUploadType.S3;
@@ -113,14 +115,13 @@ public class PropertyUtils {
* get property value
*
* @param key property name
- * @return get property int value , if key == null, then return -1
+ * @return get property int value , if key == null, then return -1
*/
public static int getInt(String key) {
return getInt(key, -1);
}
/**
- *
* @param key key
* @param defaultValue default value
* @return property value
@@ -134,7 +135,7 @@ public class PropertyUtils {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
- logger.info(e.getMessage(),e);
+ logger.info(e.getMessage(), e);
}
return defaultValue;
}
@@ -147,7 +148,7 @@ public class PropertyUtils {
*/
public static boolean getBoolean(String key) {
String value = properties.getProperty(key.trim());
- if(null != value){
+ if (null != value) {
return Boolean.parseBoolean(value);
}
@@ -163,7 +164,7 @@ public class PropertyUtils {
*/
public static Boolean getBoolean(String key, boolean defaultValue) {
String value = properties.getProperty(key.trim());
- if(null != value){
+ if (null != value) {
return Boolean.parseBoolean(value);
}
@@ -172,6 +173,7 @@ public class PropertyUtils {
/**
* get property long value
+ *
* @param key key
* @param defaultVal default value
* @return property value
@@ -182,16 +184,14 @@ public class PropertyUtils {
}
/**
- *
* @param key key
* @return property value
*/
public static long getLong(String key) {
- return getLong(key,-1);
+ return getLong(key, -1);
}
/**
- *
* @param key key
* @param defaultVal default value
* @return property value
@@ -201,11 +201,11 @@ public class PropertyUtils {
return val == null ? defaultVal : Double.parseDouble(val);
}
-
/**
- * get array
- * @param key property name
- * @param splitStr separator
+ * get array
+ *
+ * @param key property name
+ * @param splitStr separator
* @return property value through array
*/
public static String[] getArray(String key, String splitStr) {
@@ -217,18 +217,17 @@ public class PropertyUtils {
String[] propertyArray = value.split(splitStr);
return propertyArray;
} catch (NumberFormatException e) {
- logger.info(e.getMessage(),e);
+ logger.info(e.getMessage(), e);
}
return new String[0];
}
/**
- *
* @param key key
* @param type type
* @param defaultValue default value
* @param <T> T
- * @return get enum value
+ * @return get enum value
*/
public <T extends Enum<T>> T getEnum(String key, Class<T> type,
T defaultValue) {
@@ -238,6 +237,7 @@ public class PropertyUtils {
/**
* get all properties with specified prefix, like: fs.
+ *
* @param prefix prefix to search
* @return all properties with specified prefix
*/
@@ -253,11 +253,9 @@ public class PropertyUtils {
/**
*
- * @param key
- * @param value
*/
public static void setValue(String key, String value) {
- properties.setProperty(key,value);
+ properties.setProperty(key, value);
}
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/RetryerUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/RetryerUtils.java
index a3a9358..23861c7 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/RetryerUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/RetryerUtils.java
@@ -17,15 +17,21 @@
package org.apache.dolphinscheduler.common.utils;
-import com.github.rholder.retry.*;
import org.apache.dolphinscheduler.common.Constants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.github.rholder.retry.RetryException;
+import com.github.rholder.retry.Retryer;
+import com.github.rholder.retry.RetryerBuilder;
+import com.github.rholder.retry.StopStrategies;
+import com.github.rholder.retry.WaitStrategies;
+
/**
* The Retryer util.
*/
@@ -35,7 +41,7 @@ public class RetryerUtils {
private static Retryer<Boolean> defaultRetryerResultNoCheck;
private RetryerUtils() {
-
+ throw new UnsupportedOperationException("Construct RetryerUtils");
}
private static Retryer<Boolean> getDefaultRetryerResultNoCheck() {
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
index 312421a..bbcd9fe 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SchemaUtils.java
@@ -14,10 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dolphinscheduler.common.utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+package org.apache.dolphinscheduler.common.utils;
import java.io.File;
import java.io.FileInputStream;
@@ -29,113 +27,123 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* Metadata related common classes
- *
*/
public class SchemaUtils {
- private static final Logger logger = LoggerFactory.getLogger(SchemaUtils.class);
- private static Pattern p = Pattern.compile("\\s*|\t|\r|\n");
-
- /**
- * Gets upgradable schemas for all upgrade directories
- * @return all schema list
- */
- @SuppressWarnings("unchecked")
- public static List<String> getAllSchemaList() {
- List<String> schemaDirList = new ArrayList<>();
- File[] schemaDirArr = FileUtils.getAllDir("sql/upgrade");
- if(schemaDirArr == null || schemaDirArr.length == 0) {
- return null;
- }
-
- for(File file : schemaDirArr) {
- schemaDirList.add(file.getName());
- }
-
- Collections.sort(schemaDirList , new Comparator() {
- @Override
- public int compare(Object o1 , Object o2){
- try {
- String dir1 = String.valueOf(o1);
- String dir2 = String.valueOf(o2);
- String version1 = dir1.split("_")[0];
- String version2 = dir2.split("_")[0];
- if(version1.equals(version2)) {
- return 0;
- }
-
- if(SchemaUtils.isAGreatVersion(version1, version2)) {
- return 1;
- }
-
- return -1;
-
- } catch (Exception e) {
- logger.error(e.getMessage(),e);
- throw new RuntimeException(e);
- }
- }
- });
-
- return schemaDirList;
- }
-
- /**
- * Determine whether schemaVersion is higher than version
- * @param schemaVersion schema version
- * @param version version
- * @return Determine whether schemaVersion is higher than version
- */
- public static boolean isAGreatVersion(String schemaVersion, String version) {
- if(StringUtils.isEmpty(schemaVersion) || StringUtils.isEmpty(version)) {
- throw new RuntimeException("schemaVersion or version is empty");
- }
-
- String[] schemaVersionArr = schemaVersion.split("\\.");
- String[] versionArr = version.split("\\.");
- int arrLength = Math.min(schemaVersionArr.length, versionArr.length);
- for(int i = 0 ; i < arrLength ; i++) {
- if(Integer.parseInt(schemaVersionArr[i]) > Integer.parseInt(versionArr[i])) {
- return true;
- }else if(Integer.parseInt(schemaVersionArr[i]) < Integer.parseInt(versionArr[i])) {
- return false;
- }
- }
-
- // If the version and schema version is the same from 0 up to the arrlength-1 element,whoever has a larger arrLength has a larger version number
- return schemaVersionArr.length > versionArr.length;
- }
-
- /**
- * Gets the current software version number of the system
- * @return current software version
- */
- public static String getSoftVersion() {
- String soft_version;
- try {
- soft_version = FileUtils.readFile2Str(new FileInputStream(new File("sql/soft_version")));
- soft_version = replaceBlank(soft_version);
- } catch (FileNotFoundException e) {
- logger.error(e.getMessage(),e);
- throw new RuntimeException("Failed to get the product version description file. The file could not be found", e);
- }
- return soft_version;
- }
-
- /**
- * Strips the string of space carriage returns and tabs
- * @param str string
- * @return string removed blank
- */
- public static String replaceBlank(String str) {
- String dest = "";
- if (str!=null) {
-
- Matcher m = p.matcher(str);
- dest = m.replaceAll("");
- }
- return dest;
- }
+ private static final Logger logger = LoggerFactory.getLogger(SchemaUtils.class);
+ private static Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+
+ private SchemaUtils() {
+ throw new UnsupportedOperationException("Construct SchemaUtils");
+ }
+
+ /**
+ * Gets upgradable schemas for all upgrade directories
+ *
+ * @return all schema list
+ */
+ @SuppressWarnings("unchecked")
+ public static List<String> getAllSchemaList() {
+ List<String> schemaDirList = new ArrayList<>();
+ File[] schemaDirArr = FileUtils.getAllDir("sql/upgrade");
+ if (schemaDirArr == null || schemaDirArr.length == 0) {
+ return null;
+ }
+
+ for (File file : schemaDirArr) {
+ schemaDirList.add(file.getName());
+ }
+
+ Collections.sort(schemaDirList, new Comparator() {
+ @Override
+ public int compare(Object o1, Object o2) {
+ try {
+ String dir1 = String.valueOf(o1);
+ String dir2 = String.valueOf(o2);
+ String version1 = dir1.split("_")[0];
+ String version2 = dir2.split("_")[0];
+ if (version1.equals(version2)) {
+ return 0;
+ }
+
+ if (SchemaUtils.isAGreatVersion(version1, version2)) {
+ return 1;
+ }
+
+ return -1;
+
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ throw new RuntimeException(e);
+ }
+ }
+ });
+
+ return schemaDirList;
+ }
+
+ /**
+ * Determine whether schemaVersion is higher than version
+ *
+ * @param schemaVersion schema version
+ * @param version version
+ * @return Determine whether schemaVersion is higher than version
+ */
+ public static boolean isAGreatVersion(String schemaVersion, String version) {
+ if (StringUtils.isEmpty(schemaVersion) || StringUtils.isEmpty(version)) {
+ throw new RuntimeException("schemaVersion or version is empty");
+ }
+
+ String[] schemaVersionArr = schemaVersion.split("\\.");
+ String[] versionArr = version.split("\\.");
+ int arrLength = Math.min(schemaVersionArr.length, versionArr.length);
+ for (int i = 0; i < arrLength; i++) {
+ if (Integer.parseInt(schemaVersionArr[i]) > Integer.parseInt(versionArr[i])) {
+ return true;
+ } else if (Integer.parseInt(schemaVersionArr[i]) < Integer.parseInt(versionArr[i])) {
+ return false;
+ }
+ }
+
+ // If the version and schema version is the same from 0 up to the arrlength-1 element,whoever has a larger arrLength has a larger version number
+ return schemaVersionArr.length > versionArr.length;
+ }
+
+ /**
+ * Gets the current software version number of the system
+ *
+ * @return current software version
+ */
+ public static String getSoftVersion() {
+ String softVersion;
+ try {
+ softVersion = FileUtils.readFile2Str(new FileInputStream(new File("sql/soft_version")));
+ softVersion = replaceBlank(softVersion);
+ } catch (FileNotFoundException e) {
+ logger.error(e.getMessage(), e);
+ throw new RuntimeException("Failed to get the product version description file. The file could not be found", e);
+ }
+ return softVersion;
+ }
+
+ /**
+ * Strips the string of space carriage returns and tabs
+ *
+ * @param str string
+ * @return string removed blank
+ */
+ public static String replaceBlank(String str) {
+ String dest = "";
+ if (str != null) {
+
+ Matcher m = p.matcher(str);
+ dest = m.replaceAll("");
+ }
+ return dest;
+ }
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SensitiveLogUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SensitiveLogUtils.java
index eab6c4f..5706c38 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SensitiveLogUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SensitiveLogUtils.java
@@ -14,21 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
-import org.apache.commons.lang.StringUtils;
import org.apache.dolphinscheduler.common.Constants;
/**
- * sensitive log Util
+ * sensitive log Util
*/
public class SensitiveLogUtils {
+ private SensitiveLogUtils() {
+ throw new UnsupportedOperationException("Construct SensitiveLogUtils");
+ }
+
/**
* @param dataSourcePwd data source password
* @return String
*/
- public static String maskDataSourcePwd(String dataSourcePwd){
+ public static String maskDataSourcePwd(String dataSourcePwd) {
if (StringUtils.isNotEmpty(dataSourcePwd)) {
dataSourcePwd = Constants.PASSWORD_DEFAULT;
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/StreamUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/StreamUtils.java
index f30638c..fb4941a 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/StreamUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/StreamUtils.java
@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
import java.util.Iterator;
@@ -22,7 +23,9 @@ import java.util.stream.StreamSupport;
public class StreamUtils {
- private StreamUtils() { }
+ private StreamUtils() {
+ throw new UnsupportedOperationException("Construct StreamUtils");
+ }
public static <T> Stream<T> asStream(Iterator<T> sourceIterator) {
return asStream(sourceIterator, false);
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 45321a5..4f4f127 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
@@ -14,11 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
public class StringUtils {
+
public static final String EMPTY = "";
+ private StringUtils() {
+ throw new UnsupportedOperationException("Construct StringUtils");
+ }
+
public static boolean isEmpty(final CharSequence cs) {
return cs == null || cs.length() == 0;
}
@@ -27,18 +33,18 @@ public class StringUtils {
return !isEmpty(cs);
}
- public static boolean isBlank(String s){
+ public static boolean isBlank(String s) {
if (isEmpty(s)) {
return true;
}
return s.trim().length() == 0;
}
- public static boolean isNotBlank(String s){
+ public static boolean isNotBlank(String s) {
return !isBlank(s);
}
- public static String replaceNRTtoUnderline(String src){
+ public static String replaceNRTtoUnderline(String src) {
return src.replaceAll("[\n|\r|\t]", "_");
}
}
diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtils.java
index 84cca93..6099a0d 100644
--- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtils.java
+++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/TaskParametersUtils.java
@@ -14,13 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.dolphinscheduler.common.utils;
import org.apache.dolphinscheduler.common.enums.TaskType;
import org.apache.dolphinscheduler.common.task.AbstractParameters;
import org.apache.dolphinscheduler.common.task.conditions.ConditionsParameters;
-import org.apache.dolphinscheduler.common.task.dependent.DependentParameters;
import org.apache.dolphinscheduler.common.task.datax.DataxParameters;
+import org.apache.dolphinscheduler.common.task.dependent.DependentParameters;
import org.apache.dolphinscheduler.common.task.flink.FlinkParameters;
import org.apache.dolphinscheduler.common.task.http.HttpParameters;
import org.apache.dolphinscheduler.common.task.mr.MapreduceParameters;
@@ -31,60 +32,65 @@ import org.apache.dolphinscheduler.common.task.spark.SparkParameters;
import org.apache.dolphinscheduler.common.task.sql.SqlParameters;
import org.apache.dolphinscheduler.common.task.sqoop.SqoopParameters;
import org.apache.dolphinscheduler.common.task.subprocess.SubProcessParameters;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
/**
* task parameters utils
*/
public class TaskParametersUtils {
- private static Logger logger = LoggerFactory.getLogger(TaskParametersUtils.class);
+ private static Logger logger = LoggerFactory.getLogger(TaskParametersUtils.class);
+
+ private TaskParametersUtils() {
+ throw new UnsupportedOperationException("Construct TaskParametersUtils");
+ }
- /**
- * get task parameters
- * @param taskType task type
- * @param parameter parameter
- * @return task parameters
- */
- public static AbstractParameters getParameters(String taskType, String parameter) {
- try {
- switch (EnumUtils.getEnum(TaskType.class,taskType)) {
- case SUB_PROCESS:
- return JSONUtils.parseObject(parameter, SubProcessParameters.class);
- case WATERDROP:
- return JSONUtils.parseObject(parameter, ShellParameters.class);
- case SHELL:
- return JSONUtils.parseObject(parameter, ShellParameters.class);
- case PROCEDURE:
- return JSONUtils.parseObject(parameter, ProcedureParameters.class);
- case SQL:
- return JSONUtils.parseObject(parameter, SqlParameters.class);
- case MR:
- return JSONUtils.parseObject(parameter, MapreduceParameters.class);
- case SPARK:
- return JSONUtils.parseObject(parameter, SparkParameters.class);
- case PYTHON:
- return JSONUtils.parseObject(parameter, PythonParameters.class);
- case DEPENDENT:
- return JSONUtils.parseObject(parameter, DependentParameters.class);
- case FLINK:
- return JSONUtils.parseObject(parameter, FlinkParameters.class);
- case HTTP:
- return JSONUtils.parseObject(parameter, HttpParameters.class);
- case DATAX:
- return JSONUtils.parseObject(parameter, DataxParameters.class);
- case CONDITIONS:
- return JSONUtils.parseObject(parameter, ConditionsParameters.class);
- case SQOOP:
- return JSONUtils.parseObject(parameter, SqoopParameters.class);
- default:
- return null;
- }
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
+ /**
+ * get task parameters
+ *
+ * @param taskType task type
+ * @param parameter parameter
+ * @return task parameters
+ */
+ public static AbstractParameters getParameters(String taskType, String parameter) {
+ try {
+ switch (EnumUtils.getEnum(TaskType.class, taskType)) {
+ case SUB_PROCESS:
+ return JSONUtils.parseObject(parameter, SubProcessParameters.class);
+ case WATERDROP:
+ return JSONUtils.parseObject(parameter, ShellParameters.class);
+ case SHELL:
+ return JSONUtils.parseObject(parameter, ShellParameters.class);
+ case PROCEDURE:
+ return JSONUtils.parseObject(parameter, ProcedureParameters.class);
+ case SQL:
+ return JSONUtils.parseObject(parameter, SqlParameters.class);
+ case MR:
+ return JSONUtils.parseObject(parameter, MapreduceParameters.class);
+ case SPARK:
+ return JSONUtils.parseObject(parameter, SparkParameters.class);
+ case PYTHON:
+ return JSONUtils.parseObject(parameter, PythonParameters.class);
+ case DEPENDENT:
+ return JSONUtils.parseObject(parameter, DependentParameters.class);
+ case FLINK:
+ return JSONUtils.parseObject(parameter, FlinkParameters.class);
+ case HTTP:
+ return JSONUtils.parseObject(parameter, HttpParameters.class);
+ case DATAX:
+ return JSONUtils.parseObject(parameter, DataxParameters.class);
+ case CONDITIONS:
+ return JSONUtils.parseObject(parameter, ConditionsParameters.class);
+ case SQOOP:
+ return JSONUtils.parseObject(parameter, SqoopParameters.class);
+ default:
+ return null;
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ return null;
}
- return null;
- }
}