From 30c735d175ead6dc9e353524e2bbaba97ba4ae60 Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Tue, 26 May 2026 19:36:02 +0200 Subject: [PATCH 01/11] docker base image upgrades --- dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile | 4 ++-- dsf-docker/bpe_proxy/Dockerfile | 2 +- dsf-docker/fhir_proxy/Dockerfile | 2 +- dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile b/dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile index 59dbbc118..e848beb95 100755 --- a/dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile +++ b/dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # -FROM debian:trixie-slim@sha256:4ffb3a1511099754cddc70eb1b12e50ffdb67619aa0ab6c13fcd800a78ef7c7a AS builder +FROM debian:trixie-slim@sha256:b6e2a152f22a40ff69d92cb397223c906017e1391a73c952b588e51af8883bf8 AS builder WORKDIR /opt/bpe COPY --chown=root:2202 ./ ./ RUN chown root:2202 ./ && \ @@ -23,7 +23,7 @@ RUN chown root:2202 ./ && \ chmod 1775 ./log -FROM azul/zulu-openjdk:25-jre-headless@sha256:0f843579efd505efb0a0eef1d5a816cc4523ffcad458a54a4e9e52e60c4c030a +FROM azul/zulu-openjdk:25-jre-headless@sha256:8cec35879adc3694e3cad2a499f9527c7c788278a923363b09b096a1b28f751c LABEL org.opencontainers.image.source=https://github.com/datasharingframework/dsf LABEL org.opencontainers.image.description="DSF BPE Server" LABEL org.opencontainers.image.licenses="Apache License, Version 2.0" diff --git a/dsf-docker/bpe_proxy/Dockerfile b/dsf-docker/bpe_proxy/Dockerfile index eb9ec33e3..da5e059c1 100644 --- a/dsf-docker/bpe_proxy/Dockerfile +++ b/dsf-docker/bpe_proxy/Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # -FROM httpd:2.4-alpine@sha256:968c8b4098fcecb473762b45f6c541a3b2b2cfab2caccb1edbd2cece071ef160 +FROM httpd:2.4-alpine@sha256:0136c2d4462f3b8ecc92bea70efdfef4d06523999ae8d7aa533969dea6db4576 LABEL org.opencontainers.image.source=https://github.com/datasharingframework/dsf LABEL org.opencontainers.image.description="DSF BPE Reverse Proxy" LABEL org.opencontainers.image.licenses="Apache License, Version 2.0" diff --git a/dsf-docker/fhir_proxy/Dockerfile b/dsf-docker/fhir_proxy/Dockerfile index f6c608fae..7a7fe794d 100755 --- a/dsf-docker/fhir_proxy/Dockerfile +++ b/dsf-docker/fhir_proxy/Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # -FROM httpd:2.4-alpine@sha256:968c8b4098fcecb473762b45f6c541a3b2b2cfab2caccb1edbd2cece071ef160 +FROM httpd:2.4-alpine@sha256:0136c2d4462f3b8ecc92bea70efdfef4d06523999ae8d7aa533969dea6db4576 LABEL org.opencontainers.image.source=https://github.com/datasharingframework/dsf LABEL org.opencontainers.image.description="DSF FHIR Reverse Proxy" LABEL org.opencontainers.image.licenses="Apache License, Version 2.0" diff --git a/dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile b/dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile index 40d6acde3..1a4503eea 100755 --- a/dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile +++ b/dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # -FROM debian:trixie-slim@sha256:4ffb3a1511099754cddc70eb1b12e50ffdb67619aa0ab6c13fcd800a78ef7c7a AS builder +FROM debian:trixie-slim@sha256:b6e2a152f22a40ff69d92cb397223c906017e1391a73c952b588e51af8883bf8 AS builder WORKDIR /opt/fhir COPY --chown=root:2101 ./ ./ RUN chown root:2101 ./ && \ @@ -23,7 +23,7 @@ RUN chown root:2101 ./ && \ chmod 1775 ./log -FROM azul/zulu-openjdk:25-jre-headless@sha256:0f843579efd505efb0a0eef1d5a816cc4523ffcad458a54a4e9e52e60c4c030a +FROM azul/zulu-openjdk:25-jre-headless@sha256:8cec35879adc3694e3cad2a499f9527c7c788278a923363b09b096a1b28f751c LABEL org.opencontainers.image.source=https://github.com/datasharingframework/dsf LABEL org.opencontainers.image.description="DSF FHIR Server" LABEL org.opencontainers.image.licenses="Apache License, Version 2.0" From 55b5183557aaf93987b433cf5360f14f7915de6b Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Mon, 1 Jun 2026 12:47:22 +0200 Subject: [PATCH 02/11] fully qualified image names --- dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile | 4 ++-- dsf-docker/bpe_proxy/Dockerfile | 2 +- dsf-docker/fhir_proxy/Dockerfile | 2 +- dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile b/dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile index e848beb95..dc38732ab 100755 --- a/dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile +++ b/dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # -FROM debian:trixie-slim@sha256:b6e2a152f22a40ff69d92cb397223c906017e1391a73c952b588e51af8883bf8 AS builder +FROM docker.io/library/debian:trixie-slim@sha256:b6e2a152f22a40ff69d92cb397223c906017e1391a73c952b588e51af8883bf8 AS builder WORKDIR /opt/bpe COPY --chown=root:2202 ./ ./ RUN chown root:2202 ./ && \ @@ -23,7 +23,7 @@ RUN chown root:2202 ./ && \ chmod 1775 ./log -FROM azul/zulu-openjdk:25-jre-headless@sha256:8cec35879adc3694e3cad2a499f9527c7c788278a923363b09b096a1b28f751c +FROM docker.io/azul/zulu-openjdk:25-jre-headless@sha256:8cec35879adc3694e3cad2a499f9527c7c788278a923363b09b096a1b28f751c LABEL org.opencontainers.image.source=https://github.com/datasharingframework/dsf LABEL org.opencontainers.image.description="DSF BPE Server" LABEL org.opencontainers.image.licenses="Apache License, Version 2.0" diff --git a/dsf-docker/bpe_proxy/Dockerfile b/dsf-docker/bpe_proxy/Dockerfile index da5e059c1..60cb8e1ef 100644 --- a/dsf-docker/bpe_proxy/Dockerfile +++ b/dsf-docker/bpe_proxy/Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # -FROM httpd:2.4-alpine@sha256:0136c2d4462f3b8ecc92bea70efdfef4d06523999ae8d7aa533969dea6db4576 +FROM docker.io/library/httpd:2.4-alpine@sha256:0136c2d4462f3b8ecc92bea70efdfef4d06523999ae8d7aa533969dea6db4576 LABEL org.opencontainers.image.source=https://github.com/datasharingframework/dsf LABEL org.opencontainers.image.description="DSF BPE Reverse Proxy" LABEL org.opencontainers.image.licenses="Apache License, Version 2.0" diff --git a/dsf-docker/fhir_proxy/Dockerfile b/dsf-docker/fhir_proxy/Dockerfile index 7a7fe794d..15cb6c2fc 100755 --- a/dsf-docker/fhir_proxy/Dockerfile +++ b/dsf-docker/fhir_proxy/Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # -FROM httpd:2.4-alpine@sha256:0136c2d4462f3b8ecc92bea70efdfef4d06523999ae8d7aa533969dea6db4576 +FROM docker.io/library/httpd:2.4-alpine@sha256:0136c2d4462f3b8ecc92bea70efdfef4d06523999ae8d7aa533969dea6db4576 LABEL org.opencontainers.image.source=https://github.com/datasharingframework/dsf LABEL org.opencontainers.image.description="DSF FHIR Reverse Proxy" LABEL org.opencontainers.image.licenses="Apache License, Version 2.0" diff --git a/dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile b/dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile index 1a4503eea..3faac011b 100755 --- a/dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile +++ b/dsf-fhir/dsf-fhir-server-jetty/docker/Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # -FROM debian:trixie-slim@sha256:b6e2a152f22a40ff69d92cb397223c906017e1391a73c952b588e51af8883bf8 AS builder +FROM docker.io/library/debian:trixie-slim@sha256:b6e2a152f22a40ff69d92cb397223c906017e1391a73c952b588e51af8883bf8 AS builder WORKDIR /opt/fhir COPY --chown=root:2101 ./ ./ RUN chown root:2101 ./ && \ @@ -23,7 +23,7 @@ RUN chown root:2101 ./ && \ chmod 1775 ./log -FROM azul/zulu-openjdk:25-jre-headless@sha256:8cec35879adc3694e3cad2a499f9527c7c788278a923363b09b096a1b28f751c +FROM docker.io/azul/zulu-openjdk:25-jre-headless@sha256:8cec35879adc3694e3cad2a499f9527c7c788278a923363b09b096a1b28f751c LABEL org.opencontainers.image.source=https://github.com/datasharingframework/dsf LABEL org.opencontainers.image.description="DSF FHIR Server" LABEL org.opencontainers.image.licenses="Apache License, Version 2.0" From f52de9099804c659dd7aa881074f0aa36a81acfc Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Tue, 2 Jun 2026 17:41:56 +0200 Subject: [PATCH 03/11] action version upgrades --- .github/workflows/build.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91958b916..4af316c2d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,7 +51,7 @@ jobs: java-version: 25 cache: 'maven' - name: Initialize CodeQL - uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 + uses: github/codeql-action/init@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} @@ -60,7 +60,7 @@ jobs: if: ${{ matrix.language == 'java-kotlin' }} run: mvn package $MVN_BATCH_MODE_FAIL_AT_END $MVN_SKIP_MOST -DskipTests - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 + uses: github/codeql-action/analyze@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0 with: category: "/language:${{matrix.language}}" @@ -185,18 +185,18 @@ jobs: name: quick_build path: ./ - name: Set up Buildx - uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 + uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0 - name: Build Docker image run: docker build -t ghcr.io/${{ github.repository_owner }}/${{ matrix.image.name }}:${{ github.sha }} ${{ matrix.image.context }} - name: Scan Docker image with Trivy - uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # v0.35.0 + uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0 with: image-ref: ghcr.io/${{ github.repository_owner }}/${{ matrix.image.name }}:${{ github.sha }} format: 'sarif' output: 'trivy-results-${{ matrix.image.name }}.sarif' trivyignores: './.trivyignore' - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2 + uses: github/codeql-action/upload-sarif@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0 if: always() with: sarif_file: 'trivy-results-${{ matrix.image.name }}.sarif' @@ -232,17 +232,17 @@ jobs: name: quick_build path: ./ - name: Set up QEMU - uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0 + uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0 - name: Set up Buildx - uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 + uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0 - name: Login to GitHub Container Registry - uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 + uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker metadata - uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0 + uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0 id: meta with: images: ghcr.io/${{ github.repository_owner }}/${{ matrix.image.name }} @@ -257,7 +257,7 @@ jobs: # latest only for stable releases # develop builds - name: Build and Push - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0 id: push with: push: true @@ -273,7 +273,7 @@ jobs: - name: Generate SBOM run: syft ghcr.io/${{ github.repository_owner }}/${{ matrix.image.name }}@${DIGEST} -o cyclonedx-json > sbom.json - name: Set up cosign - uses: sigstore/cosign-installer@cad07c2e89fa2edd6e2d7bab4c1aa38e53f76003 # v4.1.1 + uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2 - name: Attach SBOM run: cosign attest --yes --predicate sbom.json --type cyclonedx ghcr.io/${{ github.repository_owner }}/${{ matrix.image.name }}@${DIGEST} - name: Sign image From f67e589a818dc92d4cc24a2eeb4a4b85ca0cc064 Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Tue, 2 Jun 2026 17:51:56 +0200 Subject: [PATCH 04/11] nginx version upgrade, static subnet config for all networks The "internet" network must be a /28 network and thus the start ip needs to be aligned to a multiple of 16. All other networks are /29 with start ips aligned to multiples of 8. --- .../docker-compose.yml | 94 ++++++++++++++----- .../proxy/conf.d/dic1.conf | 2 +- .../proxy/conf.d/dic2.conf | 4 +- .../proxy/conf.d/dic3.conf | 4 +- .../proxy/conf.d/ttp.conf | 4 +- 5 files changed, 79 insertions(+), 29 deletions(-) diff --git a/dsf-docker-dev-setup-3dic-ttp/docker-compose.yml b/dsf-docker-dev-setup-3dic-ttp/docker-compose.yml index 7cbd9d76b..b5378f93a 100644 --- a/dsf-docker-dev-setup-3dic-ttp/docker-compose.yml +++ b/dsf-docker-dev-setup-3dic-ttp/docker-compose.yml @@ -16,7 +16,7 @@ services: proxy: - image: nginx:1.29 + image: nginx:1.31 restart: "no" ports: - 127.0.0.1:443:443 @@ -38,19 +38,19 @@ services: dic1-fhir-frontend: ipv4_address: 172.20.0.2 dic2-fhir-frontend: - ipv4_address: 172.20.0.10 - dic3-fhir-frontend: ipv4_address: 172.20.0.18 + dic3-fhir-frontend: + ipv4_address: 172.20.0.34 ttp-fhir-frontend: - ipv4_address: 172.20.0.26 + ipv4_address: 172.20.0.50 dic1-bpe-frontend: - ipv4_address: 172.20.0.34 + ipv4_address: 172.20.0.66 dic2-bpe-frontend: - ipv4_address: 172.20.0.42 + ipv4_address: 172.20.0.82 dic3-bpe-frontend: - ipv4_address: 172.20.0.50 + ipv4_address: 172.20.0.98 ttp-bpe-frontend: - ipv4_address: 172.20.0.58 + ipv4_address: 172.20.0.114 internet: aliases: - dic1 @@ -290,7 +290,7 @@ services: DEV_DSF_SERVER_AUTH_OIDC_CLIENT_SECRET_FILE: /run/secrets/oidc_client_dic2_fhir.secret networks: dic2-fhir-frontend: - ipv4_address: 172.20.0.11 + ipv4_address: 172.20.0.19 dic2-fhir-backend: internet: depends_on: @@ -369,7 +369,7 @@ services: DEV_DSF_SERVER_AUTH_OIDC_CLIENT_SECRET_FILE: /run/secrets/oidc_client_dic3_fhir.secret networks: dic3-fhir-frontend: - ipv4_address: 172.20.0.19 + ipv4_address: 172.20.0.35 dic3-fhir-backend: internet: depends_on: @@ -456,7 +456,7 @@ services: DEV_DSF_SERVER_AUTH_OIDC_CLIENT_SECRET_FILE: /run/secrets/oidc_client_ttp_fhir.secret networks: ttp-fhir-frontend: - ipv4_address: 172.20.0.27 + ipv4_address: 172.20.0.51 ttp-fhir-backend: internet: depends_on: @@ -573,7 +573,7 @@ services: DEV_DSF_BPE_FHIR_CLIENT_CONNECTIONS_CONFIG_DEFAULT_TRUST_SERVER_CERTIFICATE_CAS: /run/secrets/root_ca.crt networks: dic1-bpe-frontend: - ipv4_address: 172.20.0.35 + ipv4_address: 172.20.0.67 dic1-bpe-backend: internet: forward-proxy: @@ -664,7 +664,7 @@ services: DEV_DSF_SERVER_AUTH_OIDC_CLIENT_SECRET_FILE: /run/secrets/oidc_client_dic2_bpe.secret networks: dic2-bpe-frontend: - ipv4_address: 172.20.0.43 + ipv4_address: 172.20.0.83 dic2-bpe-backend: internet: depends_on: @@ -753,7 +753,7 @@ services: DEV_DSF_SERVER_AUTH_OIDC_CLIENT_SECRET_FILE: /run/secrets/oidc_client_dic3_bpe.secret networks: dic3-bpe-frontend: - ipv4_address: 172.20.0.51 + ipv4_address: 172.20.0.99 dic3-bpe-backend: internet: depends_on: @@ -843,7 +843,7 @@ services: DEV_DSF_SERVER_AUTH_OIDC_CLIENT_SECRET_FILE: /run/secrets/oidc_client_ttp_bpe.secret networks: ttp-bpe-frontend: - ipv4_address: 172.20.0.59 + ipv4_address: 172.20.0.115 ttp-bpe-backend: internet: depends_on: @@ -964,57 +964,107 @@ networks: config: - subnet: 172.20.0.0/29 dic1-fhir-backend: - dic2-fhir-frontend: driver: bridge ipam: driver: default config: - subnet: 172.20.0.8/29 + dic2-fhir-frontend: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.16/29 dic2-fhir-backend: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.24/29 dic3-fhir-frontend: driver: bridge ipam: driver: default config: - - subnet: 172.20.0.16/29 + - subnet: 172.20.0.32/29 dic3-fhir-backend: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.40/29 ttp-fhir-frontend: driver: bridge ipam: driver: default config: - - subnet: 172.20.0.24/29 + - subnet: 172.20.0.48/29 ttp-fhir-backend: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.56/29 dic1-bpe-frontend: driver: bridge ipam: driver: default config: - - subnet: 172.20.0.32/29 + - subnet: 172.20.0.64/29 dic1-bpe-backend: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.72/29 dic2-bpe-frontend: driver: bridge ipam: driver: default config: - - subnet: 172.20.0.40/29 + - subnet: 172.20.0.80/29 dic2-bpe-backend: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.88/29 dic3-bpe-frontend: driver: bridge ipam: driver: default config: - - subnet: 172.20.0.48/29 + - subnet: 172.20.0.96/29 dic3-bpe-backend: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.104/29 ttp-bpe-frontend: driver: bridge ipam: driver: default config: - - subnet: 172.20.0.56/29 + - subnet: 172.20.0.112/29 ttp-bpe-backend: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.120/29 internet: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.128/28 forward-proxy: + driver: bridge + ipam: + driver: default + config: + - subnet: 172.20.0.144/29 volumes: postgresql: diff --git a/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic1.conf b/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic1.conf index 0580cae33..e7e86ae66 100644 --- a/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic1.conf +++ b/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic1.conf @@ -38,7 +38,7 @@ server { location /bpe { proxy_set_header X-ClientCert $ssl_client_escaped_cert; - proxy_pass http://172.20.0.35:8080/bpe; + proxy_pass http://172.20.0.67:8080/bpe; proxy_http_version 1.1; proxy_set_header Host $http_host; diff --git a/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic2.conf b/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic2.conf index e7cffb32d..7246c61e8 100644 --- a/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic2.conf +++ b/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic2.conf @@ -22,7 +22,7 @@ server { location /fhir { proxy_set_header X-ClientCert $ssl_client_escaped_cert; - proxy_pass http://172.20.0.11:8080/fhir; + proxy_pass http://172.20.0.19:8080/fhir; proxy_http_version 1.1; proxy_set_header Host $http_host; @@ -38,7 +38,7 @@ server { location /bpe { proxy_set_header X-ClientCert $ssl_client_escaped_cert; - proxy_pass http://172.20.0.43:8080/bpe; + proxy_pass http://172.20.0.83:8080/bpe; proxy_http_version 1.1; proxy_set_header Host $http_host; diff --git a/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic3.conf b/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic3.conf index 2b5668b8a..3b9856925 100644 --- a/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic3.conf +++ b/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/dic3.conf @@ -22,7 +22,7 @@ server { location /fhir { proxy_set_header X-ClientCert $ssl_client_escaped_cert; - proxy_pass http://172.20.0.19:8080/fhir; + proxy_pass http://172.20.0.35:8080/fhir; proxy_http_version 1.1; proxy_set_header Host $http_host; @@ -38,7 +38,7 @@ server { location /bpe { proxy_set_header X-ClientCert $ssl_client_escaped_cert; - proxy_pass http://172.20.0.51:8080/bpe; + proxy_pass http://172.20.0.99:8080/bpe; proxy_http_version 1.1; proxy_set_header Host $http_host; diff --git a/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/ttp.conf b/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/ttp.conf index da3d7d9fc..7fd6b7c49 100644 --- a/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/ttp.conf +++ b/dsf-docker-dev-setup-3dic-ttp/proxy/conf.d/ttp.conf @@ -22,7 +22,7 @@ server { location /fhir { proxy_set_header X-ClientCert $ssl_client_escaped_cert; - proxy_pass http://172.20.0.27:8080/fhir; + proxy_pass http://172.20.0.51:8080/fhir; proxy_http_version 1.1; proxy_set_header Host $http_host; @@ -38,7 +38,7 @@ server { location /bpe { proxy_set_header X-ClientCert $ssl_client_escaped_cert; - proxy_pass http://172.20.0.59:8080/bpe; + proxy_pass http://172.20.0.115:8080/bpe; proxy_http_version 1.1; proxy_set_header Host $http_host; From ac2a29f9c442620d9b1536b5a80e092e6ee2c50f Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Tue, 2 Jun 2026 18:10:53 +0200 Subject: [PATCH 05/11] changed level of log message from warning to debug The log message is produced during delete and deletePermanently authorization checks. The warning was generated for every deletePermanently operation and reflects an expected status. --- .../java/dev/dsf/fhir/dao/jdbc/AbstractResourceDaoJdbc.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractResourceDaoJdbc.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractResourceDaoJdbc.java index f5ff2763a..8db9e7a7a 100755 --- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractResourceDaoJdbc.java +++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractResourceDaoJdbc.java @@ -523,7 +523,7 @@ public Optional readIncludingDeletedWithTransaction(Connection connection, UU if (result.next()) { if (preparedStatementFactory.getReadByIdDeleted(result) != null) - logger.warn("{} with IdPart {} found, but marked as deleted", resourceTypeName, uuid); + logger.debug("{} with IdPart {} found, but marked as deleted", resourceTypeName, uuid); else logger.debug("{} with IdPart {} found", resourceTypeName, uuid); From 06865e9f39850c405f530f8120b877051b4e2d3f Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Tue, 2 Jun 2026 20:24:52 +0200 Subject: [PATCH 06/11] dependency and maven plugin version upgrades, related code changes cleaned up not needed com.auth0:java-jwt dependencies --- dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml | 6 +++ .../dsf-bpe-process-api-v1-operaton/pom.xml | 6 +++ dsf-bpe/dsf-bpe-process-api-v1/pom.xml | 6 +++ dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml | 5 -- dsf-bpe/dsf-bpe-process-api-v2/pom.xml | 6 +++ dsf-bpe/dsf-bpe-process-api/pom.xml | 10 ++-- dsf-bpe/dsf-bpe-server/pom.xml | 5 ++ dsf-common/dsf-common-auth/pom.xml | 6 +++ dsf-common/dsf-common-config/pom.xml | 6 +++ .../dsf-common-docker-secrets-reader/pom.xml | 6 +++ .../common/logging/Log4jConfiguration.java | 25 +++++----- .../dsf/common/logging/Log4jInitializer.java | 4 +- dsf-common/dsf-common-status/pom.xml | 6 +++ dsf-maven/dsf-maven-plugin/pom.xml | 6 +++ pom.xml | 50 +++++++++---------- 15 files changed, 103 insertions(+), 50 deletions(-) diff --git a/dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml b/dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml index a6b2dd82d..ac6384d02 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml @@ -41,6 +41,12 @@ org.springframework spring-context + + + commons-logging + commons-logging + + com.fasterxml.jackson.core diff --git a/dsf-bpe/dsf-bpe-process-api-v1-operaton/pom.xml b/dsf-bpe/dsf-bpe-process-api-v1-operaton/pom.xml index 95816cf97..d578bdc92 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-operaton/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v1-operaton/pom.xml @@ -49,6 +49,12 @@ org.springframework spring-context + + + commons-logging + commons-logging + + com.fasterxml.jackson.core diff --git a/dsf-bpe/dsf-bpe-process-api-v1/pom.xml b/dsf-bpe/dsf-bpe-process-api-v1/pom.xml index 328e41ef5..ce2a3c3a1 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v1/pom.xml @@ -50,6 +50,12 @@ org.springframework spring-context + + + commons-logging + commons-logging + + com.fasterxml.jackson.core diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml b/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml index a04f585fb..2e938fb24 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml @@ -88,11 +88,6 @@ ${hapi.fhir.version.v2} - - com.auth0 - java-jwt - - de.hs-heilbronn.mi crypto-utils diff --git a/dsf-bpe/dsf-bpe-process-api-v2/pom.xml b/dsf-bpe/dsf-bpe-process-api-v2/pom.xml index 0fc973937..0b46f69ca 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v2/pom.xml @@ -57,6 +57,12 @@ org.springframework spring-context + + + commons-logging + commons-logging + + com.fasterxml.jackson.core diff --git a/dsf-bpe/dsf-bpe-process-api/pom.xml b/dsf-bpe/dsf-bpe-process-api/pom.xml index 0205d2748..f8352bfa5 100644 --- a/dsf-bpe/dsf-bpe-process-api/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api/pom.xml @@ -46,10 +46,12 @@ org.springframework spring-context - - - com.auth0 - java-jwt + + + commons-logging + commons-logging + + \ No newline at end of file diff --git a/dsf-bpe/dsf-bpe-server/pom.xml b/dsf-bpe/dsf-bpe-server/pom.xml index 30c57b695..0dde1acd7 100755 --- a/dsf-bpe/dsf-bpe-server/pom.xml +++ b/dsf-bpe/dsf-bpe-server/pom.xml @@ -216,6 +216,11 @@ bcmail-jdk18on + + com.auth0 + java-jwt + + com.icegreen greenmail-junit4 diff --git a/dsf-common/dsf-common-auth/pom.xml b/dsf-common/dsf-common-auth/pom.xml index a7b809b77..61d33f97b 100644 --- a/dsf-common/dsf-common-auth/pom.xml +++ b/dsf-common/dsf-common-auth/pom.xml @@ -64,6 +64,12 @@ org.springframework spring-beans + + + commons-logging + commons-logging + + org.bouncycastle diff --git a/dsf-common/dsf-common-config/pom.xml b/dsf-common/dsf-common-config/pom.xml index 5f5f2b5b4..fbee5a783 100644 --- a/dsf-common/dsf-common-config/pom.xml +++ b/dsf-common/dsf-common-config/pom.xml @@ -36,6 +36,12 @@ org.springframework spring-beans + + + commons-logging + commons-logging + + de.hs-heilbronn.mi diff --git a/dsf-common/dsf-common-docker-secrets-reader/pom.xml b/dsf-common/dsf-common-docker-secrets-reader/pom.xml index 87ac31219..0659f22b7 100644 --- a/dsf-common/dsf-common-docker-secrets-reader/pom.xml +++ b/dsf-common/dsf-common-docker-secrets-reader/pom.xml @@ -36,6 +36,12 @@ org.springframework spring-core + + + commons-logging + commons-logging + + org.slf4j diff --git a/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/logging/Log4jConfiguration.java b/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/logging/Log4jConfiguration.java index e8c9ca909..3e08ab356 100644 --- a/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/logging/Log4jConfiguration.java +++ b/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/logging/Log4jConfiguration.java @@ -60,17 +60,17 @@ public Log4jTextLayout(boolean color) public StringLayout consoleLayout(Configuration configuration) { if (color) - return PatternLayout.newBuilder().withPattern( + return PatternLayout.newBuilder().setPattern( "%highlight{%p %t - %C{1}.%M(%L) | %m}{FATAL=red, ERROR=red, WARN=yellow, INFO=white, DEBUG=white, TRACE=white}%n") .build(); else - return PatternLayout.newBuilder().withPattern("%p %t - %C{1}.%M(%L) | %m%n").build(); + return PatternLayout.newBuilder().setPattern("%p %t - %C{1}.%M(%L) | %m%n").build(); } @Override public StringLayout fileLayout(Configuration configuration) { - return PatternLayout.newBuilder().withPattern("%d [%t] %-5p %c - %m%n").build(); + return PatternLayout.newBuilder().setPattern("%d [%t] %-5p %c - %m%n").build(); } } @@ -87,17 +87,17 @@ public Log4jTextMdcLayout(boolean color) public StringLayout consoleLayout(Configuration configuration) { if (color) - return PatternLayout.newBuilder().withPattern( + return PatternLayout.newBuilder().setPattern( "%highlight{%p %t - %C{1}.%M(%L)%notEmpty{ - %X} | %m}{FATAL=red, ERROR=red, WARN=yellow, INFO=white, DEBUG=white, TRACE=white}%n") .build(); else - return PatternLayout.newBuilder().withPattern("%p %t - %C{1}.%M(%L)%notEmpty{ - %X} | %m%n").build(); + return PatternLayout.newBuilder().setPattern("%p %t - %C{1}.%M(%L)%notEmpty{ - %X} | %m%n").build(); } @Override public StringLayout fileLayout(Configuration configuration) { - return PatternLayout.newBuilder().withPattern("%d [%t] %-5p %c%notEmpty{ - %X} - %m%n").build(); + return PatternLayout.newBuilder().setPattern("%d [%t] %-5p %c%notEmpty{ - %X} - %m%n").build(); } } @@ -180,11 +180,10 @@ public Log4jConfiguration(LoggerContext loggerContext, String name, String fileN if (fileEnabled) { - Appender file = RollingFileAppender.newBuilder().setName("FILE") - .withFileName("log/" + fileNamePart + ".log") - .withFilePattern("log/" + fileNamePart + "_%d{yyyy-MM-dd}_%i.log.gz").setIgnoreExceptions(false) + Appender file = RollingFileAppender.newBuilder().setName("FILE").setFileName("log/" + fileNamePart + ".log") + .setFilePattern("log/" + fileNamePart + "_%d{yyyy-MM-dd}_%i.log.gz").setIgnoreExceptions(false) .setLayout(fileLayout.fileLayout(this)) - .withPolicy(CompositeTriggeringPolicy.createPolicy(OnStartupTriggeringPolicy.createPolicy(1), + .setPolicy(CompositeTriggeringPolicy.createPolicy(OnStartupTriggeringPolicy.createPolicy(1), TimeBasedTriggeringPolicy.newBuilder().build())) .build(); addAppender(file); @@ -246,10 +245,10 @@ private Appender createFileAppender(String appenderName, String fileNamePart, St return null; return RollingFileAppender.newBuilder().setName(appenderName + ".FILE") - .withFileName("log/" + fileNamePart + ".log") - .withFilePattern("log/" + fileNamePart + "_%d{yyyy-MM-dd}_%i.log.gz").setIgnoreExceptions(false) + .setFileName("log/" + fileNamePart + ".log") + .setFilePattern("log/" + fileNamePart + "_%d{yyyy-MM-dd}_%i.log.gz").setIgnoreExceptions(false) .setLayout(layout) - .withPolicy(CompositeTriggeringPolicy.createPolicy(OnStartupTriggeringPolicy.createPolicy(1), + .setPolicy(CompositeTriggeringPolicy.createPolicy(OnStartupTriggeringPolicy.createPolicy(1), TimeBasedTriggeringPolicy.newBuilder().build())) .build(); } diff --git a/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/logging/Log4jInitializer.java b/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/logging/Log4jInitializer.java index 0ed1b28da..f3952d201 100644 --- a/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/logging/Log4jInitializer.java +++ b/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/logging/Log4jInitializer.java @@ -240,9 +240,9 @@ else if (STYLE_JSON_LOGSTASH.equalsIgnoreCase(value)) return configuration -> JsonTemplateLayout.newBuilder().setConfiguration(configuration) .setEventTemplateUri(TemplateUri.LOGSTASH.getUri()).build(); else if (STYLE_TEXT.equalsIgnoreCase(value)) - return _ -> PatternLayout.newBuilder().withPattern("%d %m%n").build(); + return _ -> PatternLayout.newBuilder().setPattern("%d %m%n").build(); else if (STYLE_TEXT_MDC.equalsIgnoreCase(value)) - return _ -> PatternLayout.newBuilder().withPattern("%d%notEmpty{ %X} %m%n").build(); + return _ -> PatternLayout.newBuilder().setPattern("%d%notEmpty{ %X} %m%n").build(); else throw new IllegalArgumentException( "Value '" + value + "' for " + PREFIX + parameter + POSTFIX_STYLE + " not supported"); diff --git a/dsf-common/dsf-common-status/pom.xml b/dsf-common/dsf-common-status/pom.xml index b8a03f6e1..c4bbcd592 100644 --- a/dsf-common/dsf-common-status/pom.xml +++ b/dsf-common/dsf-common-status/pom.xml @@ -48,6 +48,12 @@ org.springframework spring-context + + + commons-logging + commons-logging + + org.apache.commons diff --git a/dsf-maven/dsf-maven-plugin/pom.xml b/dsf-maven/dsf-maven-plugin/pom.xml index fa6486a2f..13fd1c11b 100644 --- a/dsf-maven/dsf-maven-plugin/pom.xml +++ b/dsf-maven/dsf-maven-plugin/pom.xml @@ -138,6 +138,12 @@ org.springframework spring-core + + + commons-logging + commons-logging + + diff --git a/pom.xml b/pom.xml index 0ab5b8de4..09cc5d04b 100755 --- a/pom.xml +++ b/pom.xml @@ -38,14 +38,14 @@ ${project.basedir} - 2.0.17 - 2.25.4 - 12.1.8 + 2.0.18 + 2.26.0 + 12.1.10 3.1.11 2.2.2 - 6.2.18 - 2.21.2 - 1.1.1 + 7.0.7 + 2.21.4 + 2.1.1 5.1.0 8.4.2 6.5.27 @@ -183,7 +183,7 @@ org.postgresql postgresql - 42.7.10 + 42.7.11 org.checkerframework @@ -193,7 +193,7 @@ com.github.ben-manes.caffeine caffeine - 3.2.3 + 3.2.4 @@ -205,7 +205,7 @@ com.auth0 java-jwt - 4.5.1 + 4.5.2 @@ -293,8 +293,6 @@ com.fasterxml.jackson.core jackson-annotations - 2.21 @@ -334,7 +332,7 @@ org.glassfish.jaxb jaxb-runtime - 4.0.7 + 4.0.9 @@ -448,17 +446,17 @@ com.google.code.gson gson - 2.13.2 + 2.14.0 org.thymeleaf thymeleaf - 3.1.4.RELEASE + 3.1.5.RELEASE com.nimbusds nimbus-jose-jwt - 10.9 + 10.9.1 org.fhir @@ -469,12 +467,12 @@ commons-io commons-io - 2.21.0 + 2.22.0 commons-codec commons-codec - 1.21.0 + 1.22.0 @@ -508,25 +506,25 @@ org.ow2.asm asm - 9.9.1 + 9.10.1 org.apache.tika tika-core - 3.3.0 + 3.3.1 org.apache.maven maven-core - 3.9.15 + 3.9.16 org.apache.maven maven-plugin-api - 3.9.15 + 3.9.16 org.apache.maven.plugin-tools @@ -574,12 +572,12 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.5 + 3.5.6 org.apache.maven.plugins maven-failsafe-plugin - 3.5.5 + 3.5.6 org.apache.maven.plugins @@ -609,7 +607,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.10.0 + 3.11.0 org.codehaus.mojo @@ -624,12 +622,12 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.6.2 + 3.6.3 org.apache.maven.plugins maven-site-plugin - 3.21.0 + 3.22.0 com.github.spotbugs From 5b4414b097c03d11a6407e9b4fedbe08eed71823 Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Mon, 8 Jun 2026 12:50:43 +0200 Subject: [PATCH 07/11] removed not needed or rather incorrectly placed slash in search urls --- .../src/main/java/dev/dsf/bpe/test/service/DsfClientTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/service/DsfClientTest.java b/dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/service/DsfClientTest.java index afd92168e..72dad72f6 100644 --- a/dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/service/DsfClientTest.java +++ b/dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/service/DsfClientTest.java @@ -172,7 +172,7 @@ public void searchAsyncUrl(ProcessPluginApi api) throws Exception Optional client = api.getDsfClientProvider().getById("test-fhir-data-server"); expectTrue(client.isPresent()); - CompletableFuture fBundle = client.get().searchAsync(client.get().getBaseUrl() + "/Patient"); + CompletableFuture fBundle = client.get().searchAsync(client.get().getBaseUrl() + "Patient"); expectNotNull(fBundle); Bundle bundle = fBundle.get(); @@ -201,7 +201,7 @@ public void searchAsyncUrlStrict(ProcessPluginApi api) throws Exception expectTrue(client.isPresent()); CompletableFuture fBundle = client.get() - .searchAsyncWithStrictHandling(client.get().getBaseUrl() + "/Patient"); + .searchAsyncWithStrictHandling(client.get().getBaseUrl() + "Patient"); expectNotNull(fBundle); Bundle bundle = fBundle.get(); From 8bd2dc22e5ca584fa785c106bf0bcd6807c82cbf Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Mon, 8 Jun 2026 12:51:06 +0200 Subject: [PATCH 08/11] improved license-maven-plugin config --- .trivyignore | 16 ++++++++++++++++ dsf-fhir/dsf-fhir-validation/pom.xml | 2 ++ pom.xml | 1 + 3 files changed, 19 insertions(+) diff --git a/.trivyignore b/.trivyignore index 1e04d74d0..0cd739a94 100644 --- a/.trivyignore +++ b/.trivyignore @@ -1,3 +1,19 @@ +# +# Copyright 2018-2025 Heilbronn University of Applied Sciences +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + # Ignore reason: Vulnerable code not used in DSF # CVE title: FHIR Validator HTTP service has SSRF via /loadIG Chains with startsWith() Credential Leak for Authentication Token Theft CVE-2026-34361 diff --git a/dsf-fhir/dsf-fhir-validation/pom.xml b/dsf-fhir/dsf-fhir-validation/pom.xml index f6d6bca09..cda2606d9 100644 --- a/dsf-fhir/dsf-fhir-validation/pom.xml +++ b/dsf-fhir/dsf-fhir-validation/pom.xml @@ -133,7 +133,9 @@ + src/main/resources/fhir/**/*.ignore src/main/resources/fhir/**/*.post + src/main/resources/fhir/**/*.put src/main/resources/fhir/bundle.xml src/main/resources/fhir/resources.delete diff --git a/pom.xml b/pom.xml index 09cc5d04b..53eed3ee1 100755 --- a/pom.xml +++ b/pom.xml @@ -1095,6 +1095,7 @@ SCRIPT_STYLE SCRIPT_STYLE SCRIPT_STYLE + SCRIPT_STYLE From 49efa2c916f9c33db5f508d2ac20dcadfc3c56e9 Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Mon, 8 Jun 2026 16:47:50 +0200 Subject: [PATCH 09/11] replaced wrong Objects import com.google.common.base.Objects -> java.util.Objects --- .../search/parameters/basic/AbstractBooleanParameter.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/search/parameters/basic/AbstractBooleanParameter.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/search/parameters/basic/AbstractBooleanParameter.java index 29839e63b..04076fdb3 100755 --- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/search/parameters/basic/AbstractBooleanParameter.java +++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/search/parameters/basic/AbstractBooleanParameter.java @@ -16,13 +16,12 @@ package dev.dsf.fhir.search.parameters.basic; import java.util.List; +import java.util.Objects; import java.util.function.Function; import java.util.function.Predicate; import org.hl7.fhir.r4.model.Resource; -import com.google.common.base.Objects; - import dev.dsf.fhir.search.SearchQueryParameterError; import dev.dsf.fhir.search.SearchQueryParameterError.SearchQueryParameterErrorType; @@ -86,6 +85,6 @@ public String getBundleUriQueryParameterValue() @Override protected boolean resourceMatches(R resource) { - return hasBoolean.test(resource) && Objects.equal(getBoolean.apply(resource), value); + return hasBoolean.test(resource) && Objects.equals(getBoolean.apply(resource), value); } } From a39f8dd8e77f00b70caeba62f08f408030061325 Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Mon, 8 Jun 2026 23:38:14 +0200 Subject: [PATCH 10/11] removed / excluded not needed dependencies --- dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml | 5 --- dsf-bpe/dsf-bpe-process-api-v1/pom.xml | 4 ++ dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml | 21 +++------- dsf-bpe/dsf-bpe-process-api-v2/pom.xml | 27 +++++++++++++ .../dsf/bpe/webservice/ProcessService.java | 2 - dsf-common/dsf-common-auth/pom.xml | 10 +++++ dsf-fhir/dsf-fhir-rest-adapter/pom.xml | 10 +++++ dsf-fhir/dsf-fhir-server/pom.xml | 18 +++++++++ .../adapter/ThymeleafTemplateServiceImpl.java | 2 - dsf-fhir/dsf-fhir-validation/pom.xml | 38 +++++++++++++++++++ pom.xml | 2 +- 11 files changed, 114 insertions(+), 25 deletions(-) diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml b/dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml index 0b8674b81..e255b649b 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml @@ -158,11 +158,6 @@ org.hl7.fhir.r5 ${hapi.fhir.version.v1} - - net.sf.saxon - Saxon-HE - 9.5.1-5 - ca.uhn.hapi.fhir org.hl7.fhir.validation diff --git a/dsf-bpe/dsf-bpe-process-api-v1/pom.xml b/dsf-bpe/dsf-bpe-process-api-v1/pom.xml index ce2a3c3a1..f47e76548 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v1/pom.xml @@ -92,6 +92,10 @@ commons-logging commons-logging + + net.sf.saxon + Saxon-HE + diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml b/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml index 2e938fb24..0c4b71054 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml @@ -86,6 +86,12 @@ ca.uhn.hapi.fhir hapi-fhir-validation-resources-r4 ${hapi.fhir.version.v2} + + + io.opentelemetry + opentelemetry-api + + @@ -174,11 +180,6 @@ org.hl7.fhir.convertors ${hapi.fhir.org.hl7.version.v2} - - org.xerial - sqlite-jdbc - 3.50.3.0 - ca.uhn.hapi.fhir org.hl7.fhir.validation @@ -199,16 +200,6 @@ plantuml-mit 1.2023.9 - - net.sf.saxon - Saxon-HE - 11.6 - - jakarta-regexp jakarta-regexp diff --git a/dsf-bpe/dsf-bpe-process-api-v2/pom.xml b/dsf-bpe/dsf-bpe-process-api-v2/pom.xml index 0b46f69ca..15baf99c6 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v2/pom.xml @@ -37,6 +37,16 @@ ca.uhn.hapi.fhir hapi-fhir-structures-r4 ${hapi.fhir.version.v2} + + + io.opentelemetry + opentelemetry-api + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + + ca.uhn.hapi.fhir @@ -47,12 +57,29 @@ commons-logging commons-logging + + net.sf.saxon + Saxon-HE + + + org.ogce + xpp3 + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + + + org.xerial + sqlite-jdbc + ca.uhn.hapi.fhir hapi-fhir-client ${hapi.fhir.version.v2} + org.springframework diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/ProcessService.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/ProcessService.java index 940826777..099c08bce 100755 --- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/ProcessService.java +++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/ProcessService.java @@ -48,7 +48,6 @@ import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.Response.Status; import jakarta.ws.rs.core.StreamingOutput; -import net.sf.saxon.lib.FeatureKeys; @RolesAllowed("ADMIN") @Path(ProcessService.PATH) @@ -72,7 +71,6 @@ public ProcessService(ThymeleafTemplateService templateService, RepositoryServic try { transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - transformerFactory.setFeature(FeatureKeys.ALLOW_EXTERNAL_FUNCTIONS, false); } catch (TransformerConfigurationException e) { diff --git a/dsf-common/dsf-common-auth/pom.xml b/dsf-common/dsf-common-auth/pom.xml index 61d33f97b..7f474beee 100644 --- a/dsf-common/dsf-common-auth/pom.xml +++ b/dsf-common/dsf-common-auth/pom.xml @@ -37,6 +37,16 @@ ca.uhn.hapi.fhir hapi-fhir-structures-r4 ${hapi.fhir.version} + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + + + io.opentelemetry + opentelemetry-api + + org.yaml diff --git a/dsf-fhir/dsf-fhir-rest-adapter/pom.xml b/dsf-fhir/dsf-fhir-rest-adapter/pom.xml index 6f2a8869d..15157c91d 100755 --- a/dsf-fhir/dsf-fhir-rest-adapter/pom.xml +++ b/dsf-fhir/dsf-fhir-rest-adapter/pom.xml @@ -37,6 +37,16 @@ ca.uhn.hapi.fhir hapi-fhir-structures-r4 ${hapi.fhir.version} + + + io.opentelemetry + opentelemetry-api + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + + jakarta.ws.rs diff --git a/dsf-fhir/dsf-fhir-server/pom.xml b/dsf-fhir/dsf-fhir-server/pom.xml index 5ab54be76..03c7512bb 100755 --- a/dsf-fhir/dsf-fhir-server/pom.xml +++ b/dsf-fhir/dsf-fhir-server/pom.xml @@ -143,6 +143,12 @@ ca.uhn.hapi.fhir hapi-fhir-structures-r4 ${hapi.fhir.version} + + + io.opentelemetry + opentelemetry-api + + ca.uhn.hapi.fhir @@ -157,6 +163,18 @@ commons-logging commons-logging + + net.sf.saxon + Saxon-HE + + + org.ogce + xpp3 + + + org.xerial + sqlite-jdbc + ${hapi.fhir.version} diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafTemplateServiceImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafTemplateServiceImpl.java index 3269d739a..c5dd2958b 100644 --- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafTemplateServiceImpl.java +++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafTemplateServiceImpl.java @@ -65,7 +65,6 @@ import jakarta.ws.rs.core.PathSegment; import jakarta.ws.rs.core.SecurityContext; import jakarta.ws.rs.core.UriInfo; -import net.sf.saxon.lib.FeatureKeys; public class ThymeleafTemplateServiceImpl implements ThymeleafTemplateService, InitializingBean { @@ -154,7 +153,6 @@ public ThymeleafTemplateServiceImpl(String serverBaseUrl, Theme theme, FhirConte try { transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - transformerFactory.setFeature(FeatureKeys.ALLOW_EXTERNAL_FUNCTIONS, false); } catch (TransformerConfigurationException e) { diff --git a/dsf-fhir/dsf-fhir-validation/pom.xml b/dsf-fhir/dsf-fhir-validation/pom.xml index cda2606d9..7e008374a 100644 --- a/dsf-fhir/dsf-fhir-validation/pom.xml +++ b/dsf-fhir/dsf-fhir-validation/pom.xml @@ -37,11 +37,27 @@ ca.uhn.hapi.fhir hapi-fhir-caching-caffeine ${hapi.fhir.version} + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + + ca.uhn.hapi.fhir hapi-fhir-structures-r4 ${hapi.fhir.version} + + + io.opentelemetry + opentelemetry-api + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + + ca.uhn.hapi.fhir @@ -52,12 +68,34 @@ commons-logging commons-logging + + net.sf.saxon + Saxon-HE + + + org.ogce + xpp3 + + + org.xerial + sqlite-jdbc + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + ca.uhn.hapi.fhir hapi-fhir-validation-resources-r4 ${hapi.fhir.version} + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + + diff --git a/pom.xml b/pom.xml index 53eed3ee1..fde175995 100755 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ 1.84 3.8.0 5.2.1 - 5.2.1 + 6.0.0 DSF Parent POM From adc72c2e7d89f6425af677b527629633c760eff1 Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Wed, 10 Jun 2026 15:40:30 +0200 Subject: [PATCH 11/11] fully migrated fhir/bpe and api v2 to EE11, api v1 stays at EE10 Previous versions still used EE10 implementations for the fhir and bpe applications servers as well as clients in the v1 and v2 process plugin APIs. Code changes to execute v1 and v2 code with the correct ContextClassLoader so that EE api can find the correct implementations within the different api ClassLoaders. Reworked the old logging MDC code to now also handle the change of the ContextClassLoader before and after process plugin code execution. Commit also removes a few not needed HAPI dependencies via excludes. --- dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml | 1 + dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml | 119 +++++++++---- .../PluginContextImpl.java} | 14 +- .../dev/dsf/bpe/v1/listener/EndListener.java | 12 +- .../dsf/bpe/v1/plugin/ProcessPluginImpl.java | 15 +- .../dsf/bpe/v1/spring/ApiServiceConfig.java | 3 +- .../dsf-bpe-process-api-v1-operaton/pom.xml | 1 + dsf-bpe/dsf-bpe-process-api-v1/pom.xml | 9 + dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml | 157 +++++++++--------- .../dsf/AbstractDsfClientJerseyWithRetry.java | 4 +- .../bpe/v2/client/dsf/DsfClientJersey.java | 4 +- .../PluginContextImpl.java} | 14 +- .../dev/dsf/bpe/v2/listener/EndListener.java | 12 +- .../dsf/bpe/v2/plugin/ProcessPluginImpl.java | 16 +- .../bpe/v2/service/StartTaskUpdaterImpl.java | 15 +- .../dsf/bpe/v2/spring/ApiServiceConfig.java | 4 +- .../dsf/bpe/v2/variables/VariablesImpl.java | 8 +- dsf-bpe/dsf-bpe-process-api-v2/pom.xml | 13 ++ .../AbstractPluginContext.java} | 145 ++++++++++++---- .../PluginContext.java} | 14 +- .../dev/dsf/bpe/api/plugin/ProcessPlugin.java | 4 +- dsf-bpe/dsf-bpe-server/pom.xml | 9 +- ...stractWebserviceClientJerseyWithRetry.java | 4 +- .../client/dsf/WebserviceClientJersey.java | 4 +- .../fhir/FhirConnectionTestClientJersey.java | 4 +- .../dsf/bpe/engine/DelegateProviderImpl.java | 6 +- .../listener/DefaultBpmnParseListener.java | 2 +- .../bpe/plugin/ProcessPluginManagerImpl.java | 4 +- .../bpe/api/v1/allowed-bpe-classes.list | 8 +- .../bpe/api/v2/allowed-bpe-classes.list | 8 +- dsf-common/dsf-common-auth/pom.xml | 2 + dsf-common/dsf-common-oidc/pom.xml | 5 +- .../dsf/common/oidc/BaseOidcClientJersey.java | 4 +- dsf-common/dsf-common-status/pom.xml | 2 + dsf-common/dsf-common-ui/pom.xml | 1 + dsf-fhir/dsf-fhir-rest-adapter/pom.xml | 1 + dsf-fhir/dsf-fhir-server/pom.xml | 19 +++ dsf-fhir/dsf-fhir-validation/pom.xml | 12 ++ dsf-fhir/dsf-fhir-webservice-client/pom.xml | 7 +- ...ctFhirWebserviceClientJerseyWithRetry.java | 4 +- .../dsf/fhir/client/AbstractJerseyClient.java | 4 +- dsf-fhir/dsf-fhir-websocket-client/pom.xml | 1 + pom.xml | 61 +------ 43 files changed, 459 insertions(+), 297 deletions(-) rename dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/{logging/PluginMdcImpl.java => context/PluginContextImpl.java} (87%) rename dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/{logging/PluginMdcImpl.java => context/PluginContextImpl.java} (87%) rename dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/{logging/AbstractPluginMdc.java => context/AbstractPluginContext.java} (60%) rename dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/{logging/PluginMdc.java => context/PluginContext.java} (69%) diff --git a/dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml b/dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml index ac6384d02..c12afea0e 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v1-base/pom.xml @@ -59,6 +59,7 @@ jakarta.ws.rs-api jakarta.ws.rs + ${jakarta.ws.rs.version.v1} diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml b/dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml index e255b649b..c329060b0 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml @@ -45,18 +45,22 @@ org.glassfish.jersey.core jersey-client + ${jersey.version.v1} org.glassfish.jersey.inject jersey-hk2 + ${jersey.version.v1} org.glassfish.jersey.media jersey-media-json-jackson + ${jersey.version.v1} org.glassfish.jersey.connectors jersey-apache-connector + ${jersey.version.v1} commons-logging @@ -125,17 +129,17 @@ ca.uhn.hapi.fhir - hapi-fhir-structures-r4 + hapi-fhir-base ${hapi.fhir.version.v1} ca.uhn.hapi.fhir - org.hl7.fhir.utilities + hapi-fhir-converter ${hapi.fhir.version.v1} ca.uhn.hapi.fhir - org.hl7.fhir.r4 + hapi-fhir-structures-r4 ${hapi.fhir.version.v1} @@ -145,7 +149,7 @@ ca.uhn.hapi.fhir - hapi-fhir-converter + hapi-fhir-validation-resources-r4 ${hapi.fhir.version.v1} @@ -153,71 +157,120 @@ org.hl7.fhir.convertors ${hapi.fhir.version.v1} + + ca.uhn.hapi.fhir + org.hl7.fhir.r4 + ${hapi.fhir.version.v1} + ca.uhn.hapi.fhir org.hl7.fhir.r5 ${hapi.fhir.version.v1} + + ca.uhn.hapi.fhir + org.hl7.fhir.utilities + ${hapi.fhir.version.v1} + ca.uhn.hapi.fhir org.hl7.fhir.validation ${hapi.fhir.version.v1} - - + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + org.fhir ucum - com.github.ben-manes.caffeine - caffeine - 2.7.0 + org.glassfish.hk2.external + aopalliance-repackaged + 3.0.6 - org.checkerframework - checker-qual - 2.6.0 + org.glassfish.hk2 + hk2-api + 3.0.6 - com.google.errorprone - error_prone_annotations - 2.3.3 + org.glassfish.hk2 + hk2-locator + 3.0.6 - com.google.code.gson - gson + org.glassfish.hk2 + hk2-utils + 3.0.6 - de.hs-heilbronn.mi - crypto-utils - ${crypto-utils.version.v1} + org.glassfish.hk2 + osgi-resource-locator + 1.0.3 - ca.uhn.hapi.fhir - hapi-fhir-validation-resources-r4 + org.glassfish.jersey.connectors + jersey-apache-connector + ${jersey.version.v1} - ca.uhn.hapi.fhir - hapi-fhir-base - ${hapi.fhir.version.v1} + org.glassfish.jersey.core + jersey-client + ${jersey.version.v1} + + + org.glassfish.jersey.core + jersey-common + ${jersey.version.v1} + + + org.glassfish.jersey.ext + jersey-entity-filtering + ${jersey.version.v1} + + + org.glassfish.jersey.inject + jersey-hk2 + ${jersey.version.v1} + + + org.glassfish.jersey.media + jersey-media-json-jackson + ${jersey.version.v1} org.ow2.asm asm + + com.github.ben-manes.caffeine + caffeine + diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/logging/PluginMdcImpl.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/context/PluginContextImpl.java similarity index 87% rename from dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/logging/PluginMdcImpl.java rename to dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/context/PluginContextImpl.java index 90e7abaf3..24c778514 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/logging/PluginMdcImpl.java +++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/context/PluginContextImpl.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package dev.dsf.bpe.v1.logging; +package dev.dsf.bpe.v1.context; import java.util.Objects; import java.util.function.Function; @@ -26,11 +26,11 @@ import org.operaton.bpm.engine.delegate.DelegateExecution; import dev.dsf.bpe.api.Constants; -import dev.dsf.bpe.api.logging.AbstractPluginMdc; +import dev.dsf.bpe.api.context.AbstractPluginContext; import dev.dsf.bpe.v1.constants.CodeSystems.BpmnMessage; import dev.dsf.bpe.v1.variables.Variables; -public class PluginMdcImpl extends AbstractPluginMdc +public class PluginContextImpl extends AbstractPluginContext { private final String serverBaseUrl; private final Function variablesFactory; @@ -43,15 +43,17 @@ public class PluginMdcImpl extends AbstractPluginMdc * not null * @param jar * not null + * @param pluginClassLoader + * not null * @param serverBaseUrl * not null * @param variablesFactory * not null */ - public PluginMdcImpl(int apiVersion, String name, String version, String jar, String serverBaseUrl, - Function variablesFactory) + public PluginContextImpl(int apiVersion, String name, String version, String jar, ClassLoader pluginClassLoader, + String serverBaseUrl, Function variablesFactory) { - super(apiVersion, name, version, jar); + super(apiVersion, name, version, jar, pluginClassLoader); this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl"); this.variablesFactory = Objects.requireNonNull(variablesFactory, "variablesFactory"); diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/EndListener.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/EndListener.java index cd8286824..418d5b0d4 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/EndListener.java +++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/EndListener.java @@ -27,20 +27,20 @@ import org.slf4j.LoggerFactory; import dev.dsf.bpe.v1.constants.CodeSystems.BpmnMessage; -import dev.dsf.fhir.client.FhirWebserviceClient; +import dev.dsf.bpe.v1.service.FhirWebserviceClientProvider; public class EndListener extends AbstractListener implements ExecutionListener { private static final Logger logger = LoggerFactory.getLogger(EndListener.class); - private final FhirWebserviceClient webserviceClient; + private final FhirWebserviceClientProvider fhirWebserviceClientProvider; public EndListener(String serverBaseUrl, Function variablesFactory, - FhirWebserviceClient fhirWebserviceClient) + FhirWebserviceClientProvider fhirWebserviceClientProvider) { super(serverBaseUrl, variablesFactory); - this.webserviceClient = fhirWebserviceClient; + this.fhirWebserviceClientProvider = fhirWebserviceClientProvider; } @Override @@ -48,7 +48,7 @@ public void afterPropertiesSet() throws Exception { super.afterPropertiesSet(); - Objects.requireNonNull(webserviceClient, "webserviceClient"); + Objects.requireNonNull(fhirWebserviceClientProvider, "fhirWebserviceClientProvider"); } @Override @@ -89,7 +89,7 @@ private void updateAndHandleException(Task task) logger.debug("Updating Task {}, new status: {}", getLocalVersionlessAbsoluteUrl(task), task.getStatus().toCode()); - webserviceClient.withMinimalReturn().update(task); + fhirWebserviceClientProvider.getLocalWebserviceClient().withMinimalReturn().update(task); } catch (Exception e) { diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginImpl.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginImpl.java index 5f51e6e03..5fbf847b8 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginImpl.java +++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginImpl.java @@ -65,7 +65,7 @@ import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.parser.IParser; -import dev.dsf.bpe.api.logging.PluginMdc; +import dev.dsf.bpe.api.context.PluginContext; import dev.dsf.bpe.api.plugin.AbstractProcessPlugin; import dev.dsf.bpe.api.plugin.FhirResourceModifier; import dev.dsf.bpe.api.plugin.ProcessPlugin; @@ -78,7 +78,7 @@ import dev.dsf.bpe.v1.constants.CodeSystems.BpmnMessage; import dev.dsf.bpe.v1.constants.NamingSystems.OrganizationIdentifier; import dev.dsf.bpe.v1.constants.NamingSystems.TaskIdentifier; -import dev.dsf.bpe.v1.logging.PluginMdcImpl; +import dev.dsf.bpe.v1.context.PluginContextImpl; import dev.dsf.bpe.v1.variables.FhirResourceValues; import dev.dsf.bpe.v1.variables.VariablesImpl; @@ -89,7 +89,7 @@ public class ProcessPluginImpl extends AbstractProcessPlugin imple private final ProcessPluginDefinition processPluginDefinition; private final ProcessPluginApi processPluginApi; - private final PluginMdcImpl pluginMdc; + private final PluginContextImpl pluginContext; public ProcessPluginImpl(ProcessPluginDefinition processPluginDefinition, int processPluginApiVersion, boolean draft, Path jarFile, ClassLoader classLoader, ConfigurableEnvironment environment, @@ -103,14 +103,15 @@ public ProcessPluginImpl(ProcessPluginDefinition processPluginDefinition, int pr this.processPluginDefinition = processPluginDefinition; processPluginApi = apiApplicationContext.getBean(ProcessPluginApi.class); - pluginMdc = new PluginMdcImpl(processPluginApiVersion, processPluginDefinition.getName(), - processPluginDefinition.getVersion(), jarFile.toString(), serverBaseUrl, VariablesImpl::new); + pluginContext = new PluginContextImpl(processPluginApiVersion, processPluginDefinition.getName(), + processPluginDefinition.getVersion(), jarFile.toString(), classLoader, serverBaseUrl, + VariablesImpl::new); } @Override - public PluginMdc getPluginMdc() + public PluginContext getPluginContext() { - return pluginMdc; + return pluginContext; } @Override diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/spring/ApiServiceConfig.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/spring/ApiServiceConfig.java index b12b93666..e72907d0f 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/spring/ApiServiceConfig.java +++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/spring/ApiServiceConfig.java @@ -193,8 +193,7 @@ public ExecutionListener startListener() @Bean public ExecutionListener endListener() { - return new EndListener(dsfClientConfig.getLocalConfig().getBaseUrl(), VariablesImpl::new, - clientProvider().getLocalWebserviceClient()); + return new EndListener(dsfClientConfig.getLocalConfig().getBaseUrl(), VariablesImpl::new, clientProvider()); } @Bean diff --git a/dsf-bpe/dsf-bpe-process-api-v1-operaton/pom.xml b/dsf-bpe/dsf-bpe-process-api-v1-operaton/pom.xml index d578bdc92..a9fdfe244 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-operaton/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v1-operaton/pom.xml @@ -67,6 +67,7 @@ jakarta.ws.rs-api jakarta.ws.rs + ${jakarta.ws.rs.version.v1} diff --git a/dsf-bpe/dsf-bpe-process-api-v1/pom.xml b/dsf-bpe/dsf-bpe-process-api-v1/pom.xml index f47e76548..a71100676 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v1/pom.xml @@ -68,6 +68,7 @@ jakarta.ws.rs-api jakarta.ws.rs + ${jakarta.ws.rs.version.v1} @@ -96,6 +97,14 @@ net.sf.saxon Saxon-HE + + xpp3 + xpp3 + + + xpp3 + xpp3_xpath + diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml b/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml index 0c4b71054..6718c7892 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml @@ -45,18 +45,22 @@ org.glassfish.jersey.core jersey-client + ${jersey.version.v2} org.glassfish.jersey.inject jersey-hk2 + ${jersey.version.v2} org.glassfish.jersey.media jersey-media-json-jackson + ${jersey.version.v2} org.glassfish.jersey.connectors - jersey-apache-connector + jersey-apache5-connector + ${jersey.version.v2} commons-logging @@ -135,39 +139,29 @@ dev.dsf dsf-bpe-process-api-v2-impl - - de.hs-heilbronn.mi - crypto-utils - ${crypto-utils.version.v2} - ca.uhn.hapi.fhir - hapi-fhir-structures-r4 + hapi-fhir-base ${hapi.fhir.version.v2} ca.uhn.hapi.fhir - org.hl7.fhir.utilities - ${hapi.fhir.org.hl7.version.v2} - - - com.ibm.icu - icu4j - 77.1 + hapi-fhir-caching-api + ${hapi.fhir.version.v2} ca.uhn.hapi.fhir - org.hl7.fhir.r4 - ${hapi.fhir.org.hl7.version.v2} + hapi-fhir-caching-api + ${hapi.fhir.version.v2} ca.uhn.hapi.fhir - hapi-fhir-caching-api + hapi-fhir-caching-caffeine ${hapi.fhir.version.v2} ca.uhn.hapi.fhir - hapi-fhir-validation + hapi-fhir-client ${hapi.fhir.version.v2} @@ -177,118 +171,119 @@ ca.uhn.hapi.fhir - org.hl7.fhir.convertors - ${hapi.fhir.org.hl7.version.v2} + hapi-fhir-structures-r4 + ${hapi.fhir.version.v2} ca.uhn.hapi.fhir - org.hl7.fhir.validation - ${hapi.fhir.org.hl7.version.v2} + hapi-fhir-structures-r5 + ${hapi.fhir.version.v2} ca.uhn.hapi.fhir - org.hl7.fhir.r5 - ${hapi.fhir.org.hl7.version.v2} - - - com.nimbusds - nimbus-jose-jwt - 10.0.2 - - - net.sourceforge.plantuml - plantuml-mit - 1.2023.9 - - - jakarta-regexp - jakarta-regexp - 1.4 - - - org.apache.commons - commons-compress - - - org.tukaani - xz + hapi-fhir-validation + ${hapi.fhir.version.v2} - org.fhir - ucum + ca.uhn.hapi.fhir + hapi-fhir-validation-resources-r4 + ${hapi.fhir.version.v2} - - com.google.errorprone - error_prone_annotations - 2.41.0 + ca.uhn.hapi.fhir + org.hl7.fhir.convertors + ${hapi.fhir.org.hl7.version.v2} ca.uhn.hapi.fhir - hapi-fhir-structures-r5 - ${hapi.fhir.version.v2} + org.hl7.fhir.model + ${hapi.fhir.org.hl7.version.v2} ca.uhn.hapi.fhir - hapi-fhir-client - ${hapi.fhir.version.v2} + org.hl7.fhir.r4 + ${hapi.fhir.org.hl7.version.v2} ca.uhn.hapi.fhir - hapi-fhir-validation-resources-r4 - ${hapi.fhir.version.v2} + org.hl7.fhir.r5 + ${hapi.fhir.org.hl7.version.v2} ca.uhn.hapi.fhir - hapi-fhir-base - ${hapi.fhir.version.v2} + org.hl7.fhir.support + ${hapi.fhir.org.hl7.version.v2} ca.uhn.hapi.fhir - hapi-fhir-caching-caffeine - ${hapi.fhir.version.v2} + org.hl7.fhir.utilities + ${hapi.fhir.org.hl7.version.v2} ca.uhn.hapi.fhir - hapi-fhir-caching-api - ${hapi.fhir.version.v2} + org.hl7.fhir.validation + ${hapi.fhir.org.hl7.version.v2} - com.github.ben-manes.caffeine - caffeine - 3.1.8 + com.fasterxml.woodstox + woodstox-core + 7.1.0 - org.checkerframework - checker-qual + com.nimbusds + nimbus-jose-jwt - com.google.j2objc - j2objc-annotations - 3.1 + de.hs-heilbronn.mi + crypto-utils + ${crypto-utils.version.v2} io.opentelemetry opentelemetry-api 1.44.1 - - io.opentelemetry - opentelemetry-context - 1.44.1 - io.opentelemetry.instrumentation opentelemetry-instrumentation-annotations 2.10.0 + + org.apache.commons + commons-compress + + + org.apache.httpcomponents + httpclient + 4.5.14 + + + org.apache.httpcomponents + httpcore + 4.4.16 + + + org.apache.santuario + xmlsec + 4.0.4 + org.apache.tika tika-core + + org.codehaus.woodstox + stax2-api + 4.2.2 + + + org.fhir + ucum + + + org.tukaani + xz + diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/AbstractDsfClientJerseyWithRetry.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/AbstractDsfClientJerseyWithRetry.java index 6f10ecc35..938e80cba 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/AbstractDsfClientJerseyWithRetry.java +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/AbstractDsfClientJerseyWithRetry.java @@ -19,8 +19,8 @@ import java.time.Duration; import java.util.function.Supplier; -import org.apache.http.conn.ConnectTimeoutException; -import org.apache.http.conn.HttpHostConnectException; +import org.apache.hc.client5.http.ConnectTimeoutException; +import org.apache.hc.client5.http.HttpHostConnectException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/DsfClientJersey.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/DsfClientJersey.java index db9cc9d4b..e678e05e2 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/DsfClientJersey.java +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/DsfClientJersey.java @@ -47,7 +47,7 @@ import org.apache.commons.lang3.StringUtils; import org.glassfish.jersey.SslConfigurator; -import org.glassfish.jersey.apache.connector.ApacheConnectorProvider; +import org.glassfish.jersey.apache5.connector.Apache5ConnectorProvider; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature; @@ -227,7 +227,7 @@ else if (trustStore != null && keyStore != null && keyStorePassword != null) builder.sslContext(sslContext); ClientConfig config = new ClientConfig(); - config.connectorProvider(new ApacheConnectorProvider()); + config.connectorProvider(new Apache5ConnectorProvider()); config.property(ClientProperties.PROXY_URI, proxySchemeHostPort); config.property(ClientProperties.PROXY_USERNAME, proxyUserName); config.property(ClientProperties.PROXY_PASSWORD, proxyPassword == null ? null : String.valueOf(proxyPassword)); diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/logging/PluginMdcImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/context/PluginContextImpl.java similarity index 87% rename from dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/logging/PluginMdcImpl.java rename to dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/context/PluginContextImpl.java index 6c537248d..400942b28 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/logging/PluginMdcImpl.java +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/context/PluginContextImpl.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package dev.dsf.bpe.v2.logging; +package dev.dsf.bpe.v2.context; import java.util.Objects; import java.util.function.Function; @@ -26,11 +26,11 @@ import org.operaton.bpm.engine.delegate.DelegateExecution; import dev.dsf.bpe.api.Constants; -import dev.dsf.bpe.api.logging.AbstractPluginMdc; +import dev.dsf.bpe.api.context.AbstractPluginContext; import dev.dsf.bpe.v2.constants.CodeSystems.BpmnMessage; import dev.dsf.bpe.v2.variables.Variables; -public class PluginMdcImpl extends AbstractPluginMdc +public class PluginContextImpl extends AbstractPluginContext { private final String serverBaseUrl; private final Function variablesFactory; @@ -43,15 +43,17 @@ public class PluginMdcImpl extends AbstractPluginMdc * not null * @param jar * not null + * @param pluginClassLoader + * not null * @param serverBaseUrl * not null * @param variablesFactory * not null */ - public PluginMdcImpl(int apiVersion, String name, String version, String jar, String serverBaseUrl, - Function variablesFactory) + public PluginContextImpl(int apiVersion, String name, String version, String jar, ClassLoader pluginClassLoader, + String serverBaseUrl, Function variablesFactory) { - super(apiVersion, name, version, jar); + super(apiVersion, name, version, jar, pluginClassLoader); this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl"); this.variablesFactory = Objects.requireNonNull(variablesFactory, "variablesFactory"); diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/EndListener.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/EndListener.java index 85c134b34..87039edc7 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/EndListener.java +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/EndListener.java @@ -26,21 +26,21 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import dev.dsf.bpe.v2.client.dsf.DsfClient; import dev.dsf.bpe.v2.constants.CodeSystems.BpmnMessage; +import dev.dsf.bpe.v2.service.DsfClientProvider; public class EndListener extends AbstractListener implements ExecutionListener { private static final Logger logger = LoggerFactory.getLogger(EndListener.class); - private final DsfClient webserviceClient; + private final DsfClientProvider dsfClientProvider; public EndListener(String serverBaseUrl, Function variablesFactory, - DsfClient fhirWebserviceClient) + DsfClientProvider dsfClientProvider) { super(serverBaseUrl, variablesFactory); - this.webserviceClient = fhirWebserviceClient; + this.dsfClientProvider = dsfClientProvider; } @Override @@ -48,7 +48,7 @@ public void afterPropertiesSet() throws Exception { super.afterPropertiesSet(); - Objects.requireNonNull(webserviceClient, "webserviceClient"); + Objects.requireNonNull(dsfClientProvider, "dsfClientProvider"); } @Override @@ -89,7 +89,7 @@ private void updateAndHandleException(Task task) logger.debug("Updating Task {}, new status: {}", getLocalVersionlessAbsoluteUrl(task), task.getStatus().toCode()); - webserviceClient.withMinimalReturn().update(task); + dsfClientProvider.getLocal().withMinimalReturn().update(task); } catch (Exception e) { diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/plugin/ProcessPluginImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/plugin/ProcessPluginImpl.java index 364e22367..494f878e0 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/plugin/ProcessPluginImpl.java +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/plugin/ProcessPluginImpl.java @@ -75,7 +75,7 @@ import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.parser.IParser; -import dev.dsf.bpe.api.logging.PluginMdc; +import dev.dsf.bpe.api.context.PluginContext; import dev.dsf.bpe.api.plugin.AbstractProcessPlugin; import dev.dsf.bpe.api.plugin.FhirResourceModifier; import dev.dsf.bpe.api.plugin.FhirResourceModifiers; @@ -103,8 +103,8 @@ import dev.dsf.bpe.v2.constants.CodeSystems.BpmnMessage; import dev.dsf.bpe.v2.constants.NamingSystems.OrganizationIdentifier; import dev.dsf.bpe.v2.constants.NamingSystems.TaskIdentifier; +import dev.dsf.bpe.v2.context.PluginContextImpl; import dev.dsf.bpe.v2.fhir.FhirResourceModifierDelegate; -import dev.dsf.bpe.v2.logging.PluginMdcImpl; import dev.dsf.bpe.v2.variables.FhirResourceValues; import dev.dsf.bpe.v2.variables.Variables; import dev.dsf.bpe.v2.variables.VariablesImpl; @@ -116,7 +116,7 @@ public class ProcessPluginImpl extends AbstractProcessPlugin i private final ProcessPluginDefinition processPluginDefinition; private final Function variablesFactory; - private final PluginMdc pluginMdc; + private final PluginContext pluginContext; private final AtomicReference processPluginApi = new AtomicReference<>(); private final AtomicReference fhirContext = new AtomicReference<>(); @@ -134,9 +134,9 @@ public ProcessPluginImpl(ProcessPluginDefinition processPluginDefinition, int pr this.processPluginDefinition = processPluginDefinition; variablesFactory = delegateExecution -> new VariablesImpl(delegateExecution, getObjectMapper(), - getProcessPluginApi().getDsfClientProvider().getLocal()); - pluginMdc = new PluginMdcImpl(processPluginApiVersion, processPluginDefinition.getName(), - processPluginDefinition.getVersion(), jarFile.toString(), serverBaseUrl, variablesFactory); + getProcessPluginApi().getDsfClientProvider()); + pluginContext = new PluginContextImpl(processPluginApiVersion, processPluginDefinition.getName(), + processPluginDefinition.getVersion(), jarFile.toString(), classLoader, serverBaseUrl, variablesFactory); } @Override @@ -185,9 +185,9 @@ private ObjectMapper getObjectMapper() } @Override - public PluginMdc getPluginMdc() + public PluginContext getPluginContext() { - return pluginMdc; + return pluginContext; } @Override diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/StartTaskUpdaterImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/StartTaskUpdaterImpl.java index 70f6523b1..3672cfebb 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/StartTaskUpdaterImpl.java +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/StartTaskUpdaterImpl.java @@ -27,18 +27,17 @@ import org.hl7.fhir.r4.model.Task.TaskOutputComponent; import org.hl7.fhir.r4.model.Type; -import dev.dsf.bpe.v2.client.dsf.DsfClient; - public class StartTaskUpdaterImpl implements StartTaskUpdater { - private final DsfClient client; + private final DsfClientProvider dsfClientProvider; private final Supplier getStartTask; private final Consumer updateTask; - public StartTaskUpdaterImpl(DsfClient client, Supplier getStartTask, Consumer updateTask) + public StartTaskUpdaterImpl(DsfClientProvider dsfClientProvider, Supplier getStartTask, + Consumer updateTask) { - this.client = Objects.requireNonNull(client, "client"); + this.dsfClientProvider = Objects.requireNonNull(dsfClientProvider, "dsfClientProvider"); this.getStartTask = Objects.requireNonNull(getStartTask, "getStartTask"); this.updateTask = Objects.requireNonNull(updateTask, "updateTask"); @@ -50,7 +49,7 @@ public void addOutput(Coding outputType, Type outputValue) Task task = getStartTask.get(); task.addOutput().setValue(outputValue).getType().addCoding(outputType); - Task updated = client.update(task); + Task updated = dsfClientProvider.getLocal().update(task); updateTask.accept(updated); } @@ -90,7 +89,7 @@ public void modifyOutput(Coding outputType, Type outputValue) + (outputType.hasVersion() ? " (version: " + outputType.getVersion() + ") not found" : ""))) .setValue(outputValue); - Task updated = client.update(task); + Task updated = dsfClientProvider.getLocal().update(task); updateTask.accept(updated); } @@ -110,7 +109,7 @@ public void removeOutput(Coding outputType) task.setOutput(filtered); - Task updated = client.update(task); + Task updated = dsfClientProvider.getLocal().update(task); updateTask.accept(updated); } diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/spring/ApiServiceConfig.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/spring/ApiServiceConfig.java index 66e76bad0..113633a14 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/spring/ApiServiceConfig.java +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/spring/ApiServiceConfig.java @@ -286,7 +286,7 @@ public JsonHolderSerializer jsonVariableSerializer() @Bean public Function listenerVariablesFactory() { - return execution -> new VariablesImpl(execution, objectMapper(), dsfClientProvider().getLocal()); + return execution -> new VariablesImpl(execution, objectMapper(), dsfClientProvider()); } @Bean @@ -299,7 +299,7 @@ public ExecutionListener startListener() public ExecutionListener endListener() { return new EndListener(dsfClientConfig.getLocalConfig().getBaseUrl(), listenerVariablesFactory(), - dsfClientProvider().getLocal()); + dsfClientProvider()); } @Bean diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/VariablesImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/VariablesImpl.java index 39b56d71c..65278619f 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/VariablesImpl.java +++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/VariablesImpl.java @@ -38,9 +38,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; import dev.dsf.bpe.api.Constants; -import dev.dsf.bpe.v2.client.dsf.DsfClient; import dev.dsf.bpe.v2.constants.BpmnExecutionVariables; import dev.dsf.bpe.v2.listener.ListenerVariables; +import dev.dsf.bpe.v2.service.DsfClientProvider; import dev.dsf.bpe.v2.service.StartTaskUpdater; import dev.dsf.bpe.v2.service.StartTaskUpdaterImpl; import dev.dsf.bpe.v2.variables.FhirResourceValues.FhirResourceValue; @@ -94,15 +94,15 @@ public int hashCode() * not null * @param objectMapper * not null - * @param client + * @param dsfClientProvider * not null */ - public VariablesImpl(DelegateExecution execution, ObjectMapper objectMapper, DsfClient client) + public VariablesImpl(DelegateExecution execution, ObjectMapper objectMapper, DsfClientProvider dsfClientProvider) { this.execution = Objects.requireNonNull(execution, "execution"); this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper"); - startTaskUpdater = new StartTaskUpdaterImpl(client, this::getStartTask, this::updateTask); + startTaskUpdater = new StartTaskUpdaterImpl(dsfClientProvider, this::getStartTask, this::updateTask); } private JsonHolder toJsonHolder(Object json) diff --git a/dsf-bpe/dsf-bpe-process-api-v2/pom.xml b/dsf-bpe/dsf-bpe-process-api-v2/pom.xml index 15baf99c6..bc4a8dfff 100644 --- a/dsf-bpe/dsf-bpe-process-api-v2/pom.xml +++ b/dsf-bpe/dsf-bpe-process-api-v2/pom.xml @@ -73,6 +73,18 @@ org.xerial sqlite-jdbc + + net.sourceforge.plantuml + plantuml-mit + + + org.commonmark + commonmark + + + org.commonmark + commonmark-ext-gfm-tables + @@ -102,6 +114,7 @@ jakarta.ws.rs-api jakarta.ws.rs + ${jakarta.ws.rs.version.v2} \ No newline at end of file diff --git a/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/logging/AbstractPluginMdc.java b/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/context/AbstractPluginContext.java similarity index 60% rename from dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/logging/AbstractPluginMdc.java rename to dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/context/AbstractPluginContext.java index eb3672d5b..e6a846901 100644 --- a/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/logging/AbstractPluginMdc.java +++ b/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/context/AbstractPluginContext.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package dev.dsf.bpe.api.logging; +package dev.dsf.bpe.api.context; import java.util.Objects; import java.util.function.Consumer; @@ -23,7 +23,7 @@ import org.operaton.bpm.engine.delegate.DelegateTask; import org.slf4j.MDC; -public abstract class AbstractPluginMdc implements PluginMdc +public abstract class AbstractPluginContext implements PluginContext { public static final String DSF_PLUGIN_API = "dsf.plugin.api"; public static final String DSF_PLUGIN_JAR = "dsf.plugin.jar"; @@ -42,6 +42,7 @@ public abstract class AbstractPluginMdc implements PluginMdc private final String jar; private final String name; private final String version; + private final ClassLoader pluginClassLoader; /** * @param apiVersion @@ -51,13 +52,16 @@ public abstract class AbstractPluginMdc implements PluginMdc * not null * @param jar * not null + * @param pluginClassLoader + * not null */ - public AbstractPluginMdc(int apiVersion, String name, String version, String jar) + public AbstractPluginContext(int apiVersion, String name, String version, String jar, ClassLoader pluginClassLoader) { this.apiVersion = apiVersion; this.name = Objects.requireNonNull(name, "name"); this.version = Objects.requireNonNull(version, "version"); this.jar = Objects.requireNonNull(jar, "jar"); + this.pluginClassLoader = Objects.requireNonNull(pluginClassLoader, "pluginClassLoader"); } private void putPluginMdc() @@ -115,44 +119,81 @@ public static final record ProcessValues(String processUrl, String startTaskUrl, protected abstract ProcessValues getProcessValues(DelegateExecution delegateExecution); @Override - public void executeWithProcessMdc(DelegateTask delegateTask, Consumer executable) + public void executeWithProcessContext(DelegateTask delegateTask, Consumer executable) { - putPluginMdc(); - putProcessMdc(delegateTask.getExecution()); - - try - { - executable.accept(delegateTask); - } - finally - { - removePluginMdc(); - removeProcessMdc(); - } + withPluginClassLoader(withProcessMdc(delegateTask, executable)); } @Override - public void executeWithProcessMdc(DelegateExecution delegateExecution, + public void executeWithProcessContext(DelegateExecution delegateExecution, ConsumerWithException executable) throws Exception { - putPluginMdc(); - putProcessMdc(delegateExecution); + withPluginClassLoader(withProcessMdc(delegateExecution, executable)); + } - try + @Override + public void executeWithPluginContext(Runnable runnable) + { + withPluginClassLoader(withPluginMdc(runnable)); + } + + @Override + public boolean executeWithPluginContext(Supplier supplier) + { + return withPluginClassLoader(withPluginMdc(supplier)); + } + + @FunctionalInterface + private interface RunnableWithException + { + void run() throws Exception; + } + + private Supplier withProcessMdc(DelegateTask delegateTask, Consumer executable) + { + return () -> { - executable.accept(delegateExecution); - } - finally + putPluginMdc(); + putProcessMdc(delegateTask.getExecution()); + + try + { + executable.accept(delegateTask); + } + finally + { + removeProcessMdc(); + removePluginMdc(); + } + + return null; + }; + } + + private RunnableWithException withProcessMdc(DelegateExecution delegateExecution, + ConsumerWithException executable) throws Exception + { + return () -> { - removePluginMdc(); - removeProcessMdc(); - } + putPluginMdc(); + putProcessMdc(delegateExecution); + + try + { + executable.accept(delegateExecution); + } + finally + { + removeProcessMdc(); + removePluginMdc(); + } + }; } - @Override - public void executeWithPluginMdc(Runnable runnable) + private void withPluginClassLoader(RunnableWithException runnable) throws Exception { - putPluginMdc(); + ClassLoader old = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader(pluginClassLoader); try { @@ -160,14 +201,50 @@ public void executeWithPluginMdc(Runnable runnable) } finally { - removePluginMdc(); + Thread.currentThread().setContextClassLoader(old); } } - @Override - public boolean executeWithPluginMdc(Supplier supplier) + private Supplier withPluginMdc(Runnable runnable) + { + return () -> + { + putPluginMdc(); + + try + { + runnable.run(); + + return null; + } + finally + { + removePluginMdc(); + } + }; + } + + private Supplier withPluginMdc(Supplier supplier) + { + return () -> + { + putPluginMdc(); + + try + { + return supplier.get(); + } + finally + { + removePluginMdc(); + } + }; + } + + private T withPluginClassLoader(Supplier supplier) { - putPluginMdc(); + ClassLoader old = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader(pluginClassLoader); try { @@ -175,7 +252,7 @@ public boolean executeWithPluginMdc(Supplier supplier) } finally { - removePluginMdc(); + Thread.currentThread().setContextClassLoader(old); } } } diff --git a/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/logging/PluginMdc.java b/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/context/PluginContext.java similarity index 69% rename from dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/logging/PluginMdc.java rename to dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/context/PluginContext.java index 5b1796733..e1c2012e3 100644 --- a/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/logging/PluginMdc.java +++ b/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/context/PluginContext.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package dev.dsf.bpe.api.logging; +package dev.dsf.bpe.api.context; import java.util.function.Consumer; import java.util.function.Supplier; @@ -21,7 +21,7 @@ import org.operaton.bpm.engine.delegate.DelegateExecution; import org.operaton.bpm.engine.delegate.DelegateTask; -public interface PluginMdc +public interface PluginContext { @FunctionalInterface public interface ConsumerWithException @@ -29,12 +29,12 @@ public interface ConsumerWithException void accept(T t) throws Exception; } - void executeWithProcessMdc(DelegateTask delegateTask, Consumer executable); + void executeWithProcessContext(DelegateTask delegateTask, Consumer executable); - void executeWithProcessMdc(DelegateExecution delegateExecution, ConsumerWithException executable) - throws Exception; + void executeWithProcessContext(DelegateExecution delegateExecution, + ConsumerWithException executable) throws Exception; - void executeWithPluginMdc(Runnable runnable); + void executeWithPluginContext(Runnable runnable); - boolean executeWithPluginMdc(Supplier supplier); + boolean executeWithPluginContext(Supplier supplier); } \ No newline at end of file diff --git a/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/plugin/ProcessPlugin.java b/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/plugin/ProcessPlugin.java index 6ebd0ac85..9a28db3af 100644 --- a/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/plugin/ProcessPlugin.java +++ b/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/plugin/ProcessPlugin.java @@ -29,7 +29,7 @@ import org.operaton.bpm.engine.variable.value.PrimitiveValue; import org.springframework.context.ApplicationContext; -import dev.dsf.bpe.api.logging.PluginMdc; +import dev.dsf.bpe.api.context.PluginContext; public interface ProcessPlugin { @@ -47,7 +47,7 @@ public interface ProcessPlugin ApplicationContext getApplicationContext(); - PluginMdc getPluginMdc(); + PluginContext getPluginContext(); @SuppressWarnings("rawtypes") Stream getTypedValueSerializers(); diff --git a/dsf-bpe/dsf-bpe-server/pom.xml b/dsf-bpe/dsf-bpe-server/pom.xml index 0dde1acd7..83fdec40d 100755 --- a/dsf-bpe/dsf-bpe-server/pom.xml +++ b/dsf-bpe/dsf-bpe-server/pom.xml @@ -90,6 +90,7 @@ jakarta.ws.rs jakarta.ws.rs-api + ${jakarta.ws.rs.version} org.glassfish.jaxb @@ -124,7 +125,8 @@ org.glassfish.jersey.connectors - jersey-apache-connector + jersey-apache5-connector + ${jersey.version} commons-logging @@ -136,22 +138,27 @@ org.glassfish.jersey.core jersey-server + ${jersey.version} org.glassfish.jersey.inject jersey-hk2 + ${jersey.version} org.glassfish.jersey.media jersey-media-json-jackson + ${jersey.version} org.glassfish.jersey.media jersey-media-jaxb + ${jersey.version} org.glassfish.jersey.containers jersey-container-servlet + ${jersey.version} diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/AbstractWebserviceClientJerseyWithRetry.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/AbstractWebserviceClientJerseyWithRetry.java index 6ae3bff6a..28eafe155 100644 --- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/AbstractWebserviceClientJerseyWithRetry.java +++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/AbstractWebserviceClientJerseyWithRetry.java @@ -19,8 +19,8 @@ import java.time.Duration; import java.util.function.Supplier; -import org.apache.http.conn.ConnectTimeoutException; -import org.apache.http.conn.HttpHostConnectException; +import org.apache.hc.client5.http.ConnectTimeoutException; +import org.apache.hc.client5.http.HttpHostConnectException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/WebserviceClientJersey.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/WebserviceClientJersey.java index 99b102af4..f9c531420 100644 --- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/WebserviceClientJersey.java +++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/WebserviceClientJersey.java @@ -27,7 +27,7 @@ import java.util.stream.Collectors; import org.glassfish.jersey.SslConfigurator; -import org.glassfish.jersey.apache.connector.ApacheConnectorProvider; +import org.glassfish.jersey.apache5.connector.Apache5ConnectorProvider; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.logging.LoggingFeature; @@ -85,7 +85,7 @@ public WebserviceClientJersey(String baseUrl, KeyStore trustStore, KeyStore keyS .connectTimeout(connectTimeout.toMillis(), TimeUnit.MILLISECONDS); ClientConfig config = new ClientConfig(); - config.connectorProvider(new ApacheConnectorProvider()); + config.connectorProvider(new Apache5ConnectorProvider()); config.property(ClientProperties.PROXY_URI, proxySchemeHostPort); config.property(ClientProperties.PROXY_USERNAME, proxyUserName); config.property(ClientProperties.PROXY_PASSWORD, proxyPassword == null ? null : String.valueOf(proxyPassword)); diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/fhir/FhirConnectionTestClientJersey.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/fhir/FhirConnectionTestClientJersey.java index 6fc28fdd3..2d210c906 100644 --- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/fhir/FhirConnectionTestClientJersey.java +++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/fhir/FhirConnectionTestClientJersey.java @@ -22,7 +22,7 @@ import java.util.stream.Collectors; import org.glassfish.jersey.SslConfigurator; -import org.glassfish.jersey.apache.connector.ApacheConnectorProvider; +import org.glassfish.jersey.apache5.connector.Apache5ConnectorProvider; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature; @@ -88,7 +88,7 @@ public FhirConnectionTestClientJersey(FhirClientConfig fhirClientConfig, ProxyCo .register((ClientRequestFilter) r -> r.getHeaders().add(HttpHeaders.USER_AGENT, userAgentValue)); ClientConfig config = new ClientConfig(); - config.connectorProvider(new ApacheConnectorProvider()); + config.connectorProvider(new Apache5ConnectorProvider()); if (proxyConfig.isEnabled(fhirClientConfig.baseUrl())) { config.property(ClientProperties.PROXY_URI, proxyConfig.getUrl()); diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/engine/DelegateProviderImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/engine/DelegateProviderImpl.java index c669195c9..bdc262ae5 100644 --- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/engine/DelegateProviderImpl.java +++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/engine/DelegateProviderImpl.java @@ -155,7 +155,7 @@ private JavaDelegate getJavaDelegate(ProcessIdAndVersion processIdAndVersion, return getPlugin(processIdAndVersion).map(plugin -> { JavaDelegate delegate = getDelegate.apply(plugin); - return (JavaDelegate) e -> plugin.getPluginMdc().executeWithProcessMdc(e, delegate::execute); + return (JavaDelegate) e -> plugin.getPluginContext().executeWithProcessContext(e, delegate::execute); }).orElseGet(() -> e -> stopProcess(processIdAndVersion, e)); } @@ -167,7 +167,7 @@ public ExecutionListener getExecutionListener(ProcessIdAndVersion processIdAndVe return getPlugin(processIdAndVersion).map(plugin -> { ExecutionListener delegate = plugin.getExecutionListener(className, fieldDeclarations, variableScope); - return (ExecutionListener) e -> plugin.getPluginMdc().executeWithProcessMdc(e, delegate::notify); + return (ExecutionListener) e -> plugin.getPluginContext().executeWithProcessContext(e, delegate::notify); }).orElseGet(() -> e -> stopProcess(processIdAndVersion, e)); } @@ -179,7 +179,7 @@ public TaskListener getTaskListener(ProcessIdAndVersion processIdAndVersion, Str return getPlugin(processIdAndVersion). map(plugin -> { TaskListener delegate = plugin.getTaskListener(className, fieldDeclarations, variableScope); - return (TaskListener) e -> plugin.getPluginMdc().executeWithProcessMdc(e, delegate::notify); + return (TaskListener) e -> plugin.getPluginContext().executeWithProcessContext(e, delegate::notify); }).orElseGet(() -> e -> stopProcess(processIdAndVersion, e.getExecution())); } diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/listener/DefaultBpmnParseListener.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/listener/DefaultBpmnParseListener.java index a8cd509da..36b26575c 100755 --- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/listener/DefaultBpmnParseListener.java +++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/listener/DefaultBpmnParseListener.java @@ -150,7 +150,7 @@ public ExecutionListener withMdc(ExecutionListener delegate) ProcessIdAndVersion processKeyAndVersion = new ProcessIdAndVersion(e.getProcessDefinition().getKey(), e.getProcessDefinition().getVersionTag()); - getPlugin(processKeyAndVersion).getPluginMdc().executeWithProcessMdc(execution, delegate::notify); + getPlugin(processKeyAndVersion).getPluginContext().executeWithProcessContext(execution, delegate::notify); }; } } diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginManagerImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginManagerImpl.java index ebf7cb61c..2c67ac65b 100644 --- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginManagerImpl.java +++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginManagerImpl.java @@ -118,7 +118,7 @@ public void loadAndDeployPlugins() .forEach(name -> Configurator.setLevel(name, Level.DEBUG)); List plugins = removeDuplicates( - loadedPlugins.stream().filter(p -> p.getPluginMdc().executeWithPluginMdc( + loadedPlugins.stream().filter(p -> p.getPluginContext().executeWithPluginContext( () -> p.initializeAndValidateResources(localOrganizationIdentifierValue.orElse(null))))); if (plugins.isEmpty()) @@ -224,7 +224,7 @@ private void onProcessesDeployed(List changes, List

EnumSet.of(ProcessState.ACTIVE, ProcessState.DRAFT).contains(c.getNewProcessState())) .map(ProcessStateChangeOutcome::getProcessKeyAndVersion).collect(Collectors.toSet()); - plugins.stream().forEach(p -> p.getPluginMdc().executeWithPluginMdc( + plugins.stream().forEach(p -> p.getPluginContext().executeWithPluginContext( () -> p.getProcessPluginDeploymentListener().onProcessesDeployed(activeProcesses))); } diff --git a/dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v1/allowed-bpe-classes.list b/dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v1/allowed-bpe-classes.list index 7424a123d..1e09ee1ee 100644 --- a/dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v1/allowed-bpe-classes.list +++ b/dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v1/allowed-bpe-classes.list @@ -14,15 +14,15 @@ # limitations under the License. # -com.fasterxml.jackson.annotation -com.fasterxml.jackson.core -com.fasterxml.jackson.databind +com.fasterxml.jackson com.google.common dev.dsf.bpe.api -jakarta.ws.rs +jakarta.activation +jakarta.inject org.apache.commons.codec org.apache.commons.io org.apache.commons.lang3 +org.apache.commons.logging org.apache.commons.text org.apache.http org.bouncycastle diff --git a/dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v2/allowed-bpe-classes.list b/dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v2/allowed-bpe-classes.list index c60656fbb..b3616eafb 100644 --- a/dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v2/allowed-bpe-classes.list +++ b/dsf-bpe/dsf-bpe-server/src/main/resources/bpe/api/v2/allowed-bpe-classes.list @@ -14,19 +14,19 @@ # limitations under the License. # -com.fasterxml.jackson.annotation -com.fasterxml.jackson.core -com.fasterxml.jackson.databind -com.fasterxml.jackson.datatype +com.fasterxml.jackson com.google.common com.ctc.wstx.stax.WstxInputFactory dev.dsf.bpe.api +jakarta.activation jakarta.annotation.Nonnull jakarta.annotation.Nullable +jakarta.inject jakarta.ws.rs org.apache.commons.codec org.apache.commons.io org.apache.commons.lang3 +org.apache.commons.logging org.apache.commons.text org.apache.http org.bouncycastle diff --git a/dsf-common/dsf-common-auth/pom.xml b/dsf-common/dsf-common-auth/pom.xml index 7f474beee..d7eb7fcfd 100644 --- a/dsf-common/dsf-common-auth/pom.xml +++ b/dsf-common/dsf-common-auth/pom.xml @@ -65,10 +65,12 @@ jakarta.ws.rs jakarta.ws.rs-api + ${jakarta.ws.rs.version} jakarta.annotation jakarta.annotation-api + ${jakarta.annotation.api.version} diff --git a/dsf-common/dsf-common-oidc/pom.xml b/dsf-common/dsf-common-oidc/pom.xml index b42aa9a2a..4a4a14ab3 100644 --- a/dsf-common/dsf-common-oidc/pom.xml +++ b/dsf-common/dsf-common-oidc/pom.xml @@ -43,10 +43,12 @@ org.glassfish.jersey.core jersey-client + ${jersey.version} org.glassfish.jersey.connectors - jersey-apache-connector + jersey-apache5-connector + ${jersey.version} commons-logging @@ -57,6 +59,7 @@ org.glassfish.jersey.media jersey-media-json-jackson + ${jersey.version} \ No newline at end of file diff --git a/dsf-common/dsf-common-oidc/src/main/java/dev/dsf/common/oidc/BaseOidcClientJersey.java b/dsf-common/dsf-common-oidc/src/main/java/dev/dsf/common/oidc/BaseOidcClientJersey.java index 81799bc30..05a199254 100644 --- a/dsf-common/dsf-common-oidc/src/main/java/dev/dsf/common/oidc/BaseOidcClientJersey.java +++ b/dsf-common/dsf-common-oidc/src/main/java/dev/dsf/common/oidc/BaseOidcClientJersey.java @@ -24,7 +24,7 @@ import javax.net.ssl.SSLContext; import org.glassfish.jersey.SslConfigurator; -import org.glassfish.jersey.apache.connector.ApacheConnectorProvider; +import org.glassfish.jersey.apache5.connector.Apache5ConnectorProvider; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.logging.LoggingFeature; @@ -104,7 +104,7 @@ else if (trustStore != null && keyStore != null && keyStorePassword != null) builder = builder.sslContext(sslContext); ClientConfig config = new ClientConfig(); - config.connectorProvider(new ApacheConnectorProvider()); + config.connectorProvider(new Apache5ConnectorProvider()); config.property(ClientProperties.PROXY_URI, proxySchemeHostPort); config.property(ClientProperties.PROXY_USERNAME, proxyUserName); config.property(ClientProperties.PROXY_PASSWORD, proxyPassword == null ? null : String.valueOf(proxyPassword)); diff --git a/dsf-common/dsf-common-status/pom.xml b/dsf-common/dsf-common-status/pom.xml index c4bbcd592..74ac17bae 100644 --- a/dsf-common/dsf-common-status/pom.xml +++ b/dsf-common/dsf-common-status/pom.xml @@ -40,10 +40,12 @@ jakarta.ws.rs jakarta.ws.rs-api + ${jakarta.ws.rs.version} jakarta.annotation jakarta.annotation-api + ${jakarta.annotation.api.version} org.springframework diff --git a/dsf-common/dsf-common-ui/pom.xml b/dsf-common/dsf-common-ui/pom.xml index 3adb67d79..73bf5a583 100644 --- a/dsf-common/dsf-common-ui/pom.xml +++ b/dsf-common/dsf-common-ui/pom.xml @@ -36,6 +36,7 @@ jakarta.ws.rs jakarta.ws.rs-api + ${jakarta.ws.rs.version} commons-codec diff --git a/dsf-fhir/dsf-fhir-rest-adapter/pom.xml b/dsf-fhir/dsf-fhir-rest-adapter/pom.xml index 15157c91d..8d702ac1a 100755 --- a/dsf-fhir/dsf-fhir-rest-adapter/pom.xml +++ b/dsf-fhir/dsf-fhir-rest-adapter/pom.xml @@ -51,6 +51,7 @@ jakarta.ws.rs jakarta.ws.rs-api + ${jakarta.ws.rs.version} provided diff --git a/dsf-fhir/dsf-fhir-server/pom.xml b/dsf-fhir/dsf-fhir-server/pom.xml index 03c7512bb..1eec78482 100755 --- a/dsf-fhir/dsf-fhir-server/pom.xml +++ b/dsf-fhir/dsf-fhir-server/pom.xml @@ -85,6 +85,7 @@ jakarta.ws.rs jakarta.ws.rs-api + ${jakarta.ws.rs.version} jakarta.websocket @@ -125,18 +126,22 @@ org.glassfish.jersey.core jersey-server + ${jersey.version} org.glassfish.jersey.inject jersey-hk2 + ${jersey.version} org.glassfish.jersey.media jersey-media-json-jackson + ${jersey.version} org.glassfish.jersey.containers jersey-container-servlet + ${jersey.version} @@ -154,6 +159,12 @@ ca.uhn.hapi.fhir hapi-fhir-structures-r5 ${hapi.fhir.version} + + + net.sourceforge.plantuml + plantuml-mit + + ca.uhn.hapi.fhir @@ -175,6 +186,14 @@ org.xerial sqlite-jdbc + + org.commonmark + commonmark + + + org.commonmark + commonmark-ext-gfm-tables + ${hapi.fhir.version} diff --git a/dsf-fhir/dsf-fhir-validation/pom.xml b/dsf-fhir/dsf-fhir-validation/pom.xml index 7e008374a..01dbf03c5 100644 --- a/dsf-fhir/dsf-fhir-validation/pom.xml +++ b/dsf-fhir/dsf-fhir-validation/pom.xml @@ -84,6 +84,18 @@ io.opentelemetry.instrumentation opentelemetry-instrumentation-annotations + + net.sourceforge.plantuml + plantuml-mit + + + org.commonmark + commonmark + + + org.commonmark + commonmark-ext-gfm-tables + diff --git a/dsf-fhir/dsf-fhir-webservice-client/pom.xml b/dsf-fhir/dsf-fhir-webservice-client/pom.xml index 0a3dc99eb..85dd11de8 100755 --- a/dsf-fhir/dsf-fhir-webservice-client/pom.xml +++ b/dsf-fhir/dsf-fhir-webservice-client/pom.xml @@ -46,22 +46,27 @@ org.glassfish.jersey.core jersey-client + ${jersey.version} org.glassfish.jersey.inject jersey-hk2 + ${jersey.version} org.glassfish.jersey.media jersey-media-jaxb + ${jersey.version} org.glassfish.jersey.media jersey-media-json-jackson + ${jersey.version} org.glassfish.jersey.connectors - jersey-apache-connector + jersey-apache5-connector + ${jersey.version} commons-logging diff --git a/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractFhirWebserviceClientJerseyWithRetry.java b/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractFhirWebserviceClientJerseyWithRetry.java index bc4dc44ce..ce4b37ea7 100644 --- a/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractFhirWebserviceClientJerseyWithRetry.java +++ b/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractFhirWebserviceClientJerseyWithRetry.java @@ -19,8 +19,8 @@ import java.time.Duration; import java.util.function.Supplier; -import org.apache.http.conn.ConnectTimeoutException; -import org.apache.http.conn.HttpHostConnectException; +import org.apache.hc.client5.http.ConnectTimeoutException; +import org.apache.hc.client5.http.HttpHostConnectException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java b/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java index 9ecff9af0..39fdb95ae 100644 --- a/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java +++ b/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java @@ -24,7 +24,7 @@ import javax.net.ssl.SSLContext; import org.glassfish.jersey.SslConfigurator; -import org.glassfish.jersey.apache.connector.ApacheConnectorProvider; +import org.glassfish.jersey.apache5.connector.Apache5ConnectorProvider; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider; @@ -77,7 +77,7 @@ else if (trustStore != null && keyStore != null && keyStorePassword != null) builder = builder.sslContext(sslContext); ClientConfig config = new ClientConfig(); - config.connectorProvider(new ApacheConnectorProvider()); + config.connectorProvider(new Apache5ConnectorProvider()); config.property(ClientProperties.PROXY_URI, proxySchemeHostPort); config.property(ClientProperties.PROXY_USERNAME, proxyUserName); config.property(ClientProperties.PROXY_PASSWORD, proxyPassword == null ? null : String.valueOf(proxyPassword)); diff --git a/dsf-fhir/dsf-fhir-websocket-client/pom.xml b/dsf-fhir/dsf-fhir-websocket-client/pom.xml index f3ab0962d..91a2e7c36 100755 --- a/dsf-fhir/dsf-fhir-websocket-client/pom.xml +++ b/dsf-fhir/dsf-fhir-websocket-client/pom.xml @@ -42,6 +42,7 @@ org.glassfish.jersey.core jersey-common + ${jersey.version} org.glassfish.tyrus diff --git a/pom.xml b/pom.xml index fde175995..07e020e76 100755 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,6 @@ 2.0.18 2.26.0 12.1.10 - 3.1.11 2.2.2 7.0.7 2.21.4 @@ -54,6 +53,15 @@ 3.8.0 5.2.1 6.0.0 + 3.1.11 + 4.0.2 + 4.0.2 + 3.1.0 + 4.0.0 + 4.0.0 + 2.1.0 + 3.0.0 + 3.0.0 DSF Parent POM @@ -244,47 +252,6 @@ ${jetty.version} - - - org.glassfish.jersey.core - jersey-common - ${jersey.version} - - - org.glassfish.jersey.core - jersey-server - ${jersey.version} - - - org.glassfish.jersey.core - jersey-client - ${jersey.version} - - - org.glassfish.jersey.containers - jersey-container-servlet - ${jersey.version} - - - org.glassfish.jersey.inject - jersey-hk2 - ${jersey.version} - - - org.glassfish.jersey.connectors - jersey-apache-connector - ${jersey.version} - - - org.glassfish.jersey.media - jersey-media-jaxb - ${jersey.version} - - - org.glassfish.jersey.media - jersey-media-json-jackson - ${jersey.version} - com.fasterxml.jackson.core jackson-databind @@ -373,16 +340,6 @@ - - jakarta.ws.rs - jakarta.ws.rs-api - 4.0.0 - - - jakarta.annotation - jakarta.annotation-api - 3.0.0 - jakarta.servlet jakarta.servlet-api