Fix CloudEvent prefix and fix the name of CloudEventAttributesProvider.java

This commit is contained in:
Oleg Zhurakousky
2020-11-13 16:07:33 +01:00
parent e627aa1a28
commit 311649c312
13 changed files with 59 additions and 28 deletions

View File

@@ -16,13 +16,18 @@
package io.spring.cloudevent;
import java.util.Collections;
import java.util.Map;
import java.util.UUID;
import java.util.function.Function;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.function.cloudevent.CloudEventAttributes;
import org.springframework.cloud.function.cloudevent.CloudEventAtttributesProvider;
import org.springframework.cloud.function.cloudevent.CloudEventAttributesProvider;
import org.springframework.cloud.function.cloudevent.CloudEventMessageUtils;
import org.springframework.cloud.function.cloudevent.DefaultCloudEventAttributesProvider;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;
@@ -83,7 +88,7 @@ public class CloudeventDemoApplication {
}
@Bean
public Function<Message<SpringReleaseEvent>, Message<SpringReleaseEvent>> consumeAndProduceCloudEvent(CloudEventAtttributesProvider ceAttrProvider) {
public Function<Message<SpringReleaseEvent>, Message<SpringReleaseEvent>> consumeAndProduceCloudEvent(CloudEventAttributesProvider ceAttrProvider) {
return ceMessage -> {
SpringReleaseEvent data = ceMessage.getPayload();
data.setVersion("2.0");
@@ -107,4 +112,24 @@ public class CloudeventDemoApplication {
return data;
};
}
@Bean
public CloudEventAttributesProvider cloudEventAttributesProvider() {
return new CustomCloudEventAtttributesProvider();
}
public static class CustomCloudEventAtttributesProvider extends DefaultCloudEventAttributesProvider {
@Override
public Map<String, Object> generateDefaultCloudEventHeaders(Message<?> inputMessage, Object result) {
if (inputMessage.getHeaders().containsKey(CloudEventMessageUtils.CE_ID)) { // input is a cloud event
String applicationName = "http://spring.io/fooBar";
return this.get(inputMessage.getHeaders())
.setId(UUID.randomUUID().toString())
.setType(result.getClass().getName())
.setSource(applicationName);
}
return Collections.emptyMap();
}
}
}

View File

@@ -1 +1 @@
spring.cloud.function.definition=asPOJOMessage
#spring.cloud.function.definition=asPOJOMessage

View File

@@ -20,7 +20,7 @@ import java.util.function.Function;
import org.junit.jupiter.api.Test;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.function.cloudevent.CloudEventAtttributesProvider;
import org.springframework.cloud.function.cloudevent.CloudEventAttributesProvider;
import org.springframework.cloud.function.cloudevent.DefaultCloudEventAttributesProvider;
import org.springframework.cloud.function.context.FunctionCatalog;
import org.springframework.context.ConfigurableApplicationContext;
@@ -39,7 +39,7 @@ public class CloudeventDemoApplicationFunctionTests {
try(ConfigurableApplicationContext context = SpringApplication.run(CloudeventDemoApplication.class)) {
FunctionCatalog catalog = context.getBean(FunctionCatalog.class);
CloudEventAtttributesProvider ceAttrProvider = new DefaultCloudEventAttributesProvider();
CloudEventAttributesProvider ceAttrProvider = new DefaultCloudEventAttributesProvider();
Message<String> binaryCloudEventMessage = MessageBuilder
.withPayload("{\"releaseDate\":\"24-03-2004\", \"releaseName\":\"Spring Framework\", \"version\":\"1.0\"}")
.copyHeaders(ceAttrProvider.get("spring.io/spring-event", "com.example.springevent"))
@@ -68,7 +68,7 @@ public class CloudeventDemoApplicationFunctionTests {
public void demoPureFunctionProduceConsumeCloudEvent() {
try(ConfigurableApplicationContext context = SpringApplication.run(CloudeventDemoApplication.class)) {
FunctionCatalog catalog = context.getBean(FunctionCatalog.class);
CloudEventAtttributesProvider ceAttrProvider = new DefaultCloudEventAttributesProvider();
CloudEventAttributesProvider ceAttrProvider = new DefaultCloudEventAttributesProvider();
Message<String> binaryCloudEventMessage = MessageBuilder
.withPayload("{\"releaseDate\":\"24-03-2004\", \"releaseName\":\"Spring Framework\", \"version\":\"1.0\"}")
.copyHeaders(ceAttrProvider.get("spring.io/spring-event", "com.example.springevent"))
@@ -88,7 +88,7 @@ public class CloudeventDemoApplicationFunctionTests {
public void demoPureFunctionProduceConsumeCloudEventAsPojo() {
try(ConfigurableApplicationContext context = SpringApplication.run(CloudeventDemoApplication.class)) {
FunctionCatalog catalog = context.getBean(FunctionCatalog.class);
CloudEventAtttributesProvider ceAttrProvider = new DefaultCloudEventAttributesProvider();
CloudEventAttributesProvider ceAttrProvider = new DefaultCloudEventAttributesProvider();
Message<String> binaryCloudEventMessage = MessageBuilder
.withPayload("{\"releaseDate\":\"24-03-2004\", \"releaseName\":\"Spring Framework\", \"version\":\"1.0\"}")
.copyHeaders(ceAttrProvider.get("spring.io/spring-event", "com.example.springevent"))

View File

@@ -174,12 +174,12 @@ public class CloudeventDemoApplicationRESTTests {
SpringApplication.run(CloudeventDemoApplication.class);
String payload = "{\n" +
" \"specversion\" : \"1.0\",\n" +
" \"type\" : \"org.springframework\",\n" +
" \"source\" : \"https://spring.io/\",\n" +
" \"id\" : \"A234-1234-1234\",\n" +
" \"datacontenttype\" : \"application/json\",\n" +
" \"data\" : {\n" +
" \"ce-specversion\" : \"1.0\",\n" +
" \"ce-type\" : \"org.springframework\",\n" +
" \"ce-source\" : \"https://spring.io/\",\n" +
" \"ce-id\" : \"A234-1234-1234\",\n" +
" \"ce-datacontenttype\" : \"application/json\",\n" +
" \"ce-data\" : {\n" +
" \"version\" : \"1.0\",\n" +
" \"releaseName\" : \"Spring Framework\",\n" +
" \"releaseDate\" : \"24-03-2004\"\n" +