Content type redesign
Fixes #992, #1050, #1051, #1052 Adding custom jackson converter with some tests Adds kryo message converter to replace codec Checkstyle changes Removing codec support - Removed codec dependency from AbstractBinder - MessageSerializationUtils is almost an empty shell for now, just to keep code compiling until we get EmbeddedHeaders interceptors - Updated Kryo tests Removing codec module from build Added a new Annotation for custom converters '@StreamConverter' Fixed some tests with new expected behavior Moved broken tests to a temporary package to keep track of progress Fixed KryoConverter to fail based on headers Fixed a couple of more tests Making converters strict to only convert their corresponding contentType Bypassing conversion for ErrorMessages * Configuring SI ConfigurableCompositeMessageConverter - Moved ContentType related beans into separate configuration - Configured SI ConfigurableCompositeMessageConverter to use same converters as Stream does (for ServiceActivator) - TupleConverter should return byte[] as all other converters - Fixed tests * Fixes tests - Revert to Boot 2.0.0.M3. Snapshots breaking actuator - Checkstyle fixes - Disable JsonUnmarshalling as a catch all converter Fixing Schema tests Fixing Metrics tests Fixing reactive tests applying checkstyle fixes * Adding new content type tests - Fixed ContentTypeInterceptor misusage of default mimeType Changing contentType doc section Improving doc section Last minute polish Fixing BinderTests to use bytes to compare messages Applied changes to Base Binders test to use the new contentType handling mechanism PR review fixes Renaming StreamConverter -> StreamMessageConverter
This commit is contained in:
committed by
Soby Chacko
parent
24cf992301
commit
171f034a8c
@@ -42,7 +42,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
* @author Marius Bogoevici
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@SpringBootTest(classes = AggregateWithBeanTest.ChainedProcessors.class, properties = { "server.port=-1" })
|
||||
@SpringBootTest(classes = AggregateWithBeanTest.ChainedProcessors.class, properties = { "server.port=-1","--spring.cloud.stream.bindings.input.contentType=text/plain","--spring.cloud.stream.bindings.output.contentType=text/plain" })
|
||||
public class AggregateWithBeanTest {
|
||||
|
||||
@Autowired
|
||||
@@ -56,9 +56,9 @@ public class AggregateWithBeanTest {
|
||||
Processor uppercaseProcessor = aggregateApplication.getBinding(Processor.class, "upper");
|
||||
Processor suffixProcessor = aggregateApplication.getBinding(Processor.class, "suffix");
|
||||
uppercaseProcessor.input().send(MessageBuilder.withPayload("Hello").build());
|
||||
Message<?> receivedMessage = messageCollector.forChannel(suffixProcessor.output()).poll(1, TimeUnit.SECONDS);
|
||||
Message<byte[]> receivedMessage = (Message<byte[]>) messageCollector.forChannel(suffixProcessor.output()).poll(1, TimeUnit.SECONDS);
|
||||
assertThat(receivedMessage).isNotNull();
|
||||
assertThat(receivedMessage.getPayload()).isEqualTo("HELLO WORLD!");
|
||||
assertThat(receivedMessage.getPayload()).isEqualTo("HELLO WORLD!".getBytes());
|
||||
}
|
||||
|
||||
@SpringBootApplication
|
||||
|
||||
@@ -48,16 +48,16 @@ public class AggregateWithMainTest {
|
||||
ConfigurableApplicationContext context = new AggregateApplicationBuilder(MainConfiguration.class)
|
||||
.from(UppercaseProcessor.class).namespace("upper")
|
||||
.to(SuffixProcessor.class).namespace("suffix")
|
||||
.run();
|
||||
.run("--spring.cloud.stream.bindings.input.contentType=text/plain","--spring.cloud.stream.bindings.output.contentType=text/plain");
|
||||
|
||||
AggregateApplication aggregateAccessor = context.getBean(AggregateApplication.class);
|
||||
MessageCollector messageCollector = context.getBean(MessageCollector.class);
|
||||
Processor uppercaseProcessor = aggregateAccessor.getBinding(Processor.class, "upper");
|
||||
Processor suffixProcessor = aggregateAccessor.getBinding(Processor.class, "suffix");
|
||||
uppercaseProcessor.input().send(MessageBuilder.withPayload("Hello").build());
|
||||
Message<?> receivedMessage = messageCollector.forChannel(suffixProcessor.output()).poll(1, TimeUnit.SECONDS);
|
||||
Message<byte[]> receivedMessage = (Message<byte[]>) messageCollector.forChannel(suffixProcessor.output()).poll(1, TimeUnit.SECONDS);
|
||||
assertThat(receivedMessage).isNotNull();
|
||||
assertThat(receivedMessage.getPayload()).isEqualTo("HELLO WORLD!");
|
||||
assertThat(receivedMessage.getPayload()).isEqualTo("HELLO WORLD!".getBytes());
|
||||
context.close();
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,9 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@SpringBootTest(classes = AutoconfigurationDisabledTest.MyProcessor.class, properties = {
|
||||
"server.port=-1",
|
||||
"spring.cloud.stream.defaultBinder=test"
|
||||
"spring.cloud.stream.defaultBinder=test",
|
||||
"--spring.cloud.stream.bindings.input.contentType=text/plain",
|
||||
"--spring.cloud.stream.bindings.output.contentType=text/plain"
|
||||
})
|
||||
@DirtiesContext
|
||||
public class AutoconfigurationDisabledTest {
|
||||
@@ -57,9 +59,9 @@ public class AutoconfigurationDisabledTest {
|
||||
public void testAutoconfigurationDisabled() throws Exception {
|
||||
processor.input().send(MessageBuilder.withPayload("Hello").build());
|
||||
// Since the interaction is synchronous, the result should be immediate
|
||||
Message<?> response = messageCollector.forChannel(processor.output()).poll(1000, TimeUnit.MILLISECONDS);
|
||||
Message<byte[]> response = (Message<byte[]>) messageCollector.forChannel(processor.output()).poll(1000, TimeUnit.MILLISECONDS);
|
||||
assertThat(response).isNotNull();
|
||||
assertThat(response.getPayload()).isEqualTo("Hello world");
|
||||
assertThat(response.getPayload()).isEqualTo("Hello world".getBytes());
|
||||
}
|
||||
|
||||
@SpringBootApplication(exclude = TestSupportBinderAutoConfiguration.class)
|
||||
|
||||
@@ -41,7 +41,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
* correctly.
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@SpringBootTest(classes = ExampleTest.MyProcessor.class, properties = { "server.port=-1" })
|
||||
@SpringBootTest(classes = ExampleTest.MyProcessor.class, properties = { "server.port=-1", "--spring.cloud.stream.bindings.input.contentType=text/plain", "--spring.cloud.stream.bindings.output.contentType=text/plain" })
|
||||
@DirtiesContext
|
||||
public class ExampleTest {
|
||||
|
||||
@@ -60,8 +60,8 @@ public class ExampleTest {
|
||||
public void testWiring() {
|
||||
Message<String> message = new GenericMessage<>("hello");
|
||||
this.processor.input().send(message);
|
||||
Message<String> received = (Message<String>) this.messageCollector.forChannel(this.processor.output()).poll();
|
||||
assertThat(received.getPayload()).isEqualTo("hello world");
|
||||
Message<byte[]> received = (Message<byte[]>) this.messageCollector.forChannel(this.processor.output()).poll();
|
||||
assertThat(received.getPayload()).isEqualTo("hello world".getBytes());
|
||||
}
|
||||
|
||||
@SpringBootApplication
|
||||
|
||||
Reference in New Issue
Block a user