This is an automated email from the ASF dual-hosted git repository. zhongjiajie pushed a commit to branch 3.0.0-prepare in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
commit a8b1b61bd2d68e62c1e06ef039275146da72f5f5 Author: caishunfeng <[email protected]> AuthorDate: Thu Jul 28 15:07:04 2022 +0800 [Bug-11071] fix local params (#11184) * fix local params * add CI case (cherry picked from commit 818648df7dab928ed61d7239454e7996079316c7) --- .../task/api/parameters/AbstractParameters.java | 5 +- .../api/parameters/AbstractParametersTest.java | 54 ++++++++++++++++++++++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/AbstractParameters.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/AbstractParameters.java index 4b2e8c858a..76c8b9c3fc 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/AbstractParameters.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/parameters/AbstractParameters.java @@ -31,6 +31,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; @@ -91,9 +92,9 @@ public abstract class AbstractParameters implements IParameters { public Map<String, Property> getInputLocalParametersMap() { Map<String, Property> localParametersMaps = new LinkedHashMap<>(); if (localParams != null) { - for (Property property : localParams) { - if (property.getDirect() == null || property.getDirect().equals(Direct.IN)) { + // The direct of some tasks is empty, default IN + if (property.getDirect() == null || Objects.equals(Direct.IN, property.getDirect())) { localParametersMaps.put(property.getProp(), property); } } diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/parameters/AbstractParametersTest.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/parameters/AbstractParametersTest.java new file mode 100644 index 0000000000..44f73c242b --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/parameters/AbstractParametersTest.java @@ -0,0 +1,54 @@ +/* + * 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; + +import org.apache.dolphinscheduler.plugin.task.api.enums.DataType; +import org.apache.dolphinscheduler.plugin.task.api.enums.Direct; +import org.apache.dolphinscheduler.plugin.task.api.model.Property; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Test; + +public class AbstractParametersTest { + + @Test + public void testGetInputLocalParametersMap() { + AbstractParameters parameters = new AbstractParameters() { + @Override + public boolean checkParameters() { + return false; + } + }; + List<Property> localParams = new ArrayList<>(); + localParams.add(new Property("key1", null, null, "value1")); + localParams.add(new Property("key2", Direct.IN, DataType.VARCHAR, "value2")); + localParams.add(new Property("key3", Direct.OUT, DataType.VARCHAR, null)); + parameters.setLocalParams(localParams); + + // should return property key1 and key2 (direct null and IN) + Map<String, Property> inputLocalParametersMap = parameters.getInputLocalParametersMap(); + + Assert.assertEquals(2, inputLocalParametersMap.size()); + Assert.assertTrue(inputLocalParametersMap.containsKey("key1")); + Assert.assertTrue(inputLocalParametersMap.containsKey("key2")); + } +}
