This is an automated email from the ASF dual-hosted git repository.
wuchunfu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/seatunnel-web.git
The following commit(s) were added to refs/heads/main by this push:
new 6cd2d7c8 [Improve][SeaTunnel-Web] Unified use of JSONUtils (#214)
6cd2d7c8 is described below
commit 6cd2d7c8fdb67416d84ddbfd59a0ba56fb3d686b
Author: ChunFuWu <[email protected]>
AuthorDate: Sat Sep 14 16:45:46 2024 +0800
[Improve][SeaTunnel-Web] Unified use of JSONUtils (#214)
---
.../plugin/elasticsearch/client/EsRestClient.java | 23 +-
.../starrocks/StarRocksDataSourceChannel.java | 7 +-
.../controller/SeatunnelDatasourceController.java | 8 +-
.../app/dal/entity/ProcessTaskRelation.java | 11 +-
.../seatunnel/app/dal/entity/TaskDefinition.java | 29 +-
.../app/dal/entity/TaskDefinitionExpand.java | 12 +-
.../app/parameters/AbstractParameters.java | 14 +-
.../app/parameters/resource/UdfFuncParameters.java | 4 +-
.../app/service/impl/JobConfigServiceImpl.java | 22 +-
.../app/service/impl/JobDefinitionServiceImpl.java | 18 +-
.../app/service/impl/JobInstanceServiceImpl.java | 66 ++--
.../app/service/impl/JobMetricsServiceImpl.java | 18 +-
.../app/service/impl/JobTaskServiceImpl.java | 25 +-
.../engine/SeaTunnelEngineMetricsExtractor.java | 9 +-
.../org/apache/seatunnel/app/utils/JSONUtils.java | 396 ---------------------
.../seatunnel/app/utils/TaskOptionUtils.java | 10 +-
.../app/common/SeatunnelWebTestingBase.java | 7 +-
.../app/controller/ConnectorControllerWrapper.java | 12 +-
.../app/controller/JobConfigControllerWrapper.java | 4 +-
.../app/controller/JobControllerWrapper.java | 6 +-
.../controller/JobDefinitionControllerWrapper.java | 4 +-
.../controller/JobExecutorControllerWrapper.java | 4 +-
.../app/controller/JobTaskControllerWrapper.java | 17 +-
.../SeatunnelDatasourceControllerWrapper.java | 8 +-
.../controller/TaskInstanceControllerWrapper.java | 2 +-
.../app/controller/UserControllerWrapper.java | 6 +-
.../seatunnel/app/utils/JobTestingUtils.java | 5 +-
27 files changed, 143 insertions(+), 604 deletions(-)
diff --git
a/seatunnel-datasource/seatunnel-datasource-plugins/datasource-elasticsearch/src/main/java/org/apache/seatunnel/datasource/plugin/elasticsearch/client/EsRestClient.java
b/seatunnel-datasource/seatunnel-datasource-plugins/datasource-elasticsearch/src/main/java/org/apache/seatunnel/datasource/plugin/elasticsearch/client/EsRestClient.java
index 4de06bf4..01d20bb2 100644
---
a/seatunnel-datasource/seatunnel-datasource-plugins/datasource-elasticsearch/src/main/java/org/apache/seatunnel/datasource/plugin/elasticsearch/client/EsRestClient.java
+++
b/seatunnel-datasource/seatunnel-datasource-plugins/datasource-elasticsearch/src/main/java/org/apache/seatunnel/datasource/plugin/elasticsearch/client/EsRestClient.java
@@ -18,7 +18,6 @@
package org.apache.seatunnel.datasource.plugin.elasticsearch.client;
import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.JsonNode;
-import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.ObjectMapper;
import
org.apache.seatunnel.shade.com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.seatunnel.shade.com.typesafe.config.Config;
@@ -62,8 +61,6 @@ public class EsRestClient implements AutoCloseable {
private final RestClient restClient;
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
private EsRestClient(RestClient restClient) {
this.restClient = restClient;
}
@@ -71,9 +68,9 @@ public class EsRestClient implements AutoCloseable {
public static EsRestClient createInstance(Config pluginConfig) {
try {
List<String> hosts =
- OBJECT_MAPPER.readValue(
+ JsonUtils.toList(
pluginConfig.getString(ElasticSearchOptionRule.HOSTS.key()),
- List.class);
+ String.class);
Optional<String> username = Optional.empty();
Optional<String> password = Optional.empty();
if (pluginConfig.hasPath(ElasticSearchOptionRule.USERNAME.key())) {
@@ -209,7 +206,7 @@ public class EsRestClient implements AutoCloseable {
keystorePassword,
truststorePath,
truststorePassword);
- sslContext.ifPresent(e ->
httpClientBuilder.setSSLContext(e));
+
sslContext.ifPresent(httpClientBuilder::setSSLContext);
} else {
SSLContext sslContext =
SSLContexts.custom()
@@ -233,15 +230,13 @@ public class EsRestClient implements AutoCloseable {
try {
Response response = restClient.performRequest(request);
String result = EntityUtils.toString(response.getEntity());
- ObjectMapper objectMapper = new ObjectMapper();
- JsonNode jsonNode = objectMapper.readTree(result);
- JsonNode versionNode = jsonNode.get("version");
+ String version =
JsonUtils.findValue(JsonUtils.stringToJsonNode(result), "version");
+ String number =
JsonUtils.findValue(JsonUtils.stringToJsonNode(version), "number");
+ String distribution =
+ JsonUtils.findValue(JsonUtils.stringToJsonNode(version),
"distribution");
return ElasticsearchClusterInfo.builder()
- .clusterVersion(versionNode.get("number").asText())
- .distribution(
-
Optional.ofNullable(versionNode.get("distribution"))
- .map(JsonNode::asText)
- .orElse(null))
+ .clusterVersion(number)
+
.distribution(Optional.ofNullable(distribution).orElse(null))
.build();
} catch (IOException e) {
throw new ResponseException("fail to get elasticsearch version.",
e);
diff --git
a/seatunnel-datasource/seatunnel-datasource-plugins/datasource-starrocks/src/main/java/org/apache/seatunnel/datasource/plugin/starrocks/StarRocksDataSourceChannel.java
b/seatunnel-datasource/seatunnel-datasource-plugins/datasource-starrocks/src/main/java/org/apache/seatunnel/datasource/plugin/starrocks/StarRocksDataSourceChannel.java
index 9ae74fff..af385bbc 100644
---
a/seatunnel-datasource/seatunnel-datasource-plugins/datasource-starrocks/src/main/java/org/apache/seatunnel/datasource/plugin/starrocks/StarRocksDataSourceChannel.java
+++
b/seatunnel-datasource/seatunnel-datasource-plugins/datasource-starrocks/src/main/java/org/apache/seatunnel/datasource/plugin/starrocks/StarRocksDataSourceChannel.java
@@ -17,10 +17,9 @@
package org.apache.seatunnel.datasource.plugin.starrocks;
-import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.ObjectMapper;
-
import org.apache.seatunnel.api.configuration.util.OptionRule;
import org.apache.seatunnel.api.table.catalog.TablePath;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.seatunnel.datasource.plugin.api.DataSourceChannel;
import org.apache.seatunnel.datasource.plugin.api.DataSourcePluginException;
import org.apache.seatunnel.datasource.plugin.api.model.TableField;
@@ -41,8 +40,6 @@ public class StarRocksDataSourceChannel implements
DataSourceChannel {
private static final Logger LOGGER =
LoggerFactory.getLogger(StarRocksDataSourceChannel.class);
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
@Override
public boolean canAbleGetSchema() {
return true;
@@ -81,7 +78,7 @@ public class StarRocksDataSourceChannel implements
DataSourceChannel {
try {
StarRocksCatalog catalog = getCatalog(requestParams);
String nodeUrls =
requestParams.get(StarRocksOptionRule.NODE_URLS.key());
- List<String> nodeList = OBJECT_MAPPER.readValue(nodeUrls,
List.class);
+ List<String> nodeList = JsonUtils.toList(nodeUrls, String.class);
if (!telnet(nodeList.get(0))) {
return false;
}
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/SeatunnelDatasourceController.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/SeatunnelDatasourceController.java
index bb682312..37746b96 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/SeatunnelDatasourceController.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/SeatunnelDatasourceController.java
@@ -31,8 +31,8 @@ import
org.apache.seatunnel.app.domain.response.datasource.DatasourceDetailRes;
import org.apache.seatunnel.app.domain.response.datasource.DatasourceRes;
import org.apache.seatunnel.app.service.IDatasourceService;
import org.apache.seatunnel.app.utils.CartesianProductUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
import org.apache.seatunnel.app.utils.PropertyUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.seatunnel.datasource.plugin.api.DataSourcePluginInfo;
import org.apache.seatunnel.datasource.plugin.api.model.TableField;
import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
@@ -116,7 +116,7 @@ public class SeatunnelDatasourceController extends
BaseController {
@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser,
@RequestBody DatasourceReq req) {
String datasourceConfig = req.getDatasourceConfig();
- Map<String, String> stringStringMap =
JSONUtils.toMap(datasourceConfig);
+ Map<String, String> stringStringMap =
JsonUtils.toMap(datasourceConfig);
return Result.success(
datasourceService.createDatasource(
loginUser.getId(),
@@ -146,8 +146,6 @@ public class SeatunnelDatasourceController extends
BaseController {
Result<Boolean> testConnect(
@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser,
@RequestBody DatasourceCheckReq req) {
-
- // Map<String, String> stringStringMap =
JSONUtils.toMap(req.getDatasourceConfig());
return Result.success(
datasourceService.testDatasourceConnectionAble(
loginUser.getId(),
@@ -182,7 +180,7 @@ public class SeatunnelDatasourceController extends
BaseController {
@ApiIgnore @RequestAttribute(value = SESSION_USER) User loginUser,
@PathVariable("id") String id,
@RequestBody DatasourceReq req) {
- Map<String, String> stringStringMap =
JSONUtils.toMap(req.getDatasourceConfig());
+ Map<String, String> stringStringMap =
JsonUtils.toMap(req.getDatasourceConfig());
Long datasourceId = Long.parseLong(id);
return Result.success(
datasourceService.updateDatasource(
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/ProcessTaskRelation.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/ProcessTaskRelation.java
index be19c9b0..19c6e115 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/ProcessTaskRelation.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/ProcessTaskRelation.java
@@ -17,14 +17,15 @@
package org.apache.seatunnel.app.dal.entity;
+import
org.apache.seatunnel.shade.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import
org.apache.seatunnel.shade.com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
import org.apache.seatunnel.app.common.ConditionType;
-import org.apache.seatunnel.app.utils.JSONUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import java.util.Date;
@@ -66,8 +67,8 @@ public class ProcessTaskRelation {
private ConditionType conditionType;
/** condition parameters */
- @JsonDeserialize(using = JSONUtils.JsonDataDeserializer.class)
- @JsonSerialize(using = JSONUtils.JsonDataSerializer.class)
+ @JsonDeserialize(using = JsonUtils.JsonDataDeserializer.class)
+ @JsonSerialize(using = JsonUtils.JsonDataSerializer.class)
private String conditionParams;
/** create time */
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/TaskDefinition.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/TaskDefinition.java
index a56b6c6c..41c26830 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/TaskDefinition.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/TaskDefinition.java
@@ -17,13 +17,18 @@
package org.apache.seatunnel.app.dal.entity;
+import
org.apache.seatunnel.shade.com.fasterxml.jackson.core.JsonProcessingException;
+import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.JsonNode;
+import
org.apache.seatunnel.shade.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import
org.apache.seatunnel.shade.com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
import org.apache.seatunnel.app.common.Constants;
import org.apache.seatunnel.app.common.Flag;
import org.apache.seatunnel.app.common.Priority;
import org.apache.seatunnel.app.common.TaskTimeoutStrategy;
import org.apache.seatunnel.app.common.TimeoutFlag;
import org.apache.seatunnel.app.domain.model.Property;
-import org.apache.seatunnel.app.utils.JSONUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.commons.collections4.CollectionUtils;
@@ -32,9 +37,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.google.common.base.Strings;
import java.util.Date;
@@ -73,8 +75,8 @@ public class TaskDefinition {
private String taskType;
/** user defined parameters */
- @JsonDeserialize(using = JSONUtils.JsonDataDeserializer.class)
- @JsonSerialize(using = JSONUtils.JsonDataSerializer.class)
+ @JsonDeserialize(using = JsonUtils.JsonDataDeserializer.class)
+ @JsonSerialize(using = JsonUtils.JsonDataSerializer.class)
private String taskParams;
/** user defined parameter list */
@@ -230,9 +232,9 @@ public class TaskDefinition {
}
public List<Property> getTaskParamList() {
- JsonNode localParams =
JSONUtils.parseObject(taskParams).findValue("localParams");
+ JsonNode localParams =
JsonUtils.parseObject(taskParams).findValue("localParams");
if (localParams != null) {
- taskParamList = JSONUtils.toList(localParams.toString(),
Property.class);
+ taskParamList = JsonUtils.toList(localParams.toString(),
Property.class);
}
return taskParamList;
@@ -248,12 +250,12 @@ public class TaskDefinition {
public Map<String, String> getTaskParamMap() {
if (taskParamMap == null && !Strings.isNullOrEmpty(taskParams)) {
- JsonNode localParams =
JSONUtils.parseObject(taskParams).findValue("localParams");
+ JsonNode localParams =
JsonUtils.parseObject(taskParams).findValue("localParams");
// If a jsonNode is null, not only use !=null, but also it should
use the isNull method
// to be estimated.
if (localParams != null && !localParams.isNull()) {
- List<Property> propList =
JSONUtils.toList(localParams.toString(), Property.class);
+ List<Property> propList =
JsonUtils.toList(localParams.toString(), Property.class);
if (CollectionUtils.isNotEmpty(propList)) {
taskParamMap = new HashMap<>();
@@ -379,7 +381,12 @@ public class TaskDefinition {
}
public String getDependence() {
- return JSONUtils.getNodeString(this.taskParams, Constants.DEPENDENCE);
+ try {
+ JsonNode jsonNode = JsonUtils.stringToJsonNode(this.taskParams);
+ return JsonUtils.findValue(jsonNode, Constants.DEPENDENCE);
+ } catch (JsonProcessingException e) {
+ throw new RuntimeException(e);
+ }
}
public String getModifyBy() {
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/TaskDefinitionExpand.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/TaskDefinitionExpand.java
index a7041df1..278ea416 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/TaskDefinitionExpand.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/TaskDefinitionExpand.java
@@ -17,11 +17,11 @@
package org.apache.seatunnel.app.dal.entity;
+import
org.apache.seatunnel.shade.com.fasterxml.jackson.databind.node.ObjectNode;
+
import org.apache.seatunnel.app.parameters.DependentParameters;
import org.apache.seatunnel.app.parameters.SubProcessParameters;
-import org.apache.seatunnel.app.utils.JSONUtils;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.apache.seatunnel.common.utils.JsonUtils;
import static
org.apache.seatunnel.app.common.Constants.CMD_PARAM_SUB_PROCESS_DEFINE_CODE;
@@ -29,14 +29,14 @@ public class TaskDefinitionExpand extends TaskDefinition {
public SubProcessParameters getSubProcessParameters() {
String parameter = super.getTaskParams();
- ObjectNode parameterJson = JSONUtils.parseObject(parameter);
+ ObjectNode parameterJson = JsonUtils.parseObject(parameter);
if (parameterJson.get(CMD_PARAM_SUB_PROCESS_DEFINE_CODE) != null) {
- return JSONUtils.parseObject(parameter,
SubProcessParameters.class);
+ return JsonUtils.parseObject(parameter,
SubProcessParameters.class);
}
return null;
}
public DependentParameters getDependentParameters() {
- return JSONUtils.parseObject(super.getDependence(),
DependentParameters.class);
+ return JsonUtils.parseObject(super.getDependence(),
DependentParameters.class);
}
}
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/parameters/AbstractParameters.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/parameters/AbstractParameters.java
index a76e06ba..1f4d4e64 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/parameters/AbstractParameters.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/parameters/AbstractParameters.java
@@ -17,18 +17,18 @@
package org.apache.seatunnel.app.parameters;
+import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.JsonNode;
+import
org.apache.seatunnel.shade.com.fasterxml.jackson.databind.node.ArrayNode;
+
import org.apache.seatunnel.app.common.Direct;
import org.apache.seatunnel.app.domain.model.Property;
import org.apache.seatunnel.app.domain.model.ResourceInfo;
import org.apache.seatunnel.app.parameters.resource.ResourceParametersHelper;
-import org.apache.seatunnel.app.utils.JSONUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -121,7 +121,7 @@ public abstract class AbstractParameters implements
IParameters {
if (StringUtils.isEmpty(varPool)) {
this.varPool = new ArrayList<>();
} else {
- this.varPool = JSONUtils.toList(varPool, Property.class);
+ this.varPool = JsonUtils.toList(varPool, Property.class);
}
}
@@ -165,9 +165,9 @@ public abstract class AbstractParameters implements
IParameters {
public List<Map<String, String>> getListMapByString(String json) {
List<Map<String, String>> allParams = new ArrayList<>();
- ArrayNode paramsByJson = JSONUtils.parseArray(json);
+ ArrayNode paramsByJson = JsonUtils.parseArray(json);
for (JsonNode jsonNode : paramsByJson) {
- Map<String, String> param = JSONUtils.toMap(jsonNode.toString());
+ Map<String, String> param = JsonUtils.toMap(jsonNode.toString());
allParams.add(param);
}
return allParams;
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/parameters/resource/UdfFuncParameters.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/parameters/resource/UdfFuncParameters.java
index 638d5a32..c51c9ce7 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/parameters/resource/UdfFuncParameters.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/parameters/resource/UdfFuncParameters.java
@@ -18,7 +18,7 @@
package org.apache.seatunnel.app.parameters.resource;
import org.apache.seatunnel.app.common.UdfType;
-import org.apache.seatunnel.app.utils.JSONUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -218,6 +218,6 @@ public class UdfFuncParameters extends
AbstractResourceParameters {
@Override
public String toString() {
- return JSONUtils.toJsonString(this);
+ return JsonUtils.toJsonString(this);
}
}
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobConfigServiceImpl.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobConfigServiceImpl.java
index 46b41437..4e7cde97 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobConfigServiceImpl.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobConfigServiceImpl.java
@@ -25,6 +25,7 @@ import
org.apache.seatunnel.app.domain.response.job.JobConfigRes;
import
org.apache.seatunnel.app.permission.constants.SeatunnelFuncPermissionKeyConstant;
import org.apache.seatunnel.app.service.IJobConfigService;
import org.apache.seatunnel.common.constants.JobMode;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
import org.apache.seatunnel.server.common.SeatunnelException;
@@ -34,18 +35,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
import javax.annotation.Resource;
-import java.io.IOException;
-import java.util.Map;
-
@Service
public class JobConfigServiceImpl extends SeatunnelBaseServiceImpl implements
IJobConfigService {
-
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
private static final String JOB_MODE = "job.mode";
@Resource private IJobVersionDao jobVersionDao;
@@ -65,14 +59,10 @@ public class JobConfigServiceImpl extends
SeatunnelBaseServiceImpl implements IJ
jobConfigRes.setName(jobDefinition.getName());
jobConfigRes.setId(jobVersion.getId());
jobConfigRes.setDescription(jobDefinition.getDescription());
- try {
- jobConfigRes.setEnv(
- StringUtils.isEmpty(jobVersion.getEnv())
- ? null
- : OBJECT_MAPPER.readValue(jobVersion.getEnv(),
Map.class));
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ jobConfigRes.setEnv(
+ StringUtils.isEmpty(jobVersion.getEnv())
+ ? null
+ : JsonUtils.toMap(jobVersion.getEnv(), String.class,
Object.class));
jobConfigRes.setEngine(jobVersion.getEngineName());
return jobConfigRes;
}
@@ -102,7 +92,7 @@ public class JobConfigServiceImpl extends
SeatunnelBaseServiceImpl implements IJ
.jobMode(jobMode)
.engineName(jobConfig.getEngine())
.updateUserId(userId)
-
.env(OBJECT_MAPPER.writeValueAsString(jobConfig.getEnv()))
+ .env(JsonUtils.toJsonString(jobConfig.getEnv()))
.build());
} else {
throw new SeatunnelException(SeatunnelErrorEnum.ILLEGAL_STATE,
"job mode is not set");
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobDefinitionServiceImpl.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobDefinitionServiceImpl.java
index 32b2aa6b..e74f4128 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobDefinitionServiceImpl.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobDefinitionServiceImpl.java
@@ -32,6 +32,7 @@ import
org.apache.seatunnel.app.domain.response.job.JobDefinitionRes;
import
org.apache.seatunnel.app.permission.constants.SeatunnelFuncPermissionKeyConstant;
import org.apache.seatunnel.app.service.IJobDefinitionService;
import org.apache.seatunnel.common.constants.JobMode;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.seatunnel.server.common.CodeGenerateUtils;
import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
import org.apache.seatunnel.server.common.SeatunnelException;
@@ -42,12 +43,10 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.NonNull;
import javax.annotation.Resource;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -61,8 +60,6 @@ public class JobDefinitionServiceImpl extends
SeatunnelBaseServiceImpl
private static final String DEFAULT_VERSION = "1.0";
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
@Resource(name = "jobDefinitionDaoImpl")
private IJobDefinitionDao jobDefinitionDao;
@@ -198,16 +195,11 @@ public class JobDefinitionServiceImpl extends
SeatunnelBaseServiceImpl
.map(JobTask::getDataSourceOption)
.distinct()
.map(
- option -> {
- try {
- return StringUtils.isEmpty(option)
+ option ->
+ StringUtils.isEmpty(option)
? null
- : OBJECT_MAPPER.readValue(
- option,
DataSourceOption.class);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- })
+ : JsonUtils.parseObject(
+ option,
DataSourceOption.class))
.filter(Objects::nonNull)
.collect(Collectors.toList());
return options.stream().anyMatch(option ->
option.getTables().contains(tableName));
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobInstanceServiceImpl.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobInstanceServiceImpl.java
index 5b6147a2..8d0b7957 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobInstanceServiceImpl.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobInstanceServiceImpl.java
@@ -64,6 +64,7 @@ import org.apache.seatunnel.app.utils.JobUtils;
import org.apache.seatunnel.app.utils.SeaTunnelConfigUtil;
import org.apache.seatunnel.common.constants.PluginType;
import org.apache.seatunnel.common.utils.ExceptionUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.seatunnel.engine.core.job.JobResult;
import org.apache.seatunnel.server.common.CodeGenerateUtils;
import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
@@ -75,7 +76,6 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
@@ -123,8 +123,6 @@ public class JobInstanceServiceImpl extends
SeatunnelBaseServiceImpl
@Resource private IJobMetricsService jobMetricsService;
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
@Override
public JobExecutorRes createExecuteResource(
@NonNull Integer userId, @NonNull Long jobDefineId, JobExecParam
executeParam) {
@@ -391,25 +389,18 @@ public class JobInstanceServiceImpl extends
SeatunnelBaseServiceImpl
});
checkArgument(outputSchemas.size() == 1, "input schema size must be
1");
- try {
- List<DatabaseTableSchemaReq> databaseTableSchemaReqs =
- OBJECT_MAPPER.readValue(
- outputSchemas.get(0),
- new com.fasterxml.jackson.core.type.TypeReference<
- List<DatabaseTableSchemaReq>>() {});
- return databaseTableSchemaReqs.stream()
- .map(
- databaseTableSchemaReq -> {
- TableSchemaReq tableSchemaReq = new
TableSchemaReq();
-
tableSchemaReq.setTableName(databaseTableSchemaReq.getTableName());
-
tableSchemaReq.setFields(databaseTableSchemaReq.getFields());
- return tableSchemaReq;
- })
- .collect(Collectors.toList());
-
- } catch (JsonProcessingException e) {
- throw new SeatunnelException(SeatunnelErrorEnum.ILLEGAL_STATE,
e.getMessage());
- }
+ List<DatabaseTableSchemaReq> databaseTableSchemaReqs =
+ JsonUtils.parseObject(
+ outputSchemas.get(0), new
TypeReference<List<DatabaseTableSchemaReq>>() {});
+ return databaseTableSchemaReqs.stream()
+ .map(
+ databaseTableSchemaReq -> {
+ TableSchemaReq tableSchemaReq = new
TableSchemaReq();
+
tableSchemaReq.setTableName(databaseTableSchemaReq.getTableName());
+
tableSchemaReq.setFields(databaseTableSchemaReq.getFields());
+ return tableSchemaReq;
+ })
+ .collect(Collectors.toList());
}
private Config mergeTaskConfig(
@@ -432,28 +423,15 @@ public class JobInstanceServiceImpl extends
SeatunnelBaseServiceImpl
datasourceDetailRes.getDatasourceConfig(),
optionRule);
- DataSourceOption dataSourceOption = null;
- try {
- dataSourceOption =
- task.getDataSourceOption() == null
- ? null
- : new ObjectMapper()
- .readValue(task.getDataSourceOption(),
DataSourceOption.class);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- SelectTableFields selectTableFields = null;
- try {
- selectTableFields =
- task.getSelectTableFields() == null
- ? null
- : new ObjectMapper()
- .readValue(
- task.getSelectTableFields(),
SelectTableFields.class);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
-
+ DataSourceOption dataSourceOption =
+ task.getDataSourceOption() == null
+ ? null
+ : JsonUtils.parseObject(task.getDataSourceOption(),
DataSourceOption.class);
+ SelectTableFields selectTableFields =
+ task.getSelectTableFields() == null
+ ? null
+ : JsonUtils.parseObject(
+ task.getSelectTableFields(),
SelectTableFields.class);
SceneMode sceneMode =
task.getSceneMode() == null ? null :
SceneMode.valueOf(task.getSceneMode());
VirtualTableDetailRes virtualTableDetailRes = null;
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobMetricsServiceImpl.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobMetricsServiceImpl.java
index 947bd07e..edf49f7f 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobMetricsServiceImpl.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobMetricsServiceImpl.java
@@ -35,6 +35,7 @@ import
org.apache.seatunnel.app.thirdparty.metrics.EngineMetricsExtractorFactory
import org.apache.seatunnel.app.thirdparty.metrics.IEngineMetricsExtractor;
import org.apache.seatunnel.app.utils.JobUtils;
import org.apache.seatunnel.common.constants.JobMode;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.seatunnel.engine.core.job.JobStatus;
import org.apache.seatunnel.server.common.CodeGenerateUtils;
import org.apache.seatunnel.server.common.Constants;
@@ -47,13 +48,11 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
import org.springframework.stereotype.Service;
-import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -65,9 +64,6 @@ import java.util.stream.Collectors;
@Service
@Slf4j
public class JobMetricsServiceImpl extends SeatunnelBaseServiceImpl implements
IJobMetricsService {
-
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
@Resource private IJobMetricsDao jobMetricsDao;
@Resource private IJobInstanceHistoryDao jobInstanceHistoryDao;
@@ -500,11 +496,7 @@ public class JobMetricsServiceImpl extends
SeatunnelBaseServiceImpl implements I
JobInstanceHistory history = getJobHistoryFromDb(jobInstance, userId,
jobEngineId);
if (history != null) {
String dag = history.getDag();
- try {
- return OBJECT_MAPPER.readValue(dag, JobDAG.class);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ return JsonUtils.parseObject(dag, JobDAG.class);
}
Engine engine = new Engine(jobInstance.getEngineName(),
jobInstance.getEngineVersion());
IEngineMetricsExtractor engineMetricsExtractor =
@@ -518,11 +510,7 @@ public class JobMetricsServiceImpl extends
SeatunnelBaseServiceImpl implements I
}
if (history != null) {
String dag = history.getDag();
- try {
- return OBJECT_MAPPER.readValue(dag, JobDAG.class);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ return JsonUtils.parseObject(dag, JobDAG.class);
}
return null;
}
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobTaskServiceImpl.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobTaskServiceImpl.java
index abc4a7e4..107f7fb9 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobTaskServiceImpl.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobTaskServiceImpl.java
@@ -16,6 +16,7 @@
*/
package org.apache.seatunnel.app.service.impl;
+import
org.apache.seatunnel.shade.com.fasterxml.jackson.core.type.TypeReference;
import org.apache.seatunnel.shade.com.typesafe.config.ConfigFactory;
import org.apache.seatunnel.app.config.ConnectorDataSourceMapperConfig;
@@ -51,6 +52,7 @@ import org.apache.seatunnel.app.service.IJobInstanceService;
import org.apache.seatunnel.app.service.IJobTaskService;
import org.apache.seatunnel.common.constants.PluginType;
import org.apache.seatunnel.common.utils.ExceptionUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.seatunnel.common.utils.SeaTunnelException;
import org.apache.seatunnel.datasource.plugin.api.model.TableField;
import org.apache.seatunnel.server.common.CodeGenerateUtils;
@@ -62,8 +64,6 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
@@ -102,8 +102,6 @@ public class JobTaskServiceImpl extends
SeatunnelBaseServiceImpl implements IJob
@Resource private ConnectorDataSourceMapperConfig
connectorDataSourceMapperConfig;
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
private void checkConfigIntegrity(JobVersion version, JobTaskInfo
jobTaskInfo) {
if (StringUtils.isEmpty(version.getEnv())) {
throw new SeatunnelException(
@@ -314,7 +312,7 @@ public class JobTaskServiceImpl extends
SeatunnelBaseServiceImpl implements IJob
Map<String, Object> options = nextConfig.getTransformOptions();
if (options != null && !options.isEmpty()) {
Transform transform =
Transform.valueOf(nextConfig.getConnectorType().toUpperCase());
- String transformOptionsStr =
OBJECT_MAPPER.writeValueAsString(options);
+ String transformOptionsStr = JsonUtils.toJsonString(options);
List<TransformOption> transformOptions = new ArrayList<>();
@@ -425,7 +423,7 @@ public class JobTaskServiceImpl extends
SeatunnelBaseServiceImpl implements IJob
connectorType = pluginConfig.getConnectorType();
if (pluginConfig.getTransformOptions() != null) {
transformOptionsStr =
-
OBJECT_MAPPER.writeValueAsString(pluginConfig.getTransformOptions());
+
JsonUtils.toJsonString(pluginConfig.getTransformOptions());
}
transformOptionCheck(connectorType, transformOptionsStr);
} else {
@@ -448,17 +446,16 @@ public class JobTaskServiceImpl extends
SeatunnelBaseServiceImpl implements IJob
.dataSourceOption(
pluginConfig.getTableOption() == null
? null
- : OBJECT_MAPPER.writeValueAsString(
-
pluginConfig.getTableOption()))
+ :
JsonUtils.toJsonString(pluginConfig.getTableOption()))
.selectTableFields(
pluginConfig.getSelectTableFields() == null
? null
- : OBJECT_MAPPER.writeValueAsString(
+ : JsonUtils.toJsonString(
pluginConfig.getSelectTableFields()))
.outputSchema(
pluginConfig.getOutputSchema() == null
? null
- : OBJECT_MAPPER.writeValueAsString(
+ : JsonUtils.toJsonString(
pluginConfig.getOutputSchema()))
.transformOptions(transformOptionsStr)
.build();
@@ -596,24 +593,24 @@ public class JobTaskServiceImpl extends
SeatunnelBaseServiceImpl implements IJob
.tableOption(
StringUtils.isEmpty(jobTask.getDataSourceOption())
? null
- : OBJECT_MAPPER.readValue(
+ : JsonUtils.parseObject(
jobTask.getDataSourceOption(),
DataSourceOption.class))
.selectTableFields(
StringUtils.isEmpty(jobTask.getSelectTableFields())
? null
- : OBJECT_MAPPER.readValue(
+ : JsonUtils.parseObject(
jobTask.getSelectTableFields(),
SelectTableFields.class))
.outputSchema(
StringUtils.isEmpty(jobTask.getOutputSchema())
? null
- : OBJECT_MAPPER.readValue(
+ : JsonUtils.parseObject(
jobTask.getOutputSchema(),
new
TypeReference<List<DatabaseTableSchemaReq>>() {}))
.transformOptions(
StringUtils.isEmpty(jobTask.getTransformOptions())
? null
- : OBJECT_MAPPER.readValue(
+ : JsonUtils.parseObject(
jobTask.getTransformOptions(),
new TypeReference<Map<String,
Object>>() {}))
.config(jobTask.getConfig())
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/thirdparty/engine/SeaTunnelEngineMetricsExtractor.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/thirdparty/engine/SeaTunnelEngineMetricsExtractor.java
index b9003d82..cf6b9db1 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/thirdparty/engine/SeaTunnelEngineMetricsExtractor.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/thirdparty/engine/SeaTunnelEngineMetricsExtractor.java
@@ -18,7 +18,6 @@ package org.apache.seatunnel.app.thirdparty.engine;
import
org.apache.seatunnel.shade.com.fasterxml.jackson.core.JsonProcessingException;
import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.JsonNode;
-import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.seatunnel.app.dal.entity.JobInstanceHistory;
import org.apache.seatunnel.app.dal.entity.JobMetrics;
@@ -51,8 +50,6 @@ import java.util.OptionalDouble;
public class SeaTunnelEngineMetricsExtractor implements
IEngineMetricsExtractor {
@Getter @Setter private SeaTunnelEngineProxy seaTunnelEngineProxy;
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
public static final String[] clusterHealthMetricsKeys =
new String[] {
"processors",
@@ -152,11 +149,7 @@ public class SeaTunnelEngineMetricsExtractor implements
IEngineMetricsExtractor
public JobInstanceHistory getJobHistoryById(String jobEngineId) {
JobDAGInfo jobInfo = seaTunnelEngineProxy.getJobInfo(jobEngineId);
JobInstanceHistory jobInstanceHistory = new JobInstanceHistory();
- try {
-
jobInstanceHistory.setDag(OBJECT_MAPPER.writeValueAsString(jobInfo));
- } catch (JsonProcessingException e) {
- throw new org.apache.seatunnel.common.utils.SeaTunnelException(e);
- }
+ jobInstanceHistory.setDag(JsonUtils.toJsonString(jobInfo));
return jobInstanceHistory;
}
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/JSONUtils.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/JSONUtils.java
deleted file mode 100644
index 83fa9dfb..00000000
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/JSONUtils.java
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.seatunnel.app.utils;
-
-import org.apache.seatunnel.app.common.Constants;
-
-import org.apache.commons.lang3.StringUtils;
-
-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.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
-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.json.JsonMapper;
-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 com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import lombok.experimental.UtilityClass;
-
-import javax.annotation.Nullable;
-
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.TimeZone;
-
-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 static java.nio.charset.StandardCharsets.UTF_8;
-
-@UtilityClass
-public class JSONUtils {
-
- private static final Logger logger =
LoggerFactory.getLogger(JSONUtils.class);
-
- static {
- logger.info("init timezone: {}", TimeZone.getDefault());
- }
-
- /** can use static singleton, inject: just make sure to reuse! */
- private static final ObjectMapper objectMapper =
- JsonMapper.builder()
- .configure(FAIL_ON_UNKNOWN_PROPERTIES, false)
- .configure(ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, true)
- .configure(READ_UNKNOWN_ENUM_VALUES_AS_NULL, true)
- .configure(REQUIRE_SETTERS_FOR_GETTERS, true)
- .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
- .addModule(new JavaTimeModule())
- .defaultTimeZone(TimeZone.getDefault())
- .defaultDateFormat(new
SimpleDateFormat(Constants.YYYY_MM_DD_HH_MM_SS))
- .defaultPrettyPrinter(new DefaultPrettyPrinter())
- .build();
-
- public static ArrayNode createArrayNode() {
- return objectMapper.createArrayNode();
- }
-
- public static ObjectNode createObjectNode() {
- return objectMapper.createObjectNode();
- }
-
- public static JsonNode toJsonNode(Object obj) {
- return objectMapper.valueToTree(obj);
- }
-
- /**
- * json representation of object
- *
- * @param object object
- * @param feature feature
- * @return object to json string
- */
- public static @Nullable String toJsonString(Object object,
SerializationFeature feature) {
- try {
- ObjectWriter writer = objectMapper.writer(feature);
- return writer.writeValueAsString(object);
- } catch (Exception e) {
- logger.error("object to json exception!, obj: {}", object, e);
- }
-
- return null;
- }
-
- public static String toPrettyJsonString(Object object) {
- try {
- return
objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(object);
- } catch (Exception e) {
- throw new RuntimeException("Object json deserialization
exception.", e);
- }
- }
-
- /**
- * This method deserializes the specified Json into an object of the
specified class. It is not
- * suitable to use if the specified class is a generic type since it will
not have the generic
- * type information because of the Type Erasure feature of Java.
Therefore, this method should
- * not be used if the desired type is a generic type. Note that this
method works fine if the
- * any of 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 clazz the class of T
- * @param <T> T
- * @return an object of type T from the string classOfT
- */
- public static @Nullable <T> T parseObject(String json, Class<T> clazz) {
- if (StringUtils.isEmpty(json)) {
- return null;
- }
-
- try {
- return objectMapper.readValue(json, clazz);
- } catch (Exception e) {
- logger.error("parse object exception! json: {}", json, e);
- }
- return null;
- }
-
- /**
- * deserialize
- *
- * @param src byte array
- * @param clazz class
- * @param <T> deserialize type
- * @return deserialize type
- */
- public static @Nullable <T> T parseObject(byte[] src, Class<T> clazz) {
- if (src == null) {
- return null;
- }
- String json = new String(src, UTF_8);
- return parseObject(json, clazz);
- }
-
- /**
- * json to list
- *
- * @param json json string
- * @param clazz class
- * @param <T> T
- * @return list
- */
- public static <T> List<T> toList(String json, Class<T> clazz) {
- if (StringUtils.isEmpty(json)) {
- return Collections.emptyList();
- }
-
- try {
- CollectionType listType =
-
objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, clazz);
- return objectMapper.readValue(json, listType);
- } catch (Exception e) {
- logger.error("parse list exception! json: {}", json, e);
- }
-
- return Collections.emptyList();
- }
-
- /**
- * check json object valid
- *
- * @param json json
- * @return true if valid
- */
- public static boolean checkJsonValid(String json) {
-
- if (StringUtils.isEmpty(json)) {
- return false;
- }
-
- try {
- objectMapper.readTree(json);
- return true;
- } catch (IOException e) {
- logger.error("check json object valid exception! json: {}", json,
e);
- }
-
- 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 fieldName Name of field to look for
- * @return Value of first matching node found, if any; null if none
- */
- public static String findValue(JsonNode jsonNode, String fieldName) {
- JsonNode node = jsonNode.findValue(fieldName);
-
- if (node == null) {
- return null;
- }
-
- return node.asText();
- }
-
- /**
- * json to map {@link #toMap(String, Class, Class)}
- *
- * @param json json
- * @return json to map
- */
- public static Map<String, String> toMap(String json) {
- return parseObject(json, new TypeReference<Map<String, String>>() {});
- }
-
- /**
- * json to map
- *
- * @param json json
- * @param classK classK
- * @param classV classV
- * @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) {
- if (StringUtils.isEmpty(json)) {
- return Collections.emptyMap();
- }
-
- try {
- return objectMapper.readValue(json, new TypeReference<Map<K, V>>()
{});
- } catch (Exception e) {
- logger.error("json to map exception! json: {}", json, e);
- }
-
- return Collections.emptyMap();
- }
-
- /**
- * from the key-value generated json to get the str value no matter the
real type of value
- *
- * @param json the json str
- * @param nodeName key
- * @return the str value of key
- */
- public static String getNodeString(String json, String nodeName) {
- try {
- JsonNode rootNode = objectMapper.readTree(json);
- JsonNode jsonNode = rootNode.findValue(nodeName);
- if (Objects.isNull(jsonNode)) {
- return "";
- }
- return jsonNode.isTextual() ? jsonNode.asText() :
jsonNode.toString();
- } catch (JsonProcessingException e) {
- logger.info("Json deserialize error, json: {}", json, e);
- return "";
- }
- }
-
- /**
- * json to object
- *
- * @param json json string
- * @param type type reference
- * @param <T>
- * @return return parse object
- */
- public static @Nullable <T> T parseObject(String json, TypeReference<T>
type) {
- if (StringUtils.isEmpty(json)) {
- return null;
- }
-
- try {
- return objectMapper.readValue(json, type);
- } catch (Exception e) {
- logger.error("json to map exception!, json: {}", json, e);
- }
-
- return null;
- }
-
- /**
- * object to json string
- *
- * @param object object
- * @return json string
- */
- public static String toJsonString(Object object) {
- try {
- return objectMapper.writeValueAsString(object);
- } catch (Exception e) {
- throw new RuntimeException("Object json deserialization exception.
obj: " + object, e);
- }
- }
-
- public static String writeAsPrettyString(Object object) {
- try {
- return
objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(object);
- } catch (Exception ex) {
- throw new RuntimeException("Object json write as pretty string
error, obj: " + object);
- }
- }
-
- /**
- * serialize to json byte
- *
- * @param obj object
- * @param <T> object type
- * @return byte array
- */
- public static @Nullable <T> byte[] toJsonByteArray(T obj) {
- if (obj == null) {
- return null;
- }
- String json = "";
- try {
- json = toJsonString(obj);
- } catch (Exception e) {
- logger.error("json serialize exception. obj: {}", obj, e);
- }
-
- return json.getBytes(UTF_8);
- }
-
- public static ObjectNode parseObject(String text) {
- try {
- if (text.isEmpty()) {
- return parseObject(text, ObjectNode.class);
- } else {
- return (ObjectNode) objectMapper.readTree(text);
- }
- } catch (Exception e) {
- throw new RuntimeException("String json deserialization exception.
text: " + text, e);
- }
- }
-
- public static ArrayNode parseArray(String text) {
- try {
- return (ArrayNode) objectMapper.readTree(text);
- } catch (Exception e) {
- throw new RuntimeException("Json deserialization exception. text:
" + text, e);
- }
- }
-
- /** json serializer */
- public static class JsonDataSerializer extends JsonSerializer<String> {
-
- @Override
- public void serialize(String value, JsonGenerator gen,
SerializerProvider provider)
- throws IOException {
- gen.writeRawValue(value);
- }
- }
-
- /** json data deserializer */
- public static class JsonDataDeserializer extends JsonDeserializer<String> {
-
- @Override
- public String deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException {
- JsonNode node = p.getCodec().readTree(p);
- if (node instanceof TextNode) {
- return node.asText();
- } else {
- return node.toString();
- }
- }
- }
-}
diff --git
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/TaskOptionUtils.java
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/TaskOptionUtils.java
index 1f727b6d..02cc62ad 100644
---
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/TaskOptionUtils.java
+++
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/TaskOptionUtils.java
@@ -23,19 +23,16 @@ import
org.apache.seatunnel.app.domain.request.job.transform.SQLTransformOptions
import
org.apache.seatunnel.app.domain.request.job.transform.SplitTransformOptions;
import org.apache.seatunnel.app.domain.request.job.transform.Transform;
import org.apache.seatunnel.app.domain.request.job.transform.TransformOptions;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
import org.apache.seatunnel.server.common.SeatunnelException;
import org.apache.commons.lang3.StringUtils;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
import java.io.IOException;
public class TaskOptionUtils {
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
public static <T extends TransformOptions> T getTransformOption(
Transform transform, String transformOptionsStr) throws
IOException {
switch (transform) {
@@ -58,13 +55,12 @@ public class TaskOptionUtils {
}
public static <T extends TransformOptions> T convertTransformStrToOptions(
- String transformOptionsStr, Class<? extends TransformOptions>
optionClass)
- throws IOException {
+ String transformOptionsStr, Class<? extends TransformOptions>
optionClass) {
if (StringUtils.isEmpty(transformOptionsStr)) {
throw new SeatunnelException(
SeatunnelErrorEnum.ILLEGAL_STATE,
optionClass.getName() + " transformOptions can not be
empty");
}
- return (T) OBJECT_MAPPER.readValue(transformOptionsStr, optionClass);
+ return (T) JsonUtils.parseObject(transformOptionsStr, optionClass);
}
}
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/common/SeatunnelWebTestingBase.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/common/SeatunnelWebTestingBase.java
index 19bd0746..fd17fbb5 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/common/SeatunnelWebTestingBase.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/common/SeatunnelWebTestingBase.java
@@ -19,7 +19,7 @@ package org.apache.seatunnel.app.common;
import org.apache.seatunnel.app.domain.request.user.UserLoginReq;
import org.apache.seatunnel.app.domain.response.user.UserSimpleInfoRes;
import org.apache.seatunnel.app.utils.JSONTestUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -30,12 +30,13 @@ import java.io.OutputStream;
import java.lang.reflect.Field;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
public class SeatunnelWebTestingBase {
protected final String baseUrl = "http://localhost:8802/seatunnel/api/v1";
protected Result<UserSimpleInfoRes> login(UserLoginReq userLoginReq) {
- String requestBody = JSONUtils.toPrettyJsonString(userLoginReq);
+ String requestBody = JsonUtils.toJsonString(userLoginReq);
String response = sendRequest(url("user/login"), requestBody, "POST");
return JSONTestUtils.parseObject(
response, new TypeReference<Result<UserSimpleInfoRes>>() {});
@@ -71,7 +72,7 @@ public class SeatunnelWebTestingBase {
connection.setDoOutput(true);
if (requestBody != null) {
try (OutputStream os = connection.getOutputStream()) {
- byte[] input = requestBody.getBytes("utf-8");
+ byte[] input =
requestBody.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
}
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/ConnectorControllerWrapper.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/ConnectorControllerWrapper.java
index 8a431feb..960a740c 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/ConnectorControllerWrapper.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/ConnectorControllerWrapper.java
@@ -16,13 +16,13 @@
*/
package org.apache.seatunnel.app.controller;
+import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.JsonNode;
+
import org.apache.seatunnel.app.common.Result;
import org.apache.seatunnel.app.common.SeatunnelWebTestingBase;
import org.apache.seatunnel.app.domain.response.connector.ConnectorInfo;
import org.apache.seatunnel.app.utils.JSONTestUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
-
-import com.fasterxml.jackson.databind.JsonNode;
+import org.apache.seatunnel.common.utils.JsonUtils;
import java.util.List;
@@ -30,19 +30,19 @@ public class ConnectorControllerWrapper extends
SeatunnelWebTestingBase {
public List<ConnectorInfo> listAllTransform() {
String response = sendRequest(url("connector/transforms"));
- JsonNode data = JSONUtils.parseObject(response).findValue("data");
+ JsonNode data = JsonUtils.parseObject(response).findValue("data");
return JSONTestUtils.toList(data.toString(), ConnectorInfo.class);
}
public List<ConnectorInfo> listSource(String status) {
String response = sendRequest(urlWithParam("connector/sources?status="
+ status));
- JsonNode data = JSONUtils.parseObject(response).findValue("data");
+ JsonNode data = JsonUtils.parseObject(response).findValue("data");
return JSONTestUtils.toList(data.toString(), ConnectorInfo.class);
}
public List<ConnectorInfo> listSink(String status) {
String response = sendRequest(urlWithParam("connector/sinks?status=" +
status));
- JsonNode data = JSONUtils.parseObject(response).findValue("data");
+ JsonNode data = JsonUtils.parseObject(response).findValue("data");
return JSONTestUtils.toList(data.toString(), ConnectorInfo.class);
}
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobConfigControllerWrapper.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobConfigControllerWrapper.java
index e1835a1d..82cd7b4d 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobConfigControllerWrapper.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobConfigControllerWrapper.java
@@ -22,8 +22,8 @@ import
org.apache.seatunnel.app.common.SeatunnelWebTestingBase;
import org.apache.seatunnel.app.domain.request.job.JobConfig;
import org.apache.seatunnel.app.domain.response.job.JobConfigRes;
import org.apache.seatunnel.app.utils.JSONTestUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
import org.apache.seatunnel.common.constants.JobMode;
+import org.apache.seatunnel.common.utils.JsonUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -33,7 +33,7 @@ import java.util.Map;
public class JobConfigControllerWrapper extends SeatunnelWebTestingBase {
public Result<Void> updateJobConfig(long jobVersionId, JobConfig
jobConfig) {
- String requestBody = JSONUtils.toPrettyJsonString(jobConfig);
+ String requestBody = JsonUtils.toJsonString(jobConfig);
String response = sendRequest(url("job/config/" + jobVersionId),
requestBody, "PUT");
return JSONTestUtils.parseObject(response, Result.class);
}
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobControllerWrapper.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobControllerWrapper.java
index be654fba..9a5b64bf 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobControllerWrapper.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobControllerWrapper.java
@@ -21,20 +21,20 @@ import
org.apache.seatunnel.app.common.SeatunnelWebTestingBase;
import org.apache.seatunnel.app.domain.request.job.JobCreateReq;
import org.apache.seatunnel.app.domain.response.job.JobRes;
import org.apache.seatunnel.app.utils.JSONTestUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import com.fasterxml.jackson.core.type.TypeReference;
public class JobControllerWrapper extends SeatunnelWebTestingBase {
public Result<Long> createJob(JobCreateReq jobCreateRequest) {
- String requestBody = JSONUtils.toPrettyJsonString(jobCreateRequest);
+ String requestBody = JsonUtils.toJsonString(jobCreateRequest);
String response = sendRequest(url("job/create"), requestBody, "POST");
return JSONTestUtils.parseObject(response, new
TypeReference<Result<Long>>() {});
}
public Result<Void> updateJob(long jobVersionId, JobCreateReq
jobCreateReq) {
- String requestBody = JSONUtils.toPrettyJsonString(jobCreateReq);
+ String requestBody = JsonUtils.toJsonString(jobCreateReq);
String response =
sendRequest(urlWithParam("job/update/" + jobVersionId + "?"),
requestBody, "PUT");
return JSONTestUtils.parseObject(response, new
TypeReference<Result<Void>>() {});
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobDefinitionControllerWrapper.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobDefinitionControllerWrapper.java
index b303bb79..ccff9c3c 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobDefinitionControllerWrapper.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobDefinitionControllerWrapper.java
@@ -23,8 +23,8 @@ import org.apache.seatunnel.app.domain.request.job.JobReq;
import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.job.JobDefinitionRes;
import org.apache.seatunnel.app.utils.JSONTestUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
import org.apache.seatunnel.common.constants.JobMode;
+import org.apache.seatunnel.common.utils.JsonUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -33,7 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
public class JobDefinitionControllerWrapper extends SeatunnelWebTestingBase {
public Result<Long> createJobDefinition(JobReq jobReq) {
- String requestBody = JSONUtils.toPrettyJsonString(jobReq);
+ String requestBody = JsonUtils.toJsonString(jobReq);
String response = sendRequest(url("job/definition"), requestBody,
"POST");
return JSONTestUtils.parseObject(response, new
TypeReference<Result<Long>>() {});
}
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobExecutorControllerWrapper.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobExecutorControllerWrapper.java
index a2aaefb9..268b2560 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobExecutorControllerWrapper.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobExecutorControllerWrapper.java
@@ -23,7 +23,7 @@ import
org.apache.seatunnel.app.domain.request.job.JobExecParam;
import org.apache.seatunnel.app.domain.response.executor.JobExecutionStatus;
import org.apache.seatunnel.app.domain.response.executor.JobExecutorRes;
import org.apache.seatunnel.app.utils.JSONTestUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -39,7 +39,7 @@ public class JobExecutorControllerWrapper extends
SeatunnelWebTestingBase {
}
public Result<Long> jobExecutor(Long jobDefineId, JobExecParam
jobExecParam) {
- String requestBody = JSONUtils.toPrettyJsonString(jobExecParam);
+ String requestBody = JsonUtils.toJsonString(jobExecParam);
String response =
sendRequest(
urlWithParam("job/executor/execute?jobDefineId=" +
jobDefineId),
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobTaskControllerWrapper.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobTaskControllerWrapper.java
index 28cb6ba9..4d093e00 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobTaskControllerWrapper.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/JobTaskControllerWrapper.java
@@ -27,14 +27,15 @@ import
org.apache.seatunnel.app.domain.request.job.PluginConfig;
import org.apache.seatunnel.app.domain.request.job.SelectTableFields;
import org.apache.seatunnel.app.domain.response.job.JobTaskCheckRes;
import org.apache.seatunnel.app.utils.JSONTestUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
import org.apache.seatunnel.common.constants.PluginType;
+import org.apache.seatunnel.common.utils.JsonUtils;
import org.apache.seatunnel.datasource.plugin.api.model.TableField;
import com.fasterxml.jackson.core.type.TypeReference;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -43,7 +44,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
public class JobTaskControllerWrapper extends SeatunnelWebTestingBase {
public Result<JobTaskCheckRes> saveJobDAG(long jobVersionId, JobDAG
jobDAG) {
- String requestBody = JSONUtils.toPrettyJsonString(jobDAG);
+ String requestBody = JsonUtils.toJsonString(jobDAG);
String response = sendRequest(url("job/dag/" + jobVersionId),
requestBody, "POST");
return JSONTestUtils.parseObject(response, new
TypeReference<Result<JobTaskCheckRes>>() {});
}
@@ -54,7 +55,7 @@ public class JobTaskControllerWrapper extends
SeatunnelWebTestingBase {
}
public Result<Void> saveSingleTask(long jobVersionId, PluginConfig
pluginConfig) {
- String requestBody = JSONUtils.toPrettyJsonString(pluginConfig);
+ String requestBody = JsonUtils.toJsonString(pluginConfig);
String response = sendRequest(url("job/task/" + jobVersionId),
requestBody, "POST");
return JSONTestUtils.parseObject(response, Result.class);
}
@@ -73,8 +74,8 @@ public class JobTaskControllerWrapper extends
SeatunnelWebTestingBase {
public String createFakeSourcePlugin(String datasourceId, long
jobVersionId, String rows) {
DataSourceOption tableOption = new DataSourceOption();
- tableOption.setDatabases(Arrays.asList("fake_database"));
- tableOption.setTables(Arrays.asList("fake_table"));
+ tableOption.setDatabases(Collections.singletonList("fake_database"));
+ tableOption.setTables(Collections.singletonList("fake_table"));
String sourcePluginId = "src_" + System.currentTimeMillis();
PluginConfig sourcePluginConfig =
PluginConfig.builder()
@@ -110,8 +111,8 @@ public class JobTaskControllerWrapper extends
SeatunnelWebTestingBase {
public String createConsoleSinkPlugin(String datasourceId, long
jobVersionId) {
DataSourceOption sinkTableOption = new DataSourceOption();
- sinkTableOption.setDatabases(Arrays.asList("console_fake_database"));
- sinkTableOption.setTables(Arrays.asList("console_fake_table"));
+
sinkTableOption.setDatabases(Collections.singletonList("console_fake_database"));
+
sinkTableOption.setTables(Collections.singletonList("console_fake_table"));
String sinkPluginId = "sink_" + System.currentTimeMillis();
PluginConfig sinkPluginConfig =
@@ -157,7 +158,7 @@ public class JobTaskControllerWrapper extends
SeatunnelWebTestingBase {
databaseTableSchemaReq.setDatabase("fake_database");
databaseTableSchemaReq.setTableName("fake_table");
databaseTableSchemaReq.setFields(createFields());
- return Arrays.asList(databaseTableSchemaReq);
+ return Collections.singletonList(databaseTableSchemaReq);
}
private List<TableField> createFields() {
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/SeatunnelDatasourceControllerWrapper.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/SeatunnelDatasourceControllerWrapper.java
index 4fe17e54..3f2af1f2 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/SeatunnelDatasourceControllerWrapper.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/SeatunnelDatasourceControllerWrapper.java
@@ -24,7 +24,7 @@ import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.datasource.DatasourceDetailRes;
import org.apache.seatunnel.app.domain.response.datasource.DatasourceRes;
import org.apache.seatunnel.app.utils.JSONTestUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -73,19 +73,19 @@ public class SeatunnelDatasourceControllerWrapper extends
SeatunnelWebTestingBas
}
public Result<String> createDatasource(DatasourceReq req) {
- String requestBody = JSONUtils.toPrettyJsonString(req);
+ String requestBody = JsonUtils.toJsonString(req);
String response = sendRequest(url("datasource/create"), requestBody,
"POST");
return JSONTestUtils.parseObject(response, new
TypeReference<Result<String>>() {});
}
public Result<Boolean> testConnect(DatasourceCheckReq req) {
- String requestBody = JSONUtils.toPrettyJsonString(req);
+ String requestBody = JsonUtils.toJsonString(req);
String response = sendRequest(url("datasource/check/connect"),
requestBody, "POST");
return JSONTestUtils.parseObject(response, new
TypeReference<Result<Boolean>>() {});
}
public Result<Boolean> updateDatasource(String id, DatasourceReq req) {
- String requestBody = JSONUtils.toPrettyJsonString(req);
+ String requestBody = JsonUtils.toJsonString(req);
String response = sendRequest(url("datasource/" + id), requestBody,
"PUT");
return JSONTestUtils.parseObject(response, new
TypeReference<Result<Boolean>>() {});
}
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java
index 6558bff9..e45a8993 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/TaskInstanceControllerWrapper.java
@@ -35,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
public class TaskInstanceControllerWrapper extends SeatunnelWebTestingBase {
- private static SimpleDateFormat dateFormat = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ private static final SimpleDateFormat dateFormat = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public Result<PageInfo<SeaTunnelJobInstanceDto>> getTaskInstanceList(
String taskName,
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/UserControllerWrapper.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/UserControllerWrapper.java
index af0cb556..711ef670 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/UserControllerWrapper.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/controller/UserControllerWrapper.java
@@ -22,20 +22,20 @@ import
org.apache.seatunnel.app.domain.request.user.AddUserReq;
import org.apache.seatunnel.app.domain.request.user.UpdateUserReq;
import org.apache.seatunnel.app.domain.response.user.AddUserRes;
import org.apache.seatunnel.app.utils.JSONTestUtils;
-import org.apache.seatunnel.app.utils.JSONUtils;
+import org.apache.seatunnel.common.utils.JsonUtils;
import com.fasterxml.jackson.core.type.TypeReference;
public class UserControllerWrapper extends SeatunnelWebTestingBase {
public Result<AddUserRes> addUser(AddUserReq addUserReq) {
- String requestBody = JSONUtils.toPrettyJsonString(addUserReq);
+ String requestBody = JsonUtils.toJsonString(addUserReq);
String response = sendRequest(url("user"), requestBody, "POST");
return JSONTestUtils.parseObject(response, new
TypeReference<Result<AddUserRes>>() {});
}
public Result<Void> updateUser(String userId, UpdateUserReq updateUserReq)
{
- String requestBody = JSONUtils.toPrettyJsonString(updateUserReq);
+ String requestBody = JsonUtils.toJsonString(updateUserReq);
String response = sendRequest(url("user/" + userId), requestBody,
"PUT");
return JSONTestUtils.parseObject(response, Result.class);
}
diff --git
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/utils/JobTestingUtils.java
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/utils/JobTestingUtils.java
index e9dc309f..6ca28f2d 100644
---
a/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/utils/JobTestingUtils.java
+++
b/seatunnel-web-it/src/test/java/org/apache/seatunnel/app/utils/JobTestingUtils.java
@@ -30,6 +30,7 @@ import org.apache.seatunnel.app.domain.request.job.JobDAG;
import org.apache.seatunnel.app.domain.request.job.PluginConfig;
import org.apache.seatunnel.app.domain.response.job.JobTaskCheckRes;
import
org.apache.seatunnel.app.domain.response.metrics.JobPipelineDetailMetricsRes;
+import org.apache.seatunnel.common.utils.JsonUtils;
import java.io.IOException;
import java.nio.file.Files;
@@ -167,7 +168,7 @@ public class JobTestingUtils {
} catch (IOException e) {
throw new RuntimeException(e);
}
- return JSONTestUtils.parseObject(jsonContent, JobCreateReq.class);
+ return JsonUtils.parseObject(jsonContent, JobCreateReq.class);
}
public static JobCreateReq populateJobCreateReqFromFile(
@@ -179,7 +180,7 @@ public class JobTestingUtils {
} catch (IOException e) {
throw new RuntimeException(e);
}
- JobCreateReq jobCreateReq = JSONTestUtils.parseObject(jsonContent,
JobCreateReq.class);
+ JobCreateReq jobCreateReq = JsonUtils.parseObject(jsonContent,
JobCreateReq.class);
jobCreateReq.getJobConfig().setName(jobName);
jobCreateReq.getJobConfig().setDescription(jobName + " description");
setSourceIds(jobCreateReq, fsdSourceName, csSourceName);