Avoid ClassCastException when using ServerHttpResponseDecorator

This commit is contained in:
Marta Medio
2022-11-18 14:20:02 +01:00
committed by spencergibb
parent 53cc68fbf5
commit ab7f79bd08

View File

@@ -22,6 +22,7 @@ import org.springframework.core.Ordered;
import org.springframework.http.HttpHeaders;
import org.springframework.http.server.reactive.AbstractServerHttpResponse;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.http.server.reactive.ServerHttpResponseDecorator;
import org.springframework.util.StringUtils;
import org.springframework.web.server.ServerWebExchange;
@@ -41,8 +42,15 @@ public class GRPCResponseHeadersFilter implements HttpHeadersFilter, Ordered {
trailerHeaderValue += "," + originalTrailerHeaderValue;
}
responseHeaders.set(HttpHeaders.TRAILER, trailerHeaderValue);
((HttpServerResponse) ((AbstractServerHttpResponse) response).getNativeResponse())
.trailerHeaders(h -> h.set("grpc-status", "0"));
while (response instanceof ServerHttpResponseDecorator) {
response = ((ServerHttpResponseDecorator) response).getDelegate();
}
if (response instanceof AbstractServerHttpResponse) {
((HttpServerResponse) ((AbstractServerHttpResponse) response).getNativeResponse())
.trailerHeaders(h -> h.set("grpc-status", "0"));
}
}
return headers;
}