Restore TomcatHeadersAdapter.clear() behavior

This commit restores the original behavior of the clear() method in
TomcatHeadersAdapter by delegating to
org.apache.tomcat.util.http.MimeHeaders.recycle(), which aligns with
the memory efficiency goals documented in the class-level Javadoc for
MimeHeaders.

See gh-33916
Closes gh-34092
This commit is contained in:
Sam Brannen 2024-12-15 15:34:49 +01:00
parent c8009dc67d
commit 8a8df90a46
2 changed files with 11 additions and 5 deletions

View File

@ -163,9 +163,7 @@ class TomcatHeadersAdapter implements MultiValueMap<String, String> {
@Override
public void clear() {
while (this.headers.size() > 0) {
this.headers.removeHeader(0);
}
this.headers.recycle();
}
@Override

View File

@ -25,17 +25,25 @@ import static org.assertj.core.api.Assertions.assertThat;
* Tests for {@link TomcatHeadersAdapter}.
*
* @author Johnny Lim
* @author Sam Brannen
* @since 7.0
*/
class TomcatHeadersAdapterTests {
private final TomcatHeadersAdapter adapter = new TomcatHeadersAdapter(new MimeHeaders());
@Test
void clear() {
MimeHeaders mimeHeaders = new MimeHeaders();
TomcatHeadersAdapter adapter = new TomcatHeadersAdapter(mimeHeaders);
adapter.add("key1", "value1");
adapter.add("key2", "value2");
assertThat(adapter).isNotEmpty();
assertThat(adapter).hasSize(2);
assertThat(adapter).containsKeys("key1", "key2");
adapter.clear();
assertThat(adapter).isEmpty();
assertThat(adapter).hasSize(0);
}
}