Make Mongo & JDBC modules as auto-config

* Also make a `spring-splitter-function` as an auto-config since it used in Mongo & JDBC suppliers
* Fix all their Checkstyle violations
This commit is contained in:
Artem Bilan
2024-01-09 13:10:18 -05:00
parent 26479fb1bc
commit 8ef105b9c5
37 changed files with 184 additions and 183 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2011-2020 the original author or authors.
* Copyright 2011-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,14 +23,13 @@ import java.util.function.Function;
import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.integration.channel.ReactiveStreamsSubscribableChannel;
import org.springframework.integration.file.splitter.FileSplitter;
import org.springframework.integration.splitter.AbstractMessageSplitter;
@@ -39,7 +38,13 @@ import org.springframework.integration.splitter.ExpressionEvaluatingSplitter;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
@Configuration
/**
* Auto-configuration for Splitter function.
*
* @author Artem Bilan
* @author Soby Chacko
*/
@AutoConfiguration
@EnableConfigurationProperties(SplitterFunctionProperties.class)
public class SplitterFunctionConfiguration {
@@ -50,7 +55,7 @@ public class SplitterFunctionConfiguration {
messageSplitter.setApplySequence(splitterFunctionProperties.isApplySequence());
ThreadLocalFluxSinkMessageChannel outputChannel = new ThreadLocalFluxSinkMessageChannel();
messageSplitter.setOutputChannel(outputChannel);
return message -> {
return (message) -> {
messageSplitter.handleMessage(message);
return outputChannel.publisherThreadLocal.get();
};
@@ -59,8 +64,7 @@ public class SplitterFunctionConfiguration {
@Bean
@ConditionalOnProperty(prefix = "splitter", name = "expression")
public AbstractMessageSplitter expressionSplitter(SplitterFunctionProperties splitterFunctionProperties) {
return new ExpressionEvaluatingSplitter(
new SpelExpressionParser().parseExpression(splitterFunctionProperties.getExpression()));
return new ExpressionEvaluatingSplitter(splitterFunctionProperties.getExpression());
}
@Bean

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2019-2020 the original author or authors.
* Copyright 2019-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,11 @@ package org.springframework.cloud.fn.splitter;
import jakarta.validation.constraints.AssertTrue;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.expression.Expression;
import org.springframework.validation.annotation.Validated;
/**
* Configuration properties for the Splitter Processor app.
* Configuration properties for the Splitter function.
*
* @author Gary Russell
* @author Artem Bilan
@@ -34,7 +35,7 @@ public class SplitterFunctionProperties {
/**
* A SpEL expression for splitting payloads.
*/
private String expression;
private Expression expression;
/**
* When expression is null, delimiters to use when tokenizing {@link String} payloads.
@@ -63,11 +64,11 @@ public class SplitterFunctionProperties {
*/
private boolean applySequence = true;
public String getExpression() {
public Expression getExpression() {
return this.expression;
}
public void setExpression(String expression) {
public void setExpression(Expression expression) {
this.expression = expression;
}

View File

@@ -0,0 +1,4 @@
/**
* The Splitter function auto-configuration support.
*/
package org.springframework.cloud.fn.splitter;

View File

@@ -0,0 +1 @@
org.springframework.cloud.fn.splitter.SplitterFunctionConfiguration

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2011-2020 the original author or authors.
* Copyright 2011-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,7 +40,7 @@ public class SplitterFunctionApplicationTests {
@Test
public void testExpressionSplitter() {
List<Message<?>> messageList = this.splitter.apply(new GenericMessage<>("hello,world"));
assertThat(messageList).extracting(m -> m.getPayload().toString()).contains("hello", "world");
assertThat(messageList).extracting((m) -> m.getPayload().toString()).contains("hello", "world");
}
@SpringBootApplication