private Config mergeTaskConfig()

in seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/JobInstanceServiceImpl.java [429:495]


    private Config mergeTaskConfig(
            JobTask task,
            PluginType pluginType,
            String connectorType,
            BusinessMode businessMode,
            Config connectorConfig,
            OptionRule optionRule)
            throws JsonProcessingException {

        Long datasourceInstanceId = task.getDataSourceId();
        String pluginName =
                datasourceService
                        .queryDatasourceDetailById(datasourceInstanceId.toString())
                        .getPluginName();
        Config datasourceConf =
                parseConfigWithOptionRule(
                        pluginType,
                        connectorType,
                        datasourceService.queryDatasourceConfigById(
                                datasourceInstanceId.toString()),
                        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);
        }

        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);
    }