diff --git a/datamodel/odata-v4/odata-v4-generator/pom.xml b/datamodel/odata-v4/odata-v4-generator/pom.xml
index 1beb671b4..ad9b88571 100644
--- a/datamodel/odata-v4/odata-v4-generator/pom.xml
+++ b/datamodel/odata-v4/odata-v4-generator/pom.xml
@@ -116,10 +116,6 @@
commons-io
commons-io
-
- org.springframework
- spring-core
-
com.sun.codemodel
codemodel
diff --git a/datamodel/odata-v4/odata-v4-generator/src/main/java/com/sap/cloud/sdk/datamodel/odatav4/generator/ODataToVdmGenerator.java b/datamodel/odata-v4/odata-v4-generator/src/main/java/com/sap/cloud/sdk/datamodel/odatav4/generator/ODataToVdmGenerator.java
index 23e24cb5d..65e234cb6 100644
--- a/datamodel/odata-v4/odata-v4-generator/src/main/java/com/sap/cloud/sdk/datamodel/odatav4/generator/ODataToVdmGenerator.java
+++ b/datamodel/odata-v4/odata-v4-generator/src/main/java/com/sap/cloud/sdk/datamodel/odatav4/generator/ODataToVdmGenerator.java
@@ -5,8 +5,11 @@
import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.PathMatcher;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
@@ -33,7 +36,6 @@
import org.apache.olingo.commons.api.edm.provider.CsdlTerm;
import org.apache.olingo.commons.api.format.ContentType;
import org.slf4j.Logger;
-import org.springframework.util.AntPathMatcher;
import com.google.common.collect.Multimap;
import com.sap.cloud.sdk.cloudplatform.util.StringUtils;
@@ -392,16 +394,14 @@ private String getCanonicalPath( @Nullable final File outputDir )
private boolean excludePatternMatch( final String excludeFilePattern, final String serviceMetadataFilename )
{
final List excludeFilePatternEach = new ArrayList<>(Arrays.asList(excludeFilePattern.split(",")));
- final AntPathMatcher antPathMatcher = new AntPathMatcher();
+ final FileSystem fileSystem = FileSystems.getDefault();
for( final String filePattern : excludeFilePatternEach ) {
- if( antPathMatcher.match(filePattern, serviceMetadataFilename) ) {
- logger
- .info(
- String
- .format(
- "Excluding metadata file %s, as it matches with the excludes pattern.",
- serviceMetadataFilename));
+ final PathMatcher pathMatcher = fileSystem.getPathMatcher("glob:" + filePattern.trim());
+
+ if( pathMatcher.matches(Paths.get(serviceMetadataFilename)) ) {
+ final String msg = "Excluding metadata file %s, as it matches with the excludes pattern.";
+ logger.info(String.format(msg, serviceMetadataFilename));
return true;
}
}
diff --git a/datamodel/odata/odata-generator/pom.xml b/datamodel/odata/odata-generator/pom.xml
index 9f1f3bc21..2fa38a774 100644
--- a/datamodel/odata/odata-generator/pom.xml
+++ b/datamodel/odata/odata-generator/pom.xml
@@ -117,10 +117,6 @@
-
- org.springframework
- spring-core
-
com.sun.codemodel
codemodel
diff --git a/datamodel/odata/odata-generator/src/main/java/com/sap/cloud/sdk/datamodel/odata/generator/ODataToVdmGenerator.java b/datamodel/odata/odata-generator/src/main/java/com/sap/cloud/sdk/datamodel/odata/generator/ODataToVdmGenerator.java
index 14fd167fd..151193b8b 100644
--- a/datamodel/odata/odata-generator/src/main/java/com/sap/cloud/sdk/datamodel/odata/generator/ODataToVdmGenerator.java
+++ b/datamodel/odata/odata-generator/src/main/java/com/sap/cloud/sdk/datamodel/odata/generator/ODataToVdmGenerator.java
@@ -6,8 +6,11 @@
import java.lang.reflect.Field;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.PathMatcher;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
@@ -29,7 +32,6 @@
import org.apache.olingo.odata2.core.edm.provider.EdmImplProv;
import org.apache.olingo.odata2.core.edm.provider.EdmxProvider;
import org.slf4j.Logger;
-import org.springframework.util.AntPathMatcher;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
@@ -349,19 +351,17 @@ private String getCanonicalPath( @Nullable final File outputDir )
}
}
- private boolean excludePatternMatch( final String excludeFilePattern, final String serviceMetadataFilename )
+ static boolean excludePatternMatch( final String excludeFilePattern, final String serviceMetadataFilename )
{
final List excludeFilePatternEach = new ArrayList<>(Arrays.asList(excludeFilePattern.split(",")));
- final AntPathMatcher antPathMatcher = new AntPathMatcher();
+ final FileSystem fileSystem = FileSystems.getDefault();
for( final String filePattern : excludeFilePatternEach ) {
- if( antPathMatcher.match(filePattern, serviceMetadataFilename) ) {
- logger
- .info(
- String
- .format(
- "Excluding metadata file %s, as it matches with the excludes pattern.",
- serviceMetadataFilename));
+ final PathMatcher pathMatcher = fileSystem.getPathMatcher("glob:" + filePattern.trim());
+
+ if( pathMatcher.matches(Paths.get(serviceMetadataFilename)) ) {
+ final String msg = "Excluding metadata file %s, as it matches with the excludes pattern.";
+ logger.info(String.format(msg, serviceMetadataFilename));
return true;
}
}
diff --git a/datamodel/odata/odata-generator/src/test/java/com/sap/cloud/sdk/datamodel/odata/generator/ODataToVdmGeneratorTest.java b/datamodel/odata/odata-generator/src/test/java/com/sap/cloud/sdk/datamodel/odata/generator/ODataToVdmGeneratorTest.java
new file mode 100644
index 000000000..ed508865c
--- /dev/null
+++ b/datamodel/odata/odata-generator/src/test/java/com/sap/cloud/sdk/datamodel/odata/generator/ODataToVdmGeneratorTest.java
@@ -0,0 +1,34 @@
+package com.sap.cloud.sdk.datamodel.odata.generator;
+
+import static com.sap.cloud.sdk.datamodel.odata.generator.ODataToVdmGenerator.excludePatternMatch;
+
+import java.io.File;
+
+import org.assertj.core.api.SoftAssertions;
+import org.junit.jupiter.api.Test;
+
+public class ODataToVdmGeneratorTest
+{
+ @Test
+ void testExcludePatternMatch()
+ {
+ // Get file-name only, without path
+ final String fileName = new File("src/test/resources/sample/Spec.edmx").getName();
+
+ final SoftAssertions softly = new SoftAssertions();
+ for( final String pattern : new String[] { "*.edmx", "*.*", "sp*c.edmx", "*.EDMX" } )
+ softly
+ .assertThat(excludePatternMatch(pattern, fileName))
+ .describedAs("%s matches %s", pattern, fileName)
+ .isTrue();
+
+ for( final String pattern : new String[] { "F", "*/*", "/resources/*/*.edmx", "/resources/*/*" } )
+ softly
+ .assertThat(excludePatternMatch(pattern, fileName))
+ .describedAs("%s not matches %s", pattern, fileName)
+ .isFalse();
+
+ softly.assertThat(excludePatternMatch("A,B,spec.edmx", fileName)).describedAs("fallback").isTrue();
+ softly.assertAll();
+ }
+}
diff --git a/datamodel/openapi/openapi-api-sample/pom.xml b/datamodel/openapi/openapi-api-sample/pom.xml
index d373bb45e..732400ab7 100644
--- a/datamodel/openapi/openapi-api-sample/pom.xml
+++ b/datamodel/openapi/openapi-api-sample/pom.xml
@@ -28,6 +28,20 @@
https://www.sap.com
+
+
+
+ org.springframework
+ spring-core
+ ${spring6.version}
+
+
+ org.springframework
+ spring-web
+ ${spring6.version}
+
+
+
com.sap.cloud.sdk.datamodel
diff --git a/datamodel/openapi/openapi-core/pom.xml b/datamodel/openapi/openapi-core/pom.xml
index 44d87216d..f9c1acca3 100644
--- a/datamodel/openapi/openapi-core/pom.xml
+++ b/datamodel/openapi/openapi-core/pom.xml
@@ -47,6 +47,7 @@
com.fasterxml.jackson.core
jackson-databind
+ provided
com.fasterxml.jackson.core
@@ -55,10 +56,40 @@
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
+ provided
+
+ org.slf4j
+ slf4j-api
+ provided
+
+
+ tools.jackson.core
+ jackson-core
+ 3.0.2
+ true
+
+
+ tools.jackson.core
+ jackson-databind
+ 3.0.2
+ true
+
+
+ org.skyscreamer
+ jsonassert
+ 1.5.3
+ test
+
org.springframework
spring-core
+
+
+ commons-logging
+ commons-logging
+
+
org.springframework
@@ -110,6 +141,10 @@
com.fasterxml.jackson.core:jackson-core
+
+ tools.jackson.core:jackson-core
+ org.skyscreamer:jsonassert
+
diff --git a/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClient.java b/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClient.java
index fd0851050..92dec8792 100644
--- a/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClient.java
+++ b/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClient.java
@@ -9,6 +9,7 @@
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -27,18 +28,13 @@
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.BufferingClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import org.springframework.web.util.UriUtils;
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor;
import com.sap.cloud.sdk.cloudplatform.connectivity.Destination;
import com.sap.cloud.sdk.services.openapi.apiclient.auth.ApiKeyAuth;
@@ -51,6 +47,8 @@
*/
public final class ApiClient
{
+ private static final ConverterPatcher[] CONVERTER_PATCHES =
+ { new ConverterPatcher.Jackson2(), new ConverterPatcher.Jackson3() };
/**
* Enum representing the delimiter of a given collection.
@@ -338,8 +336,7 @@ public ApiClient setUserAgent( @Nonnull final String userAgent )
@Nonnull
public ApiClient addDefaultHeader( @Nonnull final String name, @Nonnull final String value )
{
- defaultHeaders.remove(name);
- defaultHeaders.add(name, value);
+ defaultHeaders.set(name, value);
return this;
}
@@ -688,8 +685,7 @@ public T invokeAPI(
// auth headers are added automatically by the SDK
// updateParamsForAuth(authNames, queryParams, headerParams);
- @SuppressWarnings( "deprecation" ) // spring-web:6.2.0 and later, works until <7.0.0
- final UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(basePath).path(path);
+ final UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(basePath).path(path);
if( queryParams != null ) {
//encode the query parameters in case they contain unsafe characters
for( final List values : queryParams.values() ) {
@@ -724,7 +720,7 @@ public T invokeAPI(
final ResponseEntity responseEntity = restTemplate.exchange(requestEntity, returnType);
statusCode = responseEntity.getStatusCode().value();
- responseHeaders = responseEntity.getHeaders();
+ responseHeaders = extractHeadersMap(responseEntity.getHeaders());
if( statusCode == 204 ) {
return null;
@@ -737,6 +733,22 @@ public T invokeAPI(
}
}
+ @SuppressWarnings( "unchecked" )
+ static MultiValueMap extractHeadersMap( @Nonnull final HttpHeaders headers )
+ {
+ if( headers instanceof MultiValueMap ) {
+ return (MultiValueMap) headers; // until including Spring Framework 6
+ }
+ try {
+ return (MultiValueMap) HttpHeaders.class
+ .getDeclaredMethod("asMultiValueMap") // since Spring Framework 7
+ .invoke(headers);
+ }
+ catch( final Exception e ) {
+ return MultiValueMap.fromSingleValue(headers.toSingleValueMap()); // fallback
+ }
+ }
+
/**
* Add headers to the request that is being built
*
@@ -748,14 +760,7 @@ public T invokeAPI(
private void addHeadersToRequest( @Nullable final HttpHeaders headers, final BodyBuilder requestBuilder )
{
if( headers != null ) {
- for( final Entry> entry : headers.entrySet() ) {
- final List values = entry.getValue();
- for( final String value : values ) {
- if( value != null ) {
- requestBuilder.header(entry.getKey(), value);
- }
- }
- }
+ requestBuilder.headers(headers);
}
}
@@ -763,28 +768,14 @@ private void addHeadersToRequest( @Nullable final HttpHeaders headers, final Bod
private static RestTemplate newDefaultRestTemplate()
{
final RestTemplate restTemplate = new RestTemplate();
-
- final ObjectMapper objectMapper = newDefaultObjectMapper();
- restTemplate
- .getMessageConverters()
- .stream()
- .filter(MappingJackson2HttpMessageConverter.class::isInstance)
- .map(MappingJackson2HttpMessageConverter.class::cast)
- .forEach(converter -> converter.setObjectMapper(objectMapper));
-
+ final List> converters = new LinkedList<>(restTemplate.getMessageConverters());
+ for( final ConverterPatcher patcher : CONVERTER_PATCHES ) {
+ patcher.patchList(converters);
+ }
+ restTemplate.setMessageConverters(converters);
return restTemplate;
}
- @Nonnull
- private static ObjectMapper newDefaultObjectMapper()
- {
- return new Jackson2ObjectMapperBuilder()
- .modules(new JavaTimeModule())
- .visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
- .visibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE)
- .build();
- }
-
@Nonnull
private static
RestTemplate
diff --git a/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/apiclient/ConverterPatcher.java b/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/apiclient/ConverterPatcher.java
new file mode 100644
index 000000000..2950637e6
--- /dev/null
+++ b/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/apiclient/ConverterPatcher.java
@@ -0,0 +1,117 @@
+package com.sap.cloud.sdk.services.openapi.apiclient;
+
+import java.util.List;
+import java.util.ListIterator;
+import java.util.function.UnaryOperator;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+
+import lombok.extern.slf4j.Slf4j;
+
+// DO NOT IMPORT JACKSON CLASSES OTHER THAN ANNOTATIONS
+
+@FunctionalInterface
+interface ConverterPatcher
+{
+ @Nullable
+ T patch( @Nonnull T instance );
+
+ default void patchList( @Nonnull final List instances )
+ {
+ final ListIterator iterator = instances.listIterator();
+ while( iterator.hasNext() ) {
+ final T instance = patch(iterator.next());
+ if( instance != null ) {
+ iterator.set(instance);
+ } else {
+ iterator.remove();
+ }
+ }
+ }
+
+ @Slf4j
+ class Jackson2 implements ConverterPatcher
+ {
+ @SuppressWarnings( "removal" )
+ @Override
+ public T patch( @Nonnull final T instance )
+ {
+ final String springJacksonConverter =
+ "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter";
+ final Class> cl = instance.getClass();
+ if( cl.getName().equals(springJacksonConverter) ) {
+ try {
+ final com.fasterxml.jackson.databind.ObjectMapper mapper =
+ new org.springframework.http.converter.json.Jackson2ObjectMapperBuilder()
+ .modules(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule())
+ .visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
+ .visibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE)
+ .build();
+ ((org.springframework.http.converter.json.MappingJackson2HttpMessageConverter) instance)
+ .setObjectMapper(mapper);
+ }
+ catch( final Exception e ) {
+ log.error("Failed to apply Jackson2 patch: " + e.getMessage(), e);
+ }
+ }
+ return instance;
+ }
+ }
+
+ @Slf4j
+ class Jackson3 implements ConverterPatcher
+ {
+ @SuppressWarnings( "unchecked" )
+ @Override
+ public T patch( @Nonnull final T instance )
+ {
+ // run the following code respectively if the classes were available:
+ //
+ // Builder builder = ((JacksonJsonHttpMessageConverter) instance).getMapper().rebuild()
+ // .changeDefaultVisibility(v -> v
+ // .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
+ // .withSetterVisibility(JsonAutoDetect.Visibility.NONE));
+ // return (T) new JacksonJsonHttpMessageConverter(builder);
+
+ final String springJacksonConverter =
+ "org.springframework.http.converter.json.JacksonJsonHttpMessageConverter";
+ final Class> cl = instance.getClass();
+ if( cl.getName().equals(springJacksonConverter) ) {
+ final UnaryOperator vc =
+ v -> v
+ .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
+ .withSetterVisibility(JsonAutoDetect.Visibility.NONE);
+ tools.jackson.databind.json.JsonMapper.Builder builder =
+ ((org.springframework.http.converter.json.JacksonJsonHttpMessageConverter) instance)
+ .getMapper()
+ .rebuild();
+ builder = builder.changeDefaultVisibility(vc);
+ try {
+ final String jackson2SerName = "com.fasterxml.jackson.databind.JsonSerializable";
+ final String serializerName = "tools.jackson.databind.ser.jackson.RawSerializer";
+ final String moduleName = "tools.jackson.databind.module.SimpleModule";
+ final Class> jackson2ser = Class.forName(jackson2SerName);
+ final Object serializer =
+ Class.forName(serializerName).getConstructor(Class.class).newInstance(jackson2ser);
+ Object module = Class.forName(moduleName).getConstructor().newInstance();
+ module =
+ module.getClass().getMethod("addSerializer", serializer.getClass()).invoke(module, serializer);
+ builder =
+ (tools.jackson.databind.json.JsonMapper.Builder) builder
+ .getClass()
+ .getMethod("addModule", module.getClass())
+ .invoke(builder, module);
+ }
+ catch( final Exception e ) {
+ log.debug("Could not find Jackson2 JsonSerializable class to add ToStringSerializer.", e);
+ }
+ return (T) new org.springframework.http.converter.json.JacksonJsonHttpMessageConverter(builder);
+ }
+ return instance;
+ }
+ }
+}
diff --git a/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/core/OpenApiResponse.java b/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/core/OpenApiResponse.java
index d0e4da65f..d6c6b6145 100644
--- a/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/core/OpenApiResponse.java
+++ b/datamodel/openapi/openapi-core/src/main/java/com/sap/cloud/sdk/services/openapi/core/OpenApiResponse.java
@@ -2,7 +2,7 @@
import javax.annotation.Nonnull;
-import org.springframework.http.HttpHeaders;
+import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import com.sap.cloud.sdk.services.openapi.apiclient.ApiClient;
@@ -48,6 +48,6 @@ public OpenApiResponse( @Nonnull final ApiClient client )
public OpenApiResponse( final int statusCode )
{
this.statusCode = statusCode;
- headers = new HttpHeaders();
+ headers = new LinkedMultiValueMap<>();
}
}
diff --git a/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClientTest.java b/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClientTest.java
new file mode 100644
index 000000000..650b804d8
--- /dev/null
+++ b/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClientTest.java
@@ -0,0 +1,24 @@
+package com.sap.cloud.sdk.services.openapi.apiclient;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.entry;
+
+import java.util.List;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.http.HttpHeaders;
+
+public class ApiClientTest
+{
+
+ @Test
+ void testExtractHeadersMap()
+ {
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("foo", "bar");
+ headers.add("baz", "qux");
+ headers.add("baz", "quux");
+ assertThat(ApiClient.extractHeadersMap(headers))
+ .containsExactly(entry("foo", List.of("bar")), entry("baz", List.of("qux", "quux")));
+ }
+}
diff --git a/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClientViaConstructorTest.java b/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClientViaConstructorTest.java
index b7cda71d3..5a724771b 100644
--- a/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClientViaConstructorTest.java
+++ b/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/apiclient/ApiClientViaConstructorTest.java
@@ -64,7 +64,7 @@ void testApiClientDoesNotChangeTheGivenRestTemplate()
server
.expect(ExpectedCount.twice(), requestTo(BASE_PATH + RELATIVE_PATH))
.andExpect(method(HttpMethod.POST))
- .andExpect(content().string("{\"return\":\"Hello, World!\",\"Return\":\"Hello, World!\"}"))
+ .andExpect(content().json("{\"return\":\"Hello, World!\",\"Return\":\"Hello, World!\"}"))
.andRespond(MockRestResponseCreators.withSuccess(SUCCESS_BODY, MediaType.TEXT_PLAIN));
// first service invocation
diff --git a/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/genericparameter/GenericParameterTest.java b/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/genericparameter/GenericParameterTest.java
index f50df180f..b2143de13 100644
--- a/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/genericparameter/GenericParameterTest.java
+++ b/datamodel/openapi/openapi-core/src/test/java/com/sap/cloud/sdk/services/openapi/genericparameter/GenericParameterTest.java
@@ -1,7 +1,7 @@
package com.sap.cloud.sdk.services.openapi.genericparameter;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
-import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson;
import static com.github.tomakehurst.wiremock.client.WireMock.post;
import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
@@ -57,7 +57,7 @@ void testInvocationWithGenericParameter( @Nonnull final WireMockRuntimeInfo wm )
WireMock
.stubFor(
post(urlEqualTo("/api"))
- .withRequestBody(equalTo(expectedBody))
+ .withRequestBody(equalToJson(expectedBody))
.willReturn(aResponse().withStatus(HttpStatus.SC_OK)));
final DefaultHttpDestination httpDestination = DefaultHttpDestination.builder(wm.getHttpBaseUrl()).build();
@@ -76,7 +76,7 @@ void testInvocationWithGenericParameter( @Nonnull final WireMockRuntimeInfo wm )
.fieldPopulatedAsStringWithoutAnnotation(jsonString)
.fieldPopulatedAsJacksonJsonNode(jacksonJsonNode)
.build());
- verify(postRequestedFor(urlEqualTo("/api")).withRequestBody(equalTo(expectedBody)));
+ verify(postRequestedFor(urlEqualTo("/api")).withRequestBody(equalToJson(expectedBody)));
}
@Value
diff --git a/pom.xml b/pom.xml
index f5b6d5f6a..dd874f3d9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -98,7 +98,8 @@
- 6.2.12
+ 7.0.0
+ 6.2.12
6.1.5
2.0.17
3.27.6