mirror of
https://gitee.com/dolphinscheduler/DolphinScheduler.git
synced 2024-12-02 04:08:31 +08:00
[Bug-9070][Server]fix taskExecutionContext json convert error (#9072)
* [Bug-9070][Server]fix taskExecutionContext json convert error * test * add license header Co-authored-by: caishunfeng <534328519@qq.com>
This commit is contained in:
parent
f5ef410d06
commit
852597c9bf
@ -168,7 +168,7 @@ public class TaskPriorityQueueConsumer extends Thread {
|
||||
}
|
||||
|
||||
result = dispatcher.dispatch(executionContext);
|
||||
} catch (ExecuteException e) {
|
||||
} catch (RuntimeException | ExecuteException e) {
|
||||
logger.error("dispatch error: {}", e.getMessage(), e);
|
||||
}
|
||||
return result;
|
||||
|
@ -17,6 +17,15 @@
|
||||
|
||||
package org.apache.dolphinscheduler.plugin.task.api.parameters.resource;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
||||
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
|
||||
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
|
||||
@JsonSubTypes({
|
||||
@Type(value = DataSourceParameters.class, name = "DATASOURCE"),
|
||||
@Type(value = UdfFuncParameters.class, name = "UDF")
|
||||
})
|
||||
public abstract class AbstractResourceParameters {
|
||||
|
||||
}
|
||||
|
@ -25,23 +25,27 @@ import java.util.Objects;
|
||||
|
||||
public class ResourceParametersHelper {
|
||||
|
||||
private Map<ResourceType, Map<Integer, AbstractResourceParameters>> map = new HashMap<>();
|
||||
private Map<ResourceType, Map<Integer, AbstractResourceParameters>> resourceMap = new HashMap<>();
|
||||
|
||||
public void put(ResourceType resourceType, Integer id) {
|
||||
put(resourceType, id, null);
|
||||
}
|
||||
|
||||
public void put(ResourceType resourceType, Integer id, AbstractResourceParameters parameters) {
|
||||
Map<Integer, AbstractResourceParameters> resourceParametersMap = map.get(resourceType);
|
||||
Map<Integer, AbstractResourceParameters> resourceParametersMap = resourceMap.get(resourceType);
|
||||
if (Objects.isNull(resourceParametersMap)) {
|
||||
resourceParametersMap = new HashMap<>();
|
||||
map.put(resourceType, resourceParametersMap);
|
||||
resourceMap.put(resourceType, resourceParametersMap);
|
||||
}
|
||||
resourceParametersMap.put(id, parameters);
|
||||
}
|
||||
|
||||
public void setResourceMap(Map<ResourceType, Map<Integer, AbstractResourceParameters>> resourceMap) {
|
||||
this.resourceMap = resourceMap;
|
||||
}
|
||||
|
||||
public Map<ResourceType, Map<Integer, AbstractResourceParameters>> getResourceMap() {
|
||||
return map;
|
||||
return resourceMap;
|
||||
}
|
||||
|
||||
public Map<Integer, AbstractResourceParameters> getResourceMap(ResourceType resourceType) {
|
||||
|
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* 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.dolphinscheduler.plugin.task.api.parameters.resource;
|
||||
|
||||
import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext;
|
||||
import org.apache.dolphinscheduler.plugin.task.api.parameters.SqlParameters;
|
||||
import org.apache.dolphinscheduler.spi.enums.DbType;
|
||||
import org.apache.dolphinscheduler.spi.utils.JSONUtils;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class AbstractResourceParametersTest {
|
||||
|
||||
@Test
|
||||
public void testDataSource() {
|
||||
TaskExecutionContext taskExecutionContext = new TaskExecutionContext();
|
||||
String taskParam = "{\"localParams\":[],\"resourceList\":[],\"type\":\"MYSQL\",\"datasource\":\"1\",\"sql\":\"select now();\",\"sqlType\":\"0\",\"preStatements\":[],\"postStatements\":[],\"conditionResult\":\"null\",\"dependence\":\"null\",\"switchResult\":\"null\",\"waitStartTimeout\":null}";
|
||||
|
||||
ResourceParametersHelper resourceParametersHelper = JSONUtils.parseObject(taskParam, SqlParameters.class).getResources();
|
||||
|
||||
resourceParametersHelper.getResourceMap().forEach((type, map) -> {
|
||||
map.forEach((code, parameters) -> {
|
||||
DataSourceParameters dataSourceParameters = new DataSourceParameters();
|
||||
dataSourceParameters.setType(DbType.MYSQL);
|
||||
dataSourceParameters.setConnectionParams("127.0.0.1:3306");
|
||||
map.put(code, dataSourceParameters);
|
||||
});
|
||||
});
|
||||
|
||||
taskExecutionContext.setResourceParametersHelper(resourceParametersHelper);
|
||||
|
||||
String json = JSONUtils.toJsonString(taskExecutionContext);
|
||||
|
||||
taskExecutionContext = JSONUtils.parseObject(json, TaskExecutionContext.class);
|
||||
|
||||
Assert.assertNotNull(taskExecutionContext);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user