From ebac7f176c8f8effddec2ad11a9701947eeea63a Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 14 Dec 2023 10:52:30 +0100 Subject: [PATCH] Makes jakarta servlet dependency optional without this change if you use Spring Cloud Contract WireMock with e.g. WebFlux your Spring Boot context can fail to start beacuse of it can't decide whether the application should be reactive or not. with this change we're making the dependency optional because it should come from the user, we shouldn't be providing it. Also RestDocs are assuming that that dependency is a runtime one fixes gh-1854 --- spring-cloud-contract-wiremock/pom.xml | 1 + .../wiremock/restdocs/ContractExchangeHandler.java | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/spring-cloud-contract-wiremock/pom.xml b/spring-cloud-contract-wiremock/pom.xml index 4761f2a14f..c86d991772 100644 --- a/spring-cloud-contract-wiremock/pom.xml +++ b/spring-cloud-contract-wiremock/pom.xml @@ -46,6 +46,7 @@ jakarta.servlet jakarta.servlet-api + true org.springframework diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/ContractExchangeHandler.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/ContractExchangeHandler.java index 1df697b466..3dd7a49937 100644 --- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/ContractExchangeHandler.java +++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/ContractExchangeHandler.java @@ -21,6 +21,7 @@ import java.lang.reflect.Field; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -48,6 +49,7 @@ import org.springframework.restdocs.webtestclient.WebTestClientRestDocumentation import org.springframework.test.web.reactive.server.EntityExchangeResult; import org.springframework.test.web.reactive.server.WebTestClient; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.util.ClassUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; @@ -111,6 +113,8 @@ public class ContractExchangeHandler extends WireMockVerifyHelper result; WireMockHttpRequestAdapter(EntityExchangeResult result) { @@ -246,6 +250,9 @@ class WireMockHttpRequestAdapter implements Request { @Override public Collection getParts() { try { + if (!SERVLET_API_PRESENT) { + return Collections.emptyList(); + } return getWireMockParts(); } catch (Exception e) {