From 19cee781beab8f586586a5d4c56e21e5b8d02d0f Mon Sep 17 00:00:00 2001 From: D040882 Date: Wed, 28 Jan 2026 11:20:58 +0100 Subject: [PATCH 01/17] update versions --- integration-tests/pom.xml | 9 +++++++-- pom.xml | 6 +++--- srv/pom.xml | 9 +++++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index f10701b4..0e5f4c72 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -35,10 +35,15 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-webmvc-test + test + - org.springframework.security - spring-security-test + org.springframework.boot + spring-boot-starter-security-test test diff --git a/pom.xml b/pom.xml index b0cfdd5b..395608db 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.9 + 4.0.2 @@ -28,8 +28,8 @@ 21 - 4.6.1 - 5.25.0 + 4.7.0-SNAPSHOT + 5.26.0 3.6.5 3.8.6 1.2.4 diff --git a/srv/pom.xml b/srv/pom.xml index ef4135d6..ffe80a83 100644 --- a/srv/pom.xml +++ b/srv/pom.xml @@ -122,8 +122,8 @@ - org.springframework.security - spring-security-test + org.springframework.boot + spring-boot-starter-security-test test @@ -132,6 +132,11 @@ spring-boot-starter-webflux test + + org.springframework.boot + spring-boot-starter-webmvc-test + test + From a942f5b691d0c485fefee1dcab83f8e9064027b0 Mon Sep 17 00:00:00 2001 From: Stefan Henke Date: Wed, 28 Jan 2026 11:53:50 +0100 Subject: [PATCH 02/17] make things compile --- .../test/java/my/bookshop/it/FeatureTogglesIT.java | 2 +- srv/pom.xml | 14 +++++++++++++- .../my/bookshop/health/CustomHealthIndicator.java | 6 +++--- .../AdminServiceAddress_default_ITest.java | 2 ++ .../bookshop/AdminServiceAddress_mocked_ITest.java | 2 ++ .../test/java/my/bookshop/CatalogServiceITest.java | 2 +- .../test/java/my/bookshop/GenreHierarchyTest.java | 2 +- .../test/java/my/bookshop/NotesServiceITest.java | 2 ++ 8 files changed, 25 insertions(+), 7 deletions(-) diff --git a/integration-tests/src/test/java/my/bookshop/it/FeatureTogglesIT.java b/integration-tests/src/test/java/my/bookshop/it/FeatureTogglesIT.java index e266e334..936c9802 100644 --- a/integration-tests/src/test/java/my/bookshop/it/FeatureTogglesIT.java +++ b/integration-tests/src/test/java/my/bookshop/it/FeatureTogglesIT.java @@ -7,8 +7,8 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.web.servlet.MockMvc; diff --git a/srv/pom.xml b/srv/pom.xml index ffe80a83..c0ed15cc 100644 --- a/srv/pom.xml +++ b/srv/pom.xml @@ -110,6 +110,11 @@ spring-boot-starter-security + + org.springframework.boot + spring-boot-starter-security-oauth2-resource-server + + org.springframework.boot spring-boot-starter-actuator @@ -129,9 +134,16 @@ org.springframework.boot - spring-boot-starter-webflux + spring-boot-starter-webclient + test + + + + org.springframework.boot + spring-boot-webtestclient test + org.springframework.boot spring-boot-starter-webmvc-test diff --git a/srv/src/main/java/my/bookshop/health/CustomHealthIndicator.java b/srv/src/main/java/my/bookshop/health/CustomHealthIndicator.java index 4ecd1295..c8abcec6 100644 --- a/srv/src/main/java/my/bookshop/health/CustomHealthIndicator.java +++ b/srv/src/main/java/my/bookshop/health/CustomHealthIndicator.java @@ -1,8 +1,8 @@ package my.bookshop.health; -import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; -import org.springframework.boot.actuate.health.Health; -import org.springframework.boot.actuate.health.HealthIndicator; +import org.springframework.boot.health.autoconfigure.contributor.ConditionalOnEnabledHealthIndicator; +import org.springframework.boot.health.contributor.Health; +import org.springframework.boot.health.contributor.HealthIndicator; import org.springframework.stereotype.Component; /** Custom health indicator implementation. */ diff --git a/srv/src/test/java/my/bookshop/AdminServiceAddress_default_ITest.java b/srv/src/test/java/my/bookshop/AdminServiceAddress_default_ITest.java index 63eef15f..90f4a4b9 100644 --- a/srv/src/test/java/my/bookshop/AdminServiceAddress_default_ITest.java +++ b/srv/src/test/java/my/bookshop/AdminServiceAddress_default_ITest.java @@ -3,6 +3,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient; import org.springframework.test.context.ActiveProfiles; /** @@ -12,6 +13,7 @@ */ @ActiveProfiles("default") @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +@AutoConfigureWebTestClient class AdminServiceAddress_default_ITest extends AdminServiceAddressITestBase { @Test diff --git a/srv/src/test/java/my/bookshop/AdminServiceAddress_mocked_ITest.java b/srv/src/test/java/my/bookshop/AdminServiceAddress_mocked_ITest.java index bd43bb1b..c2f63def 100644 --- a/srv/src/test/java/my/bookshop/AdminServiceAddress_mocked_ITest.java +++ b/srv/src/test/java/my/bookshop/AdminServiceAddress_mocked_ITest.java @@ -3,6 +3,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient; import org.springframework.test.context.ActiveProfiles; /** @@ -16,6 +17,7 @@ webEnvironment = WebEnvironment.RANDOM_PORT, properties = "cds.remote.services.'[API_BUSINESS_PARTNER]'.destination.name=myself-AdminServiceAddressITest") +@AutoConfigureWebTestClient class AdminServiceAddress_mocked_ITest extends AdminServiceAddressITestBase { @Test diff --git a/srv/src/test/java/my/bookshop/CatalogServiceITest.java b/srv/src/test/java/my/bookshop/CatalogServiceITest.java index ee71ea3e..6aa6862e 100644 --- a/srv/src/test/java/my/bookshop/CatalogServiceITest.java +++ b/srv/src/test/java/my/bookshop/CatalogServiceITest.java @@ -14,8 +14,8 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; diff --git a/srv/src/test/java/my/bookshop/GenreHierarchyTest.java b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java index d6d374bb..193436ef 100644 --- a/srv/src/test/java/my/bookshop/GenreHierarchyTest.java +++ b/srv/src/test/java/my/bookshop/GenreHierarchyTest.java @@ -7,8 +7,8 @@ import java.net.URI; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; import org.springframework.web.util.UriComponentsBuilder; diff --git a/srv/src/test/java/my/bookshop/NotesServiceITest.java b/srv/src/test/java/my/bookshop/NotesServiceITest.java index cc6c68b2..b4179bf9 100644 --- a/srv/src/test/java/my/bookshop/NotesServiceITest.java +++ b/srv/src/test/java/my/bookshop/NotesServiceITest.java @@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient; import org.springframework.http.HttpHeaders; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.web.reactive.server.WebTestClient; @@ -12,6 +13,7 @@ webEnvironment = WebEnvironment.RANDOM_PORT, properties = "cds.remote.services.'[API_BUSINESS_PARTNER]'.destination.name=myself-NotesServiceITest") +@AutoConfigureWebTestClient @ActiveProfiles({"default", "mocked"}) class NotesServiceITest { From 2511a9871ae115d4c98e0e7a88e77899a508af99 Mon Sep 17 00:00:00 2001 From: Stefan Henke Date: Mon, 9 Feb 2026 14:47:22 +0100 Subject: [PATCH 03/17] update versions --- pom.xml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 2c2cc1c3..dfed0133 100644 --- a/pom.xml +++ b/pom.xml @@ -5,11 +5,7 @@ org.springframework.boot spring-boot-starter-parent -<<<<<<< HEAD - 4.0.2 -======= - 3.5.10 ->>>>>>> origin/main + 4.0.1 @@ -32,7 +28,7 @@ 21 - 4.7.0-SNAPSHOT + 5.0.0-SNAPSHOT 5.26.0 3.6.5 3.8.6 From 477ea8ef683aed4fd051c4239368d24fc3eeee95 Mon Sep 17 00:00:00 2001 From: Stefan Henke Date: Wed, 18 Mar 2026 09:29:22 +0100 Subject: [PATCH 04/17] Update xsuaa.version to 4.0.0-RC1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5399ba53..295de0c6 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ 21 5.0.0-SNAPSHOT 5.26.0 - 3.6.8 + 4.0.0-RC1 4.1.0 1.3.1 From 1609195a5f732457777aacdf053d6a9bceba6468 Mon Sep 17 00:00:00 2001 From: Stefan Henke Date: Tue, 21 Apr 2026 16:13:17 +0200 Subject: [PATCH 05/17] Update pom.xml --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index fd81af65..1cad809a 100644 --- a/pom.xml +++ b/pom.xml @@ -28,9 +28,9 @@ 21 - 5.0.0 + 5.0.0-m2617 5.26.0 - 4.0.0-RC2 + 4.0.0 4.1.0 1.3.3 From 563f5ee369808bd9b932925a709af7388c4c9626 Mon Sep 17 00:00:00 2001 From: Stefan Henke Date: Wed, 13 May 2026 13:42:34 +0200 Subject: [PATCH 06/17] Fix issue (#668) Co-authored-by: Markus Ofterdinger --- mta-multi-tenant.yaml | 5 +++-- mta-single-tenant.yaml | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mta-multi-tenant.yaml b/mta-multi-tenant.yaml index 1293b234..0ebf95e8 100644 --- a/mta-multi-tenant.yaml +++ b/mta-multi-tenant.yaml @@ -77,6 +77,7 @@ modules: keep-existing-routes: true properties: TENANT_HOST_PATTERN: ^(.*)-${default-uri} # testing only, use custom domain with wildcard for production + CHECK_X_FORWARDED_HOST_IN_LOGIN_CALLBACK: true requires: - name: srv-api group: destinations @@ -90,7 +91,7 @@ modules: - name: app-api properties: app-url: '${default-url}' - app-domain: '${domain}' + app-uri: '${default-uri}' # --------------------- RESOURCES --------------------- resources: # ----------------------------------------------------- @@ -104,7 +105,7 @@ resources: xsappname: bookshop-mt-${org}-${space} oauth2-configuration: redirect-uris: - - https://*.~{app-api/app-domain}/** + - https://*-~{app-api/app-uri}/** # be as explicit as possible, but keep the wildcard for the tenant subdomain requires: - name: app-api - name: bookshop-mt-service-manager diff --git a/mta-single-tenant.yaml b/mta-single-tenant.yaml index e7252ba0..7871ad47 100644 --- a/mta-single-tenant.yaml +++ b/mta-single-tenant.yaml @@ -58,6 +58,8 @@ modules: parameters: memory: 256M disk-quota: 512M + properties: + CHECK_X_FORWARDED_HOST_IN_LOGIN_CALLBACK: true requires: - name: srv-api group: destinations From 42be472fe1478acce39d7cd7d870c5f98161b048 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Thu, 11 Jun 2026 13:45:40 +0200 Subject: [PATCH 07/17] Update maven-enforcer-plugin to version 3.6.3 and spotless-maven-plugin to version 3.6.0 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f50de5a2..f576e901 100644 --- a/pom.xml +++ b/pom.xml @@ -146,7 +146,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.6.2 + 3.6.3 Project Structure Checks @@ -172,7 +172,7 @@ com.diffplug.spotless spotless-maven-plugin - 3.4.0 + 3.6.0 From 392a613cd9ee940eb071965d7aad2b89375441f6 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Thu, 11 Jun 2026 13:53:45 +0200 Subject: [PATCH 08/17] Update cds.services.version to 5.0.0-SNAPSHOT in pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a666e53d..680e72e0 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ 25 - 5.0.0-m2617 + 5.0.0-SNAPSHOT 5.30.0 4.0.0 4.2.0 From b9ddd94437244e3675da19000e9f1c3cca47927d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Fri, 12 Jun 2026 08:52:22 +0200 Subject: [PATCH 09/17] use Spring Boot 4.1 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 680e72e0..7890b18d 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 4.0.3 + 4.1.0 @@ -28,7 +28,7 @@ 25 - 5.0.0-SNAPSHOT + 5.0.0-m2624 5.30.0 4.0.0 4.2.0 From 0dcd30f21f0462c611364b8693621fea56fe19e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20G=C3=B6rler?= Date: Tue, 16 Jun 2026 18:08:04 +0200 Subject: [PATCH 10/17] Rewrite CatalogServiceITest to use RestTestClient AssertJ API Replace MockMvc with Spring Boot's RestTestClient and its native AssertJ integration for cleaner, more readable assertions. - Use @AutoConfigureRestTestClient instead of @AutoConfigureMockMvc - Use RestTestClientResponse.from() with assertThat() for fluent status and JSON body assertions - Remove Hamcrest dependencies in favor of AssertJ's .contains() and .doesNotContain() via .extractingPath().asString() - Remove checked exceptions from test methods --- .../java/my/bookshop/CatalogServiceITest.java | 92 ++++++++++++------- 1 file changed, 58 insertions(+), 34 deletions(-) diff --git a/srv/src/test/java/my/bookshop/CatalogServiceITest.java b/srv/src/test/java/my/bookshop/CatalogServiceITest.java index 6aa6862e..0902d7ee 100644 --- a/srv/src/test/java/my/bookshop/CatalogServiceITest.java +++ b/srv/src/test/java/my/bookshop/CatalogServiceITest.java @@ -1,12 +1,7 @@ package my.bookshop; import static cds.gen.catalogservice.CatalogService_.REVIEWS; -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.not; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.assertj.core.api.Assertions.assertThat; import cds.gen.catalogservice.Reviews; import com.sap.cds.ql.Delete; @@ -14,14 +9,14 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.resttestclient.autoconfigure.AutoConfigureRestTestClient; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; -import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.client.RestTestClient; @SpringBootTest -@AutoConfigureMockMvc +@AutoConfigureRestTestClient class CatalogServiceITest { private static final String booksURI = "/api/browse/Books"; @@ -32,7 +27,7 @@ class CatalogServiceITest { private static final String USER_USER_STRING = "user"; private static final String ADMIN_USER_STRING = "admin"; - @Autowired private MockMvc mockMvc; + @Autowired private RestTestClient client; @Autowired private PersistenceService db; @@ -42,47 +37,76 @@ void cleanup() { } @Test - void discountApplied() throws Exception { - mockMvc - .perform(get(booksURI + "?$filter=stock gt 200&top=1")) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.value[0].title").value(containsString("11% discount"))); + void discountApplied() { + client + .get() + .uri(booksURI + "?$filter=stock gt 200&top=1") + .exchange() + .expectStatus() + .isOk() + .expectBody() + .jsonPath("$.value[0].title") + .value(String.class, title -> assertThat(title).contains("11% discount")); } @Test - void discountNotApplied() throws Exception { - mockMvc - .perform(get(booksURI + "?$filter=stock lt 100&top=1")) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.value[0].title").value(not(containsString("11% discount")))); + void discountNotApplied() { + client + .get() + .uri(booksURI + "?$filter=stock lt 100&top=1") + .exchange() + .expectStatus() + .isOk() + .expectBody() + .jsonPath("$.value[0].title") + .value(String.class, title -> assertThat(title).doesNotContain("11% discount")); } @Test - void createReviewNotAuthenticated() throws Exception { + void createReviewNotAuthenticated() { String payload = createTestReview().toJson(); - mockMvc - .perform(post(addReviewURI).contentType(MediaType.APPLICATION_JSON).content(payload)) - .andExpect(status().isUnauthorized()); + client + .post() + .uri(addReviewURI) + .contentType(MediaType.APPLICATION_JSON) + .body(payload) + .exchange() + .expectStatus() + .isUnauthorized(); } @Test @WithMockUser(USER_USER_STRING) - void createReviewByUser() throws Exception { + void createReviewByUser() { String payload = createTestReview().toJson(); - mockMvc - .perform(post(addReviewURI).contentType(MediaType.APPLICATION_JSON).content(payload)) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.createdBy").value(USER_USER_STRING)); + client + .post() + .uri(addReviewURI) + .contentType(MediaType.APPLICATION_JSON) + .body(payload) + .exchange() + .expectStatus() + .isOk() + .expectBody() + .jsonPath("$.createdBy") + .isEqualTo(USER_USER_STRING); } @Test @WithMockUser(ADMIN_USER_STRING) - void createReviewByAdmin() throws Exception { + void createReviewByAdmin() { String payload = createTestReview().toJson(); - mockMvc - .perform(post(addReviewURI).contentType(MediaType.APPLICATION_JSON).content(payload)) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.createdBy").value(ADMIN_USER_STRING)); + client + .post() + .uri(addReviewURI) + .contentType(MediaType.APPLICATION_JSON) + .body(payload) + .exchange() + .expectStatus() + .isOk() + .expectBody() + .jsonPath("$.createdBy") + .isEqualTo(ADMIN_USER_STRING); } private Reviews createTestReview() { From 13ead7bbf81b6db010160e2271f888bf1e73fdf4 Mon Sep 17 00:00:00 2001 From: Stefan Henke Date: Wed, 17 Jun 2026 15:52:09 +0200 Subject: [PATCH 11/17] Update pom.xml --- srv/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srv/pom.xml b/srv/pom.xml index 3f9d3412..9101129d 100644 --- a/srv/pom.xml +++ b/srv/pom.xml @@ -186,7 +186,7 @@ native-maven-plugin - 0.3.14 + 0.3.33 From 67d5cbcb3cb9f2b42b8a03d187533e21b4f402cf Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Fri, 26 Jun 2026 12:57:23 +0200 Subject: [PATCH 12/17] Update cds.services.version to 5.0.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7890b18d..371ce01a 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ 25 - 5.0.0-m2624 + 5.0.0 5.30.0 4.0.0 4.2.0 From e4a77cc50f4c4e02b8fcf085d67ce2dcfbce7953 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Fri, 26 Jun 2026 12:59:14 +0200 Subject: [PATCH 13/17] Update @sap/cds-mtxs and @sap/cds-compiler versions in package.json and package-lock.json --- mtx/sidecar/package.json | 2 +- package-lock.json | 118 ++++++++++++++++++++++----------------- package.json | 4 +- 3 files changed, 69 insertions(+), 55 deletions(-) diff --git a/mtx/sidecar/package.json b/mtx/sidecar/package.json index 7b51ce3f..57a56a9e 100644 --- a/mtx/sidecar/package.json +++ b/mtx/sidecar/package.json @@ -2,7 +2,7 @@ "dependencies": { "@cap-js/hana": "^2.8.0", "@sap/cds": "^9.9.1", - "@sap/cds-mtxs": "^3", + "@sap/cds-mtxs": "^3.9.4", "@sap/xssec": "^4.13.0", "express": "^4.22.2" }, diff --git a/package-lock.json b/package-lock.json index 11b57185..e32166ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,16 +11,16 @@ "mtx/sidecar" ], "devDependencies": { - "@sap/cds-compiler": "^6.9.0", + "@sap/cds-compiler": "^6.9.3", "@sap/cds-dk": "9.9.2", - "@sap/cds-mtxs": "^3" + "@sap/cds-mtxs": "^3.9.4" } }, "mtx/sidecar": { "dependencies": { "@cap-js/hana": "^2.8.0", "@sap/cds": "^9.9.1", - "@sap/cds-mtxs": "^3", + "@sap/cds-mtxs": "^3.9.4", "@sap/xssec": "^4.13.0", "express": "^4.22.2" }, @@ -178,9 +178,9 @@ } }, "node_modules/@sap/cds-compiler": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-6.9.2.tgz", - "integrity": "sha512-Qv7Zb3RhG92WVm1AjHEJaYbOi3tNT051/EWPYTsYdUe5epYXbR4dJfGpD1eEgo82ThrKCFx0BZfT0b28t0/vqg==", + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-6.9.3.tgz", + "integrity": "sha512-8fEeM6D059ruqLWoJqzFSNLkGoUCMnycx7Zv4OP4nA9zZeHzFC3nAe6s3ak2kASSiub1xAMMPzDE/9EnSXQKLw==", "license": "SEE LICENSE IN LICENSE", "bin": { "cdsc": "bin/cdsc.js", @@ -2064,9 +2064,9 @@ } }, "node_modules/@sap/cds-mtxs": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-3.9.3.tgz", - "integrity": "sha512-NdL+ctu1YmxRMFFk8ip3PZHXxIrDv93gK+ZUE+e5B+9MNDvalQcav4QllqwiGJ/CJcfJROWGTt+a554A81dxow==", + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@sap/cds-mtxs/-/cds-mtxs-3.9.4.tgz", + "integrity": "sha512-A3FRCGCMNhml8MLpGv+OUHwDhAUgvAiE38qdTL87/KQ932CTNZ1frohQtT24iszoamB7NI8lp9RR3BFD6HR/FQ==", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@sap/hdi-deploy": "^5" @@ -2080,10 +2080,10 @@ } }, "node_modules/@sap/hdi": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.8.0.tgz", - "integrity": "sha512-tkJmY2ffm6mt4/LFwRBihlQkMxNAXa3ngvRe2N/6+qLIsUNdrH/M03S5mkygXq56K+KoVVZYuradajCusMWwsw==", - "license": "See LICENSE file", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@sap/hdi/-/hdi-4.8.1.tgz", + "integrity": "sha512-LfRtIbtfvMl82a8CwpqPJRRB9hRSVUQyvxualYBEzyNu/phuw6bFGQA5LHVngHsms+y797Icm4tl4X+TEkTtlg==", + "license": "SEE LICENSE IN LICENSE", "dependencies": { "async": "^3.2.3" }, @@ -2104,16 +2104,16 @@ } }, "node_modules/@sap/hdi-deploy": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@sap/hdi-deploy/-/hdi-deploy-5.6.1.tgz", - "integrity": "sha512-+qQ7qwG8lko303L5yRj2dud/nDAVuVblV/mmzJT44oPbF0Nry18eD2LUS23hFeuxjRa7rYK5YKQ8ffGgWxVrYQ==", - "license": "See LICENSE file", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@sap/hdi-deploy/-/hdi-deploy-5.7.0.tgz", + "integrity": "sha512-ENBCtCBnJEKBlvC5mQT/G7OAteOENo7ygSeRJgVdz7AHikcHUxegtavXkJtFCJ/PSjpjytFKfGRmG8peUVAmNQ==", + "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@sap/hdi": "^4.8.0", + "@sap/hdi": "^4.8.1", "@sap/xsenv": "^6.0.0", "async": "^3.2.6", "dotenv": "^16.4.5", - "handlebars": "^4.7.8", + "handlebars": "^4.7.9", "micromatch": "^4.0.8" }, "engines": { @@ -2261,9 +2261,9 @@ "license": "MIT" }, "node_modules/better-sqlite3": { - "version": "12.10.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.10.0.tgz", - "integrity": "sha512-CyzaZRQKyHkB2ZInfTTl2nvT33EbDpjkLEbE8/Zck3Ll6O0qqvuGdrJ45HgtH+HykRg88ITY3AdreBGN70aBSQ==", + "version": "12.11.1", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz", + "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2588,9 +2588,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -2681,20 +2681,20 @@ } }, "node_modules/express/node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", + "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", "license": "MIT", "dependencies": { "bytes": "^3.1.2", - "content-type": "^1.0.5", + "content-type": "^2.0.0", "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", + "http-errors": "^2.0.1", + "iconv-lite": "^0.7.2", "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" + "qs": "^6.15.2", + "raw-body": "^3.0.2", + "type-is": "^2.1.0" }, "engines": { "node": ">=18" @@ -2704,6 +2704,19 @@ "url": "https://opencollective.com/express" } }, + "node_modules/express/node_modules/body-parser/node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/express/node_modules/content-disposition": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", @@ -3120,9 +3133,9 @@ } }, "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3132,9 +3145,9 @@ } }, "node_modules/hdb": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/hdb/-/hdb-2.27.1.tgz", - "integrity": "sha512-xYL/W+fq2TyGHyzm8muolQnw8tdh4+2NQ8mQP2FpLSuhfJ8l0jQNSUZoAXic7NfMEan1Jvf8V1L4blwkgTc6+A==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-2.29.4.tgz", + "integrity": "sha512-9L7/xjx4NU2YWatqLSHXhuEIuvNlV/4eRFg7u/L63U1Dc5LocP4yWeH8UGKTLBCJkt548OQ+A7PqqimZwEuqdw==", "license": "Apache-2.0", "dependencies": { "iconv-lite": "0.7.0" @@ -3545,12 +3558,13 @@ } }, "node_modules/qs": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", - "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" }, "engines": { "node": ">=0.6" @@ -3690,9 +3704,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { @@ -3754,14 +3768,14 @@ "license": "ISC" }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, diff --git a/package.json b/package.json index 8bb22a26..405becb6 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,9 @@ "version": "1.0.0", "description": "Generated by cds-services-archetype", "devDependencies": { + "@sap/cds-compiler": "^6.9.3", "@sap/cds-dk": "9.9.2", - "@sap/cds-mtxs": "^3", - "@sap/cds-compiler": "^6.9.0" + "@sap/cds-mtxs": "^3.9.4" }, "workspaces": [ "mtx/sidecar" From c4655cda106736217dbf772ab1bcbf4e13722630 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Fri, 26 Jun 2026 13:01:52 +0200 Subject: [PATCH 14/17] Update Maven version requirement from 3.6.3 to 3.9.14 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 371ce01a..ec0bbb25 100644 --- a/pom.xml +++ b/pom.xml @@ -156,7 +156,7 @@ - 3.6.3 + 3.9.14 ${jdk.version} From e1563d5d4ca77b3de903c26f38c688a6dcb072a5 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Fri, 26 Jun 2026 13:02:11 +0200 Subject: [PATCH 15/17] Update spotless-maven-plugin version to 3.7.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ec0bbb25..15fbaaf6 100644 --- a/pom.xml +++ b/pom.xml @@ -172,7 +172,7 @@ com.diffplug.spotless spotless-maven-plugin - 3.6.0 + 3.7.0 From 20a6d6a6fb8b506a4965fb1d4cd03b115d2bff4b Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Fri, 26 Jun 2026 13:48:29 +0200 Subject: [PATCH 16/17] Update xsuaa.version to 4.0.7 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 15fbaaf6..a67f9eef 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ 25 5.0.0 5.30.0 - 4.0.0 + 4.0.7 4.2.0 1.5.0 From 01e73a4e53ebe1cfb00913178206a753bb666067 Mon Sep 17 00:00:00 2001 From: Markus Ofterdinger Date: Fri, 26 Jun 2026 13:49:21 +0200 Subject: [PATCH 17/17] Update cloud.sdk.version to 5.31.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a67f9eef..32851791 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ 25 5.0.0 - 5.30.0 + 5.31.0 4.0.7 4.2.0 1.5.0