Fix HTTP header propagation logic
Related to GH-422 and GH-606
This commit is contained in:
@@ -113,6 +113,15 @@ public class CloudeventDemoApplication {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Function<Map<String, Object>, Map<String, Object>> consumeAndProduceCloudEventAsPojoToPojo() {
|
||||||
|
return ceMessage -> {
|
||||||
|
ceMessage.put("version", "10.0");
|
||||||
|
ceMessage.put("releaseDate", "01-10-2050");
|
||||||
|
return ceMessage;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public CloudEventAttributesProvider cloudEventAttributesProvider() {
|
public CloudEventAttributesProvider cloudEventAttributesProvider() {
|
||||||
return new CustomCloudEventAtttributesProvider();
|
return new CustomCloudEventAtttributesProvider();
|
||||||
|
|||||||
@@ -191,7 +191,24 @@ public class RequestProcessor {
|
|||||||
.map(message -> message.getPayload());
|
.map(message -> message.getPayload());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
builder.headers(HeaderUtils.sanitize(request.headers()));
|
if (result instanceof Mono) {
|
||||||
|
result = Mono.from(result)
|
||||||
|
.map(message -> MessageUtils.unpack(handler, message))
|
||||||
|
.doOnNext(value -> {
|
||||||
|
builder.headers(HeaderUtils.sanitize(request.headers()));
|
||||||
|
addHeaders(builder, value);
|
||||||
|
})
|
||||||
|
.map(message -> message.getPayload());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
result = Flux.from(result)
|
||||||
|
.map(message -> MessageUtils.unpack(handler, message))
|
||||||
|
.doOnNext(value -> {
|
||||||
|
builder.headers(HeaderUtils.sanitize(request.headers()));
|
||||||
|
addHeaders(builder, value);
|
||||||
|
})
|
||||||
|
.map(message -> message.getPayload());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isOutputSingle(handler)
|
if (isOutputSingle(handler)
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ public final class FunctionWebUtils {
|
|||||||
}
|
}
|
||||||
else if (result instanceof Message) {
|
else if (result instanceof Message) {
|
||||||
if (!isMessage) {
|
if (!isMessage) {
|
||||||
result = ((Message) result).getPayload();
|
// result = ((Message) result).getPayload();
|
||||||
}
|
}
|
||||||
else if (((Message) result).getPayload() instanceof byte[]) {
|
else if (((Message) result).getPayload() instanceof byte[]) {
|
||||||
String str = new String((byte[]) ((Message) result).getPayload());
|
String str = new String((byte[]) ((Message) result).getPayload());
|
||||||
|
|||||||
Reference in New Issue
Block a user