Fix checkstyles

This commit is contained in:
Oleg Zhurakousky
2024-10-21 17:57:07 +02:00
parent fa9a80d803
commit 9888a08dff
24 changed files with 379 additions and 36 deletions

View File

@@ -18,6 +18,7 @@ package org.springframework.cloud.stream.binder;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
@@ -116,7 +117,7 @@ class PollableConsumerTests {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
return MessageBuilder
.withPayload(((String) message.getPayload()).toUpperCase())
.withPayload(((String) message.getPayload()).toUpperCase(Locale.ROOT))
.copyHeaders(message.getHeaders()).build();
}
@@ -301,7 +302,7 @@ class PollableConsumerTests {
public Message<?> preSend(Message<?> message, MessageChannel channel) {
return MessageBuilder
.withPayload(
new String((byte[]) message.getPayload()).toUpperCase())
new String((byte[]) message.getPayload()).toUpperCase(Locale.ROOT))
.copyHeaders(message.getHeaders()).build();
}
@@ -328,7 +329,7 @@ class PollableConsumerTests {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
return MessageBuilder
.withPayload(((String) message.getPayload()).toUpperCase())
.withPayload(((String) message.getPayload()).toUpperCase(Locale.ROOT))
.copyHeaders(message.getHeaders()).build();
}
@@ -379,7 +380,7 @@ class PollableConsumerTests {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
return MessageBuilder
.withPayload(((String) message.getPayload()).toUpperCase())
.withPayload(((String) message.getPayload()).toUpperCase(Locale.ROOT))
.copyHeaders(message.getHeaders()).build();
}

View File

@@ -16,6 +16,7 @@
package org.springframework.cloud.stream.function;
import java.util.Locale;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -241,7 +242,7 @@ class FunctionPostProcessingTests {
public Function<String, String> uppercase() {
return new PostProcessingFunction<String, String>() {
public String apply(String input) {
return input.toUpperCase();
return input.toUpperCase(Locale.ROOT);
}
public void postProcess(Message<String> result) {
@@ -260,7 +261,7 @@ class FunctionPostProcessingTests {
if (input.equals("error")) {
throw new RuntimeException("intentional");
}
return input.toUpperCase();
return input.toUpperCase(Locale.ROOT);
}
@Override

View File

@@ -18,6 +18,7 @@ package org.springframework.cloud.stream.function;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.Locale;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -94,7 +95,7 @@ class GreenfieldFunctionEnableBindingTests {
@Bean
public Function<String, String> toUpperCase() {
return String::toUpperCase;
return v -> v.toUpperCase(Locale.ROOT);
}
}

View File

@@ -0,0 +1,162 @@
/*
* Copyright 2024-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.
* You may obtain a copy of the License at
*
* https://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.springframework.cloud.stream.function;
import java.util.Locale;
import java.util.function.Function;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.function.context.message.MessageUtils;
import org.springframework.cloud.stream.binder.test.InputDestination;
import org.springframework.cloud.stream.binder.test.OutputDestination;
import org.springframework.cloud.stream.binder.test.TestChannelBinderConfiguration;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.support.GenericMessage;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.util.MimeTypeUtils;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Omer Celik
*/
public class HeaderTests {
@BeforeAll
public static void before() {
System.clearProperty("spring.cloud.function.definition");
}
@Test
void checkWithEmptyPojo() {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
TestChannelBinderConfiguration.getCompleteConfiguration(EmptyConfiguration.class))
.web(WebApplicationType.NONE).run("--spring.jmx.enabled=false")) {
StreamBridge streamBridge = context.getBean(StreamBridge.class);
Message<EmptyPojo> message = MessageBuilder.withPayload(new EmptyPojo()).build();
streamBridge.send("emptyConfigurationDestination", message);
OutputDestination outputDestination = context.getBean(OutputDestination.class);
Message<byte[]> messageReceived = outputDestination.receive(1000, "emptyConfigurationDestination");
MessageHeaders headers = messageReceived.getHeaders();
assertThat(headers).isNotNull();
assertThat(headers.get(MessageUtils.TARGET_PROTOCOL)).isEqualTo("kafka");
assertThat(headers.get(MessageHeaders.CONTENT_TYPE)).isEqualTo("application/json");
}
}
@Test
void checkIfHeaderProvidedInData() {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
TestChannelBinderConfiguration.getCompleteConfiguration(EmptyConfiguration.class))
.web(WebApplicationType.NONE).run("--spring.jmx.enabled=false")) {
StreamBridge streamBridge = context.getBean(StreamBridge.class);
String jsonPayload = "{\"name\":\"Omer\"}";
streamBridge.send("myBinding-out-0",
MessageBuilder.withPayload(jsonPayload.getBytes())
.setHeader("anyHeader", "anyValue")
.build(),
MimeTypeUtils.APPLICATION_JSON);
OutputDestination output = context.getBean(OutputDestination.class);
Message<byte[]> result = output.receive(1000, "myBinding-out-0");
MessageHeaders headers = result.getHeaders();
assertThat(headers).isNotNull();
assertThat(headers.get(MessageUtils.TARGET_PROTOCOL)).isEqualTo("kafka");
assertThat(headers.get(MessageHeaders.CONTENT_TYPE)).isEqualTo("application/json");
assertThat(headers.get("anyHeader")).isEqualTo("anyValue");
}
}
@Test
void checkGenericMessageSent() {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
TestChannelBinderConfiguration.getCompleteConfiguration(FunctionUpperCaseConfiguration.class))
.web(WebApplicationType.NONE)
.run("--spring.jmx.enabled=false",
"--spring.cloud.function.definition=uppercase")) {
String jsonPayload = "{\"surname\":\"Celik\"}";
InputDestination input = context.getBean(InputDestination.class);
input.send(new GenericMessage<>(jsonPayload.getBytes()), "uppercase-in-0");
OutputDestination output = context.getBean(OutputDestination.class);
Message<byte[]> result = output.receive(1000, "uppercase-out-0");
MessageHeaders headers = result.getHeaders();
assertThat(headers).isNotNull();
assertThat(headers.get(MessageUtils.TARGET_PROTOCOL)).isEqualTo("kafka");
assertThat(headers.get(MessageHeaders.CONTENT_TYPE)).isEqualTo("application/json");
}
}
@Test
void checkMessageWrappedFunctionalConsumer() {
System.clearProperty("spring.cloud.function.definition");
ConfigurableApplicationContext context = new SpringApplicationBuilder(
TestChannelBinderConfiguration.getCompleteConfiguration(FunctionMessageConfiguration.class))
.web(WebApplicationType.NONE)
.run("--spring.jmx.enabled=false",
"--spring.cloud.function.definition=uppercase"
);
InputDestination source = context.getBean(InputDestination.class);
source.send(new GenericMessage<>("Omer Celik".getBytes()), "uppercase-in-0");
OutputDestination target = context.getBean(OutputDestination.class);
Message<byte[]> message = target.receive(5, "uppercase-out-0");
MessageHeaders headers = message.getHeaders();
assertThat(headers).isNotNull();
assertThat(headers).isNotNull();
assertThat(headers.get(MessageHeaders.CONTENT_TYPE)).isEqualTo("application/json");
assertThat(headers.get(MessageUtils.TARGET_PROTOCOL)).isEqualTo("kafka");
}
@EnableAutoConfiguration
public static class EmptyConfiguration {
}
@EnableAutoConfiguration
public static class FunctionMessageConfiguration {
@Bean
public Function<Message<String>, Message<String>> uppercase() {
return msg -> MessageBuilder.withPayload(msg.getPayload().toUpperCase(Locale.ROOT)).build();
}
}
@EnableAutoConfiguration
@Configuration
public static class FunctionUpperCaseConfiguration {
@Bean
public Function<String, String> uppercase() {
return String::toUpperCase;
}
}
public static class EmptyPojo {
}
}

View File

@@ -24,6 +24,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
@@ -245,7 +246,7 @@ class ImplicitFunctionBindingTests {
// good, we expected it
}
Function<byte[], String> function = v -> new String(v).toUpperCase();
Function<byte[], String> function = v -> new String(v).toUpperCase(Locale.ROOT);
FunctionBindingTestUtils.bind(context, function);
input.send(new GenericMessage<byte[]>("hello".getBytes()));
@@ -1434,7 +1435,7 @@ class ImplicitFunctionBindingTests {
public Function<Flux<Message<Person>>, Flux<Message<Person>>> reactivePojoMessage() {
return flux -> flux.map(message -> {
Person p = message.getPayload();
p.setName(p.getName().toUpperCase());
p.setName(p.getName().toUpperCase(Locale.ROOT));
return MessageBuilder.withPayload(p).copyHeaders(message.getHeaders()).build();
});
}
@@ -1636,7 +1637,7 @@ class ImplicitFunctionBindingTests {
@Bean
public Function<String, String> uppercase() {
return v -> v.toUpperCase();
return v -> v.toUpperCase(Locale.ROOT);
}
@Bean

View File

@@ -18,6 +18,7 @@ package org.springframework.cloud.stream.function;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.Locale;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -296,7 +297,7 @@ class MultipleInputOutputFunctionTests {
@Bean
public Function<String, String> uppercase() {
return value -> value.toUpperCase();
return value -> value.toUpperCase(Locale.ROOT);
}
@Bean
@@ -378,8 +379,8 @@ class MultipleInputOutputFunctionTests {
@Bean
public Function<Tuple2<Flux<Person>, Flux<Employee>>, Flux<String>> multiInputSingleOutput() {
return tuple -> {
Flux<String> stringStream = tuple.getT1().map(p -> p.getName().toUpperCase());
Flux<String> intStream = tuple.getT2().map(p -> p.getName().toUpperCase());
Flux<String> stringStream = tuple.getT1().map(p -> p.getName().toUpperCase(Locale.ROOT));
Flux<String> intStream = tuple.getT2().map(p -> p.getName().toUpperCase(Locale.ROOT));
return Flux.merge(stringStream, intStream);
};
}

View File

@@ -18,6 +18,7 @@ package org.springframework.cloud.stream.function;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Locale;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -376,7 +377,6 @@ class RoutingFunctionTests {
@Bean
public Function<Message<String>, Message<String>> enrich() {
return x -> {
System.out.println("===> enrich");
return MessageBuilder.withPayload(x.getPayload()).setHeader("spring.cloud.function.definition", "uppercase").build();
};
}
@@ -384,8 +384,7 @@ class RoutingFunctionTests {
@Bean
public Function<String, String> uppercase() {
return x -> {
System.out.println("===> uppercase");
return x.toUpperCase();
return x.toUpperCase(Locale.ROOT);
};
}

View File

@@ -18,6 +18,7 @@ package org.springframework.cloud.stream.function;
import java.lang.reflect.Field;
import java.net.URI;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@@ -819,7 +820,7 @@ class StreamBridgeTests {
public static class DynamicProducerDestinationConfig {
@Bean
public Function<Message<String>, Message<String>> uppercase() {
return msg -> MessageBuilder.withPayload(msg.getPayload().toUpperCase())
return msg -> MessageBuilder.withPayload(msg.getPayload().toUpperCase(Locale.ROOT))
.setHeader("spring.cloud.stream.sendto.destination", "dynamicTopic").build();
}
}
@@ -1003,7 +1004,7 @@ class StreamBridgeTests {
public IntegrationFlow transform(StreamBridge bridge) {
return IntegrationFlow.from("foo").transform(v -> {
String s = new String((byte[]) v);
return s.toUpperCase();
return s.toUpperCase(Locale.ROOT);
})
.handle(v -> bridge.send("output", v))
.get();