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