in seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobInstanceServiceImpl.java [434:485]
private Config mergeTaskConfig(
JobTask task,
PluginType pluginType,
String connectorType,
BusinessMode businessMode,
Config connectorConfig,
OptionRule optionRule)
throws JsonProcessingException {
Long datasourceInstanceId = task.getDataSourceId();
DatasourceDetailRes datasourceDetailRes =
datasourceService.queryDatasourceDetailById(datasourceInstanceId.toString());
String pluginName = datasourceDetailRes.getPluginName();
Config datasourceConf =
parseConfigWithOptionRule(
pluginType,
connectorType,
datasourceDetailRes.getDatasourceConfig(),
optionRule);
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;
if (!SceneMode.MULTIPLE_TABLE.equals(sceneMode)
&& dataSourceOption != null
&& CollectionUtils.isNotEmpty(dataSourceOption.getTables())) {
String tableName = dataSourceOption.getTables().get(0);
if (virtualTableService.containsVirtualTableByTableName(tableName)) {
virtualTableDetailRes = virtualTableService.queryVirtualTableByTableName(tableName);
}
}
return DataSourceConfigSwitcherUtils.mergeDatasourceConfig(
pluginName,
datasourceConf,
virtualTableDetailRes,
dataSourceOption,
selectTableFields,
businessMode,
pluginType,
connectorConfig);
}