Skip to content

Commit 7969d06

Browse files
SheheryarAamirolegz
authored andcommitted
GH-1127 Fix String cast to OffsetDateTime issue for CloudEventMessageUtils
Resolves #1127 Resolves #1128
1 parent cdb25ed commit 7969d06

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

spring-cloud-function-context/src/main/java/org/springframework/cloud/function/cloudevent/CloudEventMessageUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,8 @@ public static String getSubject(Message<?> message) {
205205

206206
public static OffsetDateTime getTime(Message<?> message) {
207207
String prefix = determinePrefixToUse(message.getHeaders());
208-
return (OffsetDateTime) message.getHeaders().get(prefix + _TIME);
208+
Object time = message.getHeaders().get(prefix + _TIME);
209+
return time instanceof String ? OffsetDateTime.parse((String) time) : null;
209210
}
210211

211212
@SuppressWarnings("unchecked")

spring-cloud-function-context/src/test/java/org/springframework/cloud/function/cloudevent/CloudEventFunctionTests.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.net.URI;
2020
import java.text.SimpleDateFormat;
21+
import java.time.OffsetDateTime;
2122
import java.util.UUID;
2223
import java.util.function.Function;
2324

@@ -58,7 +59,7 @@ public void testBinaryPojoToPojoDefaultOutputHeaderProvider() {
5859
.withData("{\"name\":\"Ricky\"}")
5960
.setId(id)
6061
.setSource("https://spring.io/")
61-
.setType("org.springframework")
62+
.setType("org.springframework.cloud.function.cloudevent.CloudEventFunctionTests$Person")
6263
.build();
6364

6465
assertThat(CloudEventMessageUtils.isCloudEvent(inputMessage)).isTrue();
@@ -73,7 +74,7 @@ public void testBinaryPojoToPojoDefaultOutputHeaderProvider() {
7374
*/
7475
assertThat(CloudEventMessageUtils.isCloudEvent(resultMessage)).isTrue();
7576
assertThat(CloudEventMessageUtils.getType(resultMessage)).isEqualTo(Person.class.getName());
76-
assertThat(CloudEventMessageUtils.getSource(resultMessage)).isEqualTo(URI.create("http://spring.io/"));
77+
assertThat(CloudEventMessageUtils.getSource(resultMessage)).isEqualTo(URI.create("https://spring.io/"));
7778
}
7879

7980
/*
@@ -204,7 +205,8 @@ public void testBinaryPojoToPojoDefaultOutputHeaderProviderWithPrefix() {
204205
.withData("{\"name\":\"Ricky\"}")
205206
.setHeader("ce_id", id)
206207
.setHeader("ce_source", "https://spring.io/")
207-
.setHeader("ce_type", "org.springframework")
208+
.setHeader("ce_type", "org.springframework.cloud.function.cloudevent.CloudEventFunctionTests$Person")
209+
.setHeader("ce_time", "2024-03-22T03:56:24Z")
208210
.build();
209211

210212
Message<Person> resultMessage = (Message<Person>) function.apply(inputMessage);
@@ -216,7 +218,8 @@ public void testBinaryPojoToPojoDefaultOutputHeaderProviderWithPrefix() {
216218
*/
217219
assertThat(CloudEventMessageUtils.isCloudEvent(resultMessage)).isTrue();
218220
assertThat(CloudEventMessageUtils.getType(resultMessage)).isEqualTo(Person.class.getName());
219-
assertThat(CloudEventMessageUtils.getSource(resultMessage)).isEqualTo(URI.create("http://spring.io/"));
221+
assertThat(CloudEventMessageUtils.getSource(resultMessage)).isEqualTo(URI.create("https://spring.io/"));
222+
assertThat(CloudEventMessageUtils.getTime(resultMessage)).isEqualTo(OffsetDateTime.parse("2024-03-22T03:56:24Z"));
220223
}
221224

222225
@SuppressWarnings("unchecked")
@@ -341,7 +344,7 @@ private Function<Object, Object> lookup(String functionDefinition, Class<?>... c
341344
@Configuration
342345
public static class TestConfiguration {
343346
@Bean
344-
Function<Person, Person> echo() {
347+
Function<Message<Person>, Message<Person>> echo() {
345348
return Function.identity();
346349
}
347350

0 commit comments

Comments
 (0)