Skip to content

Commit

Permalink
GH-422, GH-606 Fix attributes generatioin
Browse files Browse the repository at this point in the history
  • Loading branch information
olegz committed Nov 16, 2020
1 parent 8ea309c commit 1a6e9d4
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ public static String determinePrefixToUse(Message<?> inputMessage) {
}
}

public static Map<String, Object> generateDefaultCloudEventHeaders(Message<?> inputMessage, Object result, String applicationName) {
public static CloudEventAttributes generateAttributes(Message<?> inputMessage, Object result, String applicationName) {
CloudEventAttributes attributes = new CloudEventAttributes(inputMessage.getHeaders(), CloudEventMessageUtils.determinePrefixToUse(inputMessage));
if (attributes.isValidCloudEvent()) {
return attributes
Expand All @@ -295,6 +295,6 @@ public static Map<String, Object> generateDefaultCloudEventHeaders(Message<?> in
.setType(result.getClass().getName())
.setSource(applicationName);
}
return Collections.emptyMap();
return new CloudEventAttributes(Collections.emptyMap());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import java.util.function.BiFunction;
import java.util.function.Consumer;
Expand Down Expand Up @@ -168,14 +167,14 @@ else if (this.isSpecialFunctionRegistration(functionNames, functionName)) {
@Override
public Message<?> apply(Message<?> inputMessage, Object invocationResult) {
// TODO: Factor it out! Cloud Events specific code
Map<String, Object> generatedCeHeaders = CloudEventMessageUtils
.generateDefaultCloudEventHeaders(inputMessage, invocationResult, getApplicationName());
CloudEventAttributes attributes = new CloudEventAttributes(generatedCeHeaders);
CloudEventAttributes generatedCeHeaders = CloudEventMessageUtils
.generateAttributes(inputMessage, invocationResult, getApplicationName());
CloudEventAttributes attributes = new CloudEventAttributes(generatedCeHeaders, CloudEventMessageUtils.determinePrefixToUse(inputMessage));
if (cloudEventAtttributesProvider != null) {
cloudEventAtttributesProvider.generateDefaultCloudEventHeaders(attributes);
}
Message message = MessageBuilder.withPayload(invocationResult)
.copyHeaders(generatedCeHeaders)
.copyHeaders(attributes)
.build();

return message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package io.spring.cloudevent;

import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;

import org.springframework.boot.SpringApplication;
Expand Down Expand Up @@ -96,7 +97,9 @@ public Function<Message<SpringReleaseEvent>, Message<SpringReleaseEvent>> consum

@Bean
public CloudEventAttributesProvider cloudEventAttributesProvider() {
return attributes -> attributes.setSource("https://interface21.com/").setType("com.interface21");
return attributes -> {
attributes.setSource("https://interface21.com/").setType("com.interface21");
};
}


Expand All @@ -116,4 +119,12 @@ public Function<SpringReleaseEvent, SpringReleaseEvent> consumeAndProduceCloudEv
return event;
};
}

// @Bean
// public Consumer<SpringReleaseEvent> pojoConsumer(CloudEventAttributesProvider provider) {
// return event -> {
//
// provider.generateDefaultCloudEventHeaders(attributes);
// };
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -215,9 +215,9 @@ public void testAsBinaryMapToMap() throws Exception {

assertThat(response.getBody()).isEqualTo("{\"releaseDate\":\"01-10-2050\",\"releaseName\":\"Spring Framework\",\"version\":\"10.0\"}");
assertThat(response.getHeaders().get(CloudEventMessageUtils.HTTP_ATTR_PREFIX + CloudEventMessageUtils.SOURCE))
.isEqualTo(Collections.singletonList("http://spring.io/application-application"));
.isEqualTo(Collections.singletonList("https://interface21.com/"));
assertThat(response.getHeaders().get(CloudEventMessageUtils.HTTP_ATTR_PREFIX + CloudEventMessageUtils.TYPE))
.isEqualTo(Collections.singletonList(LinkedHashMap.class.getName()));
.isEqualTo(Collections.singletonList("com.interface21"));
}

@Test
Expand All @@ -232,9 +232,9 @@ public void testAsBinaryPojoToPojo() throws Exception {

assertThat(response.getBody()).isEqualTo("{\"releaseDate\":\"01-10-2006\",\"releaseName\":\"Spring Framework\",\"version\":\"2.0\"}");
assertThat(response.getHeaders().get(CloudEventMessageUtils.HTTP_ATTR_PREFIX + CloudEventMessageUtils.SOURCE))
.isEqualTo(Collections.singletonList("http://spring.io/application-application"));
.isEqualTo(Collections.singletonList("https://interface21.com/"));
assertThat(response.getHeaders().get(CloudEventMessageUtils.HTTP_ATTR_PREFIX + CloudEventMessageUtils.TYPE))
.isEqualTo(Collections.singletonList(SpringReleaseEvent.class.getName()));
.isEqualTo(Collections.singletonList("com.interface21"));
}


Expand All @@ -259,9 +259,9 @@ public void testAsBinaryPojoToPojoWrongHeaders() throws Exception {

assertThat(response.getBody()).isEqualTo("{\"releaseDate\":\"01-10-2006\",\"releaseName\":\"Spring Framework\",\"version\":\"2.0\"}");
assertThat(response.getHeaders().get(CloudEventMessageUtils.HTTP_ATTR_PREFIX + CloudEventMessageUtils.SOURCE))
.isEqualTo(Collections.singletonList("http://spring.io/application-application"));
.isEqualTo(Collections.singletonList("https://interface21.com/"));
assertThat(response.getHeaders().get(CloudEventMessageUtils.HTTP_ATTR_PREFIX + CloudEventMessageUtils.TYPE))
.isEqualTo(Collections.singletonList(SpringReleaseEvent.class.getName()));
.isEqualTo(Collections.singletonList("com.interface21"));
assertThat(response.getHeaders().get(CloudEventMessageUtils.ATTR_PREFIX + CloudEventMessageUtils.TYPE)).isNull();
assertThat(response.getHeaders().get(CloudEventMessageUtils.ATTR_PREFIX + CloudEventMessageUtils.SOURCE)).isNull();
assertThat(response.getHeaders().get(CloudEventMessageUtils.ATTR_PREFIX + CloudEventMessageUtils.ID)).isNull();
Expand Down

0 comments on commit 1a6e9d4

Please sign in to comment.