Quote ETag if not quoted in HttpHeaders#setETag

This aligns HttpHeaders with other places like ServletWebRequest and
DefaultWebExchange where an ETag is accepted as input.

It also allows us to remove quoting from places that delegate to
HttpHeaders#setETag since it now does that internally.

Closes gh-33412
This commit is contained in:
rstoyanchev
2024-09-10 09:01:30 +01:00
parent 3dd4a8350a
commit 19700d07b1
9 changed files with 24 additions and 34 deletions

View File

@@ -148,9 +148,8 @@ class DefaultEntityResponseBuilder<T> implements EntityResponse.Builder<T> {
}
@Override
public EntityResponse.Builder<T> eTag(String eTag) {
eTag = ETag.quoteETagIfNecessary(eTag);
this.headers.setETag(eTag);
public EntityResponse.Builder<T> eTag(String tag) {
this.headers.setETag(tag);
return this;
}

View File

@@ -147,10 +147,8 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder {
}
@Override
public ServerResponse.BodyBuilder eTag(String eTag) {
Assert.notNull(eTag, "etag must not be null");
eTag = ETag.quoteETagIfNecessary(eTag);
this.headers.setETag(eTag);
public ServerResponse.BodyBuilder eTag(String tag) {
this.headers.setETag(tag);
return this;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -332,8 +332,7 @@ public class VersionResourceResolver extends AbstractResourceResolver {
@Override
public HttpHeaders getResponseHeaders() {
HttpHeaders headers = (this.original instanceof HttpResource httpResource ?
httpResource.getResponseHeaders() : new HttpHeaders());
HttpHeaders headers = (this.original instanceof HttpResource hr ? hr.getResponseHeaders() : new HttpHeaders());
headers.setETag("W/\"" + this.version + "\"");
return headers;
}