From f6504c5f9141e5b623d27d8ff90d4a857a222e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Tue, 28 May 2024 09:24:08 +0200 Subject: [PATCH] Deprecate use of raw String for HttpMethod in MockMvc Closes gh-32914 --- .../request/MockHttpServletRequestBuilder.java | 16 +++------------- .../servlet/request/MockMvcRequestBuilders.java | 6 ++++-- .../MockHttpServletRequestBuilderTests.java | 3 ++- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java index 6ec52e6671..efcfd8d384 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java @@ -86,7 +86,7 @@ import org.springframework.web.util.UrlPathHelper; public class MockHttpServletRequestBuilder implements ConfigurableSmartRequestBuilder, Mergeable { - private final String method; + private final HttpMethod method; private final URI url; @@ -150,7 +150,7 @@ public class MockHttpServletRequestBuilder * @param vars zero or more URI variables */ MockHttpServletRequestBuilder(HttpMethod httpMethod, String url, Object... vars) { - this(httpMethod.name(), initUri(url, vars)); + this(httpMethod, initUri(url, vars)); } private static URI initUri(String url, Object[] vars) { @@ -169,16 +169,6 @@ public class MockHttpServletRequestBuilder * @since 4.0.3 */ MockHttpServletRequestBuilder(HttpMethod httpMethod, URI url) { - this(httpMethod.name(), url); - } - - /** - * Alternative constructor for custom HTTP methods. - * @param httpMethod the HTTP method (GET, POST, etc) - * @param url the URL - * @since 4.3 - */ - MockHttpServletRequestBuilder(String httpMethod, URI url) { Assert.notNull(httpMethod, "'httpMethod' is required"); Assert.notNull(url, "'url' is required"); this.method = httpMethod; @@ -716,7 +706,7 @@ public class MockHttpServletRequestBuilder MockHttpServletRequest request = createServletRequest(servletContext); request.setAsyncSupported(true); - request.setMethod(this.method); + request.setMethod(this.method.name()); String requestUri = this.url.getRawPath(); request.setRequestURI(requestUri); diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.java b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.java index 077a93d92a..679c3c6ae5 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 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. @@ -199,9 +199,11 @@ public abstract class MockMvcRequestBuilders { * @param httpMethod the HTTP method * @param uri the URL * @since 4.3 + * @deprecated in favor of {@link #request(HttpMethod, URI)} */ + @Deprecated(since = "6.2") public static MockHttpServletRequestBuilder request(String httpMethod, URI uri) { - return new MockHttpServletRequestBuilder(httpMethod, uri); + return request(HttpMethod.valueOf(httpMethod), uri); } /** diff --git a/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java b/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java index 35409a2664..6254112df6 100644 --- a/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java +++ b/spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java @@ -33,6 +33,7 @@ import org.assertj.core.api.ThrowingConsumer; import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpSession; @@ -650,7 +651,7 @@ class MockHttpServletRequestBuilderTests { void arbitraryMethod() { String httpMethod = "REPort"; URI url = UriComponentsBuilder.fromPath("/foo/{bar}").buildAndExpand(42).toUri(); - this.builder = new MockHttpServletRequestBuilder(httpMethod, url); + this.builder = new MockHttpServletRequestBuilder(HttpMethod.valueOf(httpMethod), url); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); assertThat(request.getMethod()).isEqualTo(httpMethod);