diff --git a/function/spring-splitter-function/src/main/java/org/springframework/cloud/fn/splitter/SplitterFunctionConfiguration.java b/function/spring-splitter-function/src/main/java/org/springframework/cloud/fn/splitter/SplitterFunctionConfiguration.java index 2faf4829..ad1887aa 100644 --- a/function/spring-splitter-function/src/main/java/org/springframework/cloud/fn/splitter/SplitterFunctionConfiguration.java +++ b/function/spring-splitter-function/src/main/java/org/springframework/cloud/fn/splitter/SplitterFunctionConfiguration.java @@ -18,11 +18,13 @@ package org.springframework.cloud.fn.splitter; import java.nio.charset.Charset; import java.util.List; +import java.util.Optional; import java.util.function.Function; import org.reactivestreams.Publisher; import reactor.core.publisher.Flux; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.AnyNestedCondition; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -49,9 +51,15 @@ import org.springframework.messaging.MessageChannel; public class SplitterFunctionConfiguration { @Bean - public Function, List>> splitterFunction(AbstractMessageSplitter messageSplitter, + public Function, List>> splitterFunction( + @Qualifier("expressionSplitter") Optional expressionSplitter, + @Qualifier("fileSplitter") Optional fileSplitter, + @Qualifier("defaultSplitter") Optional defaultSplitter, SplitterFunctionProperties splitterFunctionProperties) { + AbstractMessageSplitter messageSplitter = expressionSplitter.or(() -> fileSplitter) + .or(() -> defaultSplitter) + .get(); messageSplitter.setApplySequence(splitterFunctionProperties.isApplySequence()); ThreadLocalFluxSinkMessageChannel outputChannel = new ThreadLocalFluxSinkMessageChannel(); messageSplitter.setOutputChannel(outputChannel);