From 609b48159b7c621ddf18332d0f9491d38dc16c22 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 2350d6035d..33d24f4674 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) {