Deprecate Builder.customizeRequest() in favor of httpRequestCustomizer() (#791)
Deprecate Builder.customizeRequest() in HttpClientSseClientTransport and HttpClientStreamableHttpTransport customizeRequest() executes its consumer once at build time, freezing headers into the shared requestBuilder. This silently breaks OAuth token refresh scenarios where the Authorization header needs to be updated after the transport is built. Add @Deprecated and update Javadoc to clarify the build-time-only semantics and guide users toward httpRequestCustomizer() or asyncHttpRequestCustomizer() which run on every request. Closes #788 Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
This commit is contained in:
parent
3c27d8e3f8
commit
7e4c179b77
2 changed files with 16 additions and 2 deletions
|
|
@ -241,10 +241,17 @@ public class HttpClientSseClientTransport implements McpClientTransport {
|
|||
}
|
||||
|
||||
/**
|
||||
* Customizes the HTTP client builder.
|
||||
* Applies the given consumer to the shared {@link HttpRequest.Builder} <b>once,
|
||||
* at build time</b>. Any headers set here are frozen into the template and
|
||||
* <b>cannot be updated</b> after the transport is built.
|
||||
* @param requestCustomizer the consumer to customize the HTTP request builder
|
||||
* @return this builder
|
||||
* @deprecated Use {@link #requestBuilder(HttpRequest.Builder)} for stable
|
||||
* headers, or {@link #httpRequestCustomizer(McpSyncHttpClientRequestCustomizer)}
|
||||
* / {@link #asyncHttpRequestCustomizer(McpAsyncHttpClientRequestCustomizer)} for
|
||||
* dynamic per-request customization.
|
||||
*/
|
||||
@Deprecated
|
||||
public Builder customizeRequest(final Consumer<HttpRequest.Builder> requestCustomizer) {
|
||||
Assert.notNull(requestCustomizer, "requestCustomizer must not be null");
|
||||
requestCustomizer.accept(requestBuilder);
|
||||
|
|
|
|||
|
|
@ -738,10 +738,17 @@ public class HttpClientStreamableHttpTransport implements McpClientTransport {
|
|||
}
|
||||
|
||||
/**
|
||||
* Customizes the HTTP client builder.
|
||||
* Applies the given consumer to the shared {@link HttpRequest.Builder} <b>once,
|
||||
* at build time</b>. Any headers set here are frozen into the template and
|
||||
* <b>cannot be updated</b> after the transport is built.
|
||||
* @param requestCustomizer the consumer to customize the HTTP request builder
|
||||
* @return this builder
|
||||
* @deprecated Use {@link #requestBuilder(HttpRequest.Builder)} for stable
|
||||
* headers, or {@link #httpRequestCustomizer(McpSyncHttpClientRequestCustomizer)}
|
||||
* / {@link #asyncHttpRequestCustomizer(McpAsyncHttpClientRequestCustomizer)} for
|
||||
* dynamic per-request customization.
|
||||
*/
|
||||
@Deprecated
|
||||
public Builder customizeRequest(final Consumer<HttpRequest.Builder> requestCustomizer) {
|
||||
Assert.notNull(requestCustomizer, "requestCustomizer must not be null");
|
||||
requestCustomizer.accept(requestBuilder);
|
||||
|
|
|
|||
Loading…
Reference in a new issue