public Builder conditional()

in datasource-client/src/main/java/org/apache/seatunnel/datasource/configuration/util/OptionRule.java [168:194]


        public <T> Builder conditional(@NonNull Option<T> conditionalOption, @NonNull List<T> expectValues, @NonNull Option<?>... requiredOptions) {
            for (Option<?> o : requiredOptions) {
                verifyDuplicate(o, "ConditionalOption");
                verifyRequiredOptionDefaultValue(o);
            }

            verifyConditionalExists(conditionalOption);

            if (expectValues.size() == 0) {
                throw new OptionValidationException(
                    String.format("conditional option '%s' must have expect values .", conditionalOption.key()));
            }

            /**
             * Each parameter can only be controlled by one other parameter
             */
            Expression expression = Expression.of(Condition.of(conditionalOption, expectValues.get(0)));
            for (int i = 0; i < expectValues.size(); i++) {
                if (i != 0) {
                    expression = expression.or(Expression.of(Condition.of(conditionalOption, expectValues.get(i))));
                }
            }

            this.requiredOptions.add(RequiredOption.ConditionalRequiredOptions.of(expression,
                new ArrayList<>(Arrays.asList(requiredOptions))));
            return this;
        }