From 198577edb933b11b0ee1af5f7f94813aec521359 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Sun, 15 Mar 2026 18:11:52 +0100 Subject: [PATCH 01/13] Core SNAPSHOT bump Jena version bump to 6.0.0 --- Dockerfile | 2 +- .../linkeddatahub/client/SesameProtocolClient.java | 2 +- .../atomgraph/linkeddatahub/resource/Namespace.java | 13 ++++--------- .../server/filter/request/OntologyFilter.java | 2 +- .../server/util/OntologyModelGetter.java | 2 +- 5 files changed, 8 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3d8066e6e8..ef0ca5c183 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM maven:3.8.4-openjdk-17 AS maven +FROM maven:3.9-eclipse-temurin-21 AS maven # download and extract Jena diff --git a/src/main/java/com/atomgraph/linkeddatahub/client/SesameProtocolClient.java b/src/main/java/com/atomgraph/linkeddatahub/client/SesameProtocolClient.java index 0cb29e2c2a..1adae78188 100644 --- a/src/main/java/com/atomgraph/linkeddatahub/client/SesameProtocolClient.java +++ b/src/main/java/com/atomgraph/linkeddatahub/client/SesameProtocolClient.java @@ -123,7 +123,7 @@ public static MultivaluedMap solutionMapToMultivaluedMap(QuerySo { String varName = it.next(); RDFNode node = qsm.get(varName); - params.add("$" + varName, NodeFmtLib.str(node.asNode())); + params.add("$" + varName, NodeFmtLib.strNT(node.asNode())); } return params; diff --git a/src/main/java/com/atomgraph/linkeddatahub/resource/Namespace.java b/src/main/java/com/atomgraph/linkeddatahub/resource/Namespace.java index 095219cf30..4ccefa319f 100644 --- a/src/main/java/com/atomgraph/linkeddatahub/resource/Namespace.java +++ b/src/main/java/com/atomgraph/linkeddatahub/resource/Namespace.java @@ -46,15 +46,13 @@ import jakarta.ws.rs.core.Response.Status; import jakarta.ws.rs.core.SecurityContext; import jakarta.ws.rs.core.UriInfo; -import org.apache.jena.iri.IRI; -import org.apache.jena.iri.IRIFactory; +import org.apache.jena.irix.IRIx; import org.apache.jena.ontology.Ontology; import org.apache.jena.query.DatasetFactory; import org.apache.jena.query.Query; import org.apache.jena.query.QueryFactory; import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.ModelFactory; -import org.apache.jena.riot.system.Checker; import org.apache.jena.update.UpdateRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -182,15 +180,12 @@ public Response post(UpdateRequest update, @QueryParam(USING_GRAPH_URI) List Date: Sun, 15 Mar 2026 21:25:33 +0100 Subject: [PATCH 02/13] POM update --- pom.xml | 60 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index abcad6aaab..d1834f7486 100644 --- a/pom.xml +++ b/pom.xml @@ -92,22 +92,22 @@ org.glassfish.jersey.connectors jersey-apache-connector - 3.1.0 + 3.1.11 org.glassfish.jersey.media jersey-media-multipart - 3.1.0 + 3.1.11 org.glassfish.jersey.media jersey-media-json-processing - 3.1.0 + 3.1.11 com.sun.mail jakarta.mail - 2.0.1 + 2.0.2 com.google.guava @@ -117,7 +117,7 @@ com.atomgraph.etl.csv csv2rdf - 2.1.11 + 2.2.0-SNAPSHOT @@ -129,51 +129,61 @@ org.apache.jena jena-shacl - 4.7.0 + 6.0.0 + + + org.apache.jena + jena-arq + 6.0.0 + + + com.github.jsonld-java + jsonld-java + 0.13.4 ${project.groupId} twirl - 1.0.33 + 1.1.0-SNAPSHOT ${project.groupId} client - 4.2.11 + 4.3.0-SNAPSHOT classes ${project.groupId} client - 4.2.11 + 4.3.0-SNAPSHOT war org.apache.httpcomponents httpclient-cache - 4.5.13 + 4.5.14 com.auth0 java-jwt - 3.19.3 + 3.19.4 net.jodah expiringmap - 0.5.10 + 0.5.11 org.jsoup jsoup - 1.15.3 + 1.22.1 org.apache.tomcat tomcat-coyote - 10.1.2 + 10.1.46 jar @@ -219,7 +229,7 @@ org.apache.maven.plugins maven-release-plugin - 2.5.3 + 3.3.1 release @@ -227,10 +237,10 @@ org.apache.maven.plugins maven-compiler-plugin - 3.10.1 + 3.14.1 - 17 - 17 + 21 + 21 -XDignore.symbol.file @@ -243,7 +253,7 @@ org.sonatype.central central-publishing-maven-plugin - 0.9.0 + 0.10.0 true central-portal-snapshots @@ -254,7 +264,7 @@ org.codehaus.mojo exec-maven-plugin - 3.0.0 + 3.6.3 find-xsl-files @@ -287,7 +297,7 @@ org.honton.chas readfiles-maven-plugin - 0.0.1 + 0.1.0 read-comma-separated-xsl-file-list @@ -338,7 +348,7 @@ com.github.eirslett frontend-maven-plugin - 1.15.1 + 1.15.4 v22.16.0 11.4.2 @@ -366,7 +376,7 @@ org.apache.maven.plugins maven-war-plugin - 3.3.2 + 3.5.1 ${build.warName} ${project.build.directory}/${build.warName} @@ -432,7 +442,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.1 + 3.4.0 attach-sources @@ -445,7 +455,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.12.0 attach-javadocs From 8e164fc64f6b4058abdced39aca012f72fd0da9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Sun, 15 Mar 2026 22:09:34 +0100 Subject: [PATCH 03/13] Tomcat base image bump --- Dockerfile | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index ef0ca5c183..5695d0dfe4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM maven:3.9-eclipse-temurin-21 AS maven # download and extract Jena -ARG JENA_VERSION=4.7.0 +ARG JENA_VERSION=6.0.0 ARG JENA_TAR_URL="https://archive.apache.org/dist/jena/binaries/apache-jena-${JENA_VERSION}.tar.gz" @@ -22,7 +22,7 @@ RUN mvn -Pstandalone clean install # ============================== -FROM atomgraph/letsencrypt-tomcat:10.1.46 +FROM atomgraph/letsencrypt-tomcat:10.1.52 LABEL maintainer="martynas@atomgraph.com" diff --git a/pom.xml b/pom.xml index d1834f7486..26a4aa9fb8 100644 --- a/pom.xml +++ b/pom.xml @@ -183,7 +183,7 @@ org.apache.tomcat tomcat-coyote - 10.1.46 + 10.1.52 jar From 9fedb0c04f7169e8d18fde9d2ea75071bb7a957f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Thu, 4 Jun 2026 22:38:40 +0200 Subject: [PATCH 04/13] JUnit bumped to v5 --- pom.xml | 11 ++++-- .../atomgraph/core/io/BillionLaughsTest.java | 37 ++++++++++--------- .../filter/ClientUriRewriteFilterTest.java | 4 +- .../request/ProxyRequestFilterTest.java | 12 +++--- .../server/util/URLValidatorTest.java | 23 ++++++------ 5 files changed, 48 insertions(+), 39 deletions(-) diff --git a/pom.xml b/pom.xml index 26a4aa9fb8..5edfb9e8d7 100644 --- a/pom.xml +++ b/pom.xml @@ -187,9 +187,9 @@ jar - junit - junit - 4.13.2 + org.junit.jupiter + junit-jupiter + 5.11.4 test @@ -226,6 +226,11 @@ + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + org.apache.maven.plugins maven-release-plugin diff --git a/src/test/java/com/atomgraph/core/io/BillionLaughsTest.java b/src/test/java/com/atomgraph/core/io/BillionLaughsTest.java index 75c7ba7ff6..7cfe10d0cc 100644 --- a/src/test/java/com/atomgraph/core/io/BillionLaughsTest.java +++ b/src/test/java/com/atomgraph/core/io/BillionLaughsTest.java @@ -3,11 +3,12 @@ import org.apache.jena.rdf.model.*; import org.apache.jena.riot.*; import org.apache.jena.riot.system.ErrorHandlerFactory; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import org.apache.jena.riot.system.StreamRDFLib; +import static org.junit.jupiter.api.Assertions.assertThrows; public class BillionLaughsTest { @@ -33,22 +34,24 @@ public class BillionLaughsTest { """; - @Test(expected = RiotException.class) + @Test public void testBillionLaughs() { - Model m = ModelFactory.createDefaultModel(); - - ByteArrayInputStream bais = new ByteArrayInputStream(MALICIOUS.getBytes(StandardCharsets.UTF_8)); - - RDFParser parser = RDFParser.create() - .lang(Lang.RDFXML) - .errorHandler(ErrorHandlerFactory.errorHandlerStrict) - .checking(true) - .base("http://example.org/") - .source(bais) - .build(); - - System.out.println("Starting parse..."); - parser.parse(StreamRDFLib.graph(m.getGraph())); - System.out.println("Model size: " + m.size()); + assertThrows(RiotException.class, () -> { + Model m = ModelFactory.createDefaultModel(); + + ByteArrayInputStream bais = new ByteArrayInputStream(MALICIOUS.getBytes(StandardCharsets.UTF_8)); + + RDFParser parser = RDFParser.create() + .lang(Lang.RDFXML) + .errorHandler(ErrorHandlerFactory.errorHandlerStrict) + .checking(true) + .base("http://example.org/") + .source(bais) + .build(); + + System.out.println("Starting parse..."); + parser.parse(StreamRDFLib.graph(m.getGraph())); + System.out.println("Model size: " + m.size()); + }); } } diff --git a/src/test/java/com/atomgraph/linkeddatahub/client/filter/ClientUriRewriteFilterTest.java b/src/test/java/com/atomgraph/linkeddatahub/client/filter/ClientUriRewriteFilterTest.java index 1c874c19b8..ce3d6e89fa 100644 --- a/src/test/java/com/atomgraph/linkeddatahub/client/filter/ClientUriRewriteFilterTest.java +++ b/src/test/java/com/atomgraph/linkeddatahub/client/filter/ClientUriRewriteFilterTest.java @@ -34,8 +34,8 @@ import java.util.List; import java.util.Locale; import java.util.Map; -import org.junit.Test; -import static org.junit.Assert.*; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; /** * Unit tests for {@link ClientUriRewriteFilter}. diff --git a/src/test/java/com/atomgraph/linkeddatahub/server/filter/request/ProxyRequestFilterTest.java b/src/test/java/com/atomgraph/linkeddatahub/server/filter/request/ProxyRequestFilterTest.java index 745ecd94dd..2321ecf817 100644 --- a/src/test/java/com/atomgraph/linkeddatahub/server/filter/request/ProxyRequestFilterTest.java +++ b/src/test/java/com/atomgraph/linkeddatahub/server/filter/request/ProxyRequestFilterTest.java @@ -24,11 +24,11 @@ import java.io.IOException; import java.net.URI; import java.util.List; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; +import org.mockito.junit.jupiter.MockitoExtension; import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.Mockito.*; @@ -37,7 +37,7 @@ * * @author Martynas Jusevičius {@literal } */ -@RunWith(MockitoJUnitRunner.class) +@ExtendWith(MockitoExtension.class) public class ProxyRequestFilterTest { @@ -47,7 +47,7 @@ public class ProxyRequestFilterTest private ProxyRequestFilter filter; - @Before + @BeforeEach public void setUp() { filter = new ProxyRequestFilter(); diff --git a/src/test/java/com/atomgraph/linkeddatahub/server/util/URLValidatorTest.java b/src/test/java/com/atomgraph/linkeddatahub/server/util/URLValidatorTest.java index fd22dae189..b72bc4b653 100644 --- a/src/test/java/com/atomgraph/linkeddatahub/server/util/URLValidatorTest.java +++ b/src/test/java/com/atomgraph/linkeddatahub/server/util/URLValidatorTest.java @@ -16,9 +16,10 @@ package com.atomgraph.linkeddatahub.server.util; import com.atomgraph.linkeddatahub.server.exception.InternalURLException; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.net.URI; +import static org.junit.jupiter.api.Assertions.assertThrows; /** * Unit tests for URLValidator SSRF protection. @@ -32,34 +33,34 @@ public class URLValidatorTest { - @Test(expected = IllegalArgumentException.class) + @Test public void testNullURI() { - new URLValidator(false).validate(null); + assertThrows(IllegalArgumentException.class, () -> new URLValidator(false).validate(null)); } - @Test(expected = InternalURLException.class) + @Test public void testLinkLocalIPv4Blocked() { - new URLValidator(false).validate(URI.create("http://169.254.1.1:8080/test")); + assertThrows(InternalURLException.class, () -> new URLValidator(false).validate(URI.create("http://169.254.1.1:8080/test"))); } - @Test(expected = InternalURLException.class) + @Test public void testPrivateClass10Blocked() { - new URLValidator(false).validate(URI.create("http://10.0.0.1:8080/test")); + assertThrows(InternalURLException.class, () -> new URLValidator(false).validate(URI.create("http://10.0.0.1:8080/test"))); } - @Test(expected = InternalURLException.class) + @Test public void testPrivateClass172Blocked() { - new URLValidator(false).validate(URI.create("http://172.16.0.0:8080/test")); + assertThrows(InternalURLException.class, () -> new URLValidator(false).validate(URI.create("http://172.16.0.0:8080/test"))); } - @Test(expected = InternalURLException.class) + @Test public void testPrivateClass192Blocked() { - new URLValidator(false).validate(URI.create("http://192.168.1.1:8080/test")); + assertThrows(InternalURLException.class, () -> new URLValidator(false).validate(URI.create("http://192.168.1.1:8080/test"))); } @Test From 6169df0f041d02535d9414cf030670b72b0f9bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Thu, 4 Jun 2026 23:29:18 +0200 Subject: [PATCH 05/13] Add mockito-junit-jupiter dependency Required by ProxyRequestFilterTest after the JUnit 4 -> 5 migration: @ExtendWith(MockitoExtension.class) lives in mockito-junit-jupiter, not mockito-core. --- pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pom.xml b/pom.xml index 5edfb9e8d7..78cf1f2346 100644 --- a/pom.xml +++ b/pom.xml @@ -198,6 +198,12 @@ 5.12.0 test + + org.mockito + mockito-junit-jupiter + 5.12.0 + test + From abcb141d236fd6a0ddb3aec19d5ab3268784785c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Thu, 4 Jun 2026 23:35:30 +0200 Subject: [PATCH 06/13] Bump docker-compose image versions - nginx 1.23.3 -> 1.31.1 - atomgraph/fuseki 4.7.0 -> 6.1.0 (matches Jena 6 upgrade) - varnish 7.3.0 -> 7.7.3 --- docker-compose.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index c95560dbd4..02b5f52033 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,7 +20,7 @@ volumes: varnish_end_user_cache: services: nginx: - image: nginx:1.23.3 + image: nginx:1.31.1 mem_limit: 128m configs: - source: nginx_conf @@ -105,7 +105,7 @@ services: - ./config/dataspaces.trig:/var/linkeddatahub/datasets/dataspaces.trig - ./config/system.trig:/var/linkeddatahub/datasets/system.trig fuseki-admin: - image: atomgraph/fuseki:4.7.0 + image: atomgraph/fuseki:6.1.0 user: root # otherwise fuseki user does not have permissions to the mounted folder which is owner by root expose: - 3030 @@ -114,7 +114,7 @@ services: - ./fuseki/admin:/fuseki/databases command: [ "--config", "/fuseki/config.ttl" ] fuseki-end-user: - image: atomgraph/fuseki:4.7.0 + image: atomgraph/fuseki:6.1.0 user: root # otherwise the fuseki user does not have permissions to the mounted folder which is owner by root expose: - 3030 @@ -123,7 +123,7 @@ services: - ./fuseki/end-user:/fuseki/databases command: [ "--config", "/fuseki/config.ttl" ] varnish-frontend: - image: varnish:7.3.0 + image: varnish:7.7.3 user: root # otherwise varnish user does not have permissions to the mounted folder which is owner by root configs: - source: varnish-frontend_vcl @@ -136,7 +136,7 @@ services: entrypoint: varnishd command: [ "-F", "-f", "/etc/varnish/default.vcl", "-a", "http=:6060,HTTP", "-a", "proxy=:8443,PROXY", "-p", "feature=+http2", "-s", "file,/var/lib/varnish/storage.bin,3G", "-t", "86400" ] # -F: foreground, -f: config, -a: listeners, -p: http2, -s: storage, -t: TTL varnish-admin: - image: varnish:7.3.0 + image: varnish:7.7.3 user: root # otherwise the varnish user does not have permissions to the mounted folder which is owner by root configs: - source: varnish-admin_vcl @@ -147,7 +147,7 @@ services: entrypoint: varnishd command: [ "-F", "-f", "/etc/varnish/default.vcl", "-a", "http=:80,HTTP", "-a", "proxy=:8443,PROXY", "-p", "feature=+http2", "-s", "malloc,1G", "-t", "86400", "-p", "timeout_idle=60s" ] # -F: foreground, -f: config, -a: listeners, -p: http2 + idle timeout, -s: storage, -t: TTL varnish-end-user: - image: varnish:7.3.0 + image: varnish:7.7.3 user: root # otherwise varnish user does not have permissions to the mounted folder which is owner by root configs: - source: varnish-end-user_vcl From fb6687cde5887a74934eac20891c2d62dda1c0be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Thu, 4 Jun 2026 23:56:01 +0200 Subject: [PATCH 07/13] CI: dump container logs on failure --- .github/workflows/http-tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/http-tests.yml b/.github/workflows/http-tests.yml index 22e9740bd8..3233d5374f 100644 --- a/.github/workflows/http-tests.yml +++ b/.github/workflows/http-tests.yml @@ -49,6 +49,9 @@ jobs: run: ./run.sh "$PWD/ssl/owner/cert.pem" "${{ secrets.HTTP_TEST_OWNER_CERT_PASSWORD }}" "$PWD/ssl/secretary/cert.pem" "${{ secrets.HTTP_TEST_SECRETARY_CERT_PASSWORD }}" shell: bash working-directory: http-tests + - name: Dump container logs on failure + if: failure() + run: docker compose --env-file ./http-tests/.env logs --no-color - name: Stop Docker containers and remove volumes run: docker compose --env-file ./http-tests/.env down -v - name: Remove Docker containers From dfed039ca98c40011792216eaf1b00915d56ad10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Fri, 5 Jun 2026 00:10:30 +0200 Subject: [PATCH 08/13] DEBUG: trace entrypoint with set -x (revert before merge) --- platform/entrypoint.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platform/entrypoint.sh b/platform/entrypoint.sh index a737c3a6b2..a67ef53832 100755 --- a/platform/entrypoint.sh +++ b/platform/entrypoint.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash set -e +set -x # DEBUG: trace every command (revert before merge) +exec 2>&1 # DEBUG: merge stderr into stdout so the trace lands in docker logs # set timezone From f8772a55cb35728fa7c528b6d495bc4c4ad492d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Fri, 5 Jun 2026 00:18:58 +0200 Subject: [PATCH 09/13] CI: dump Tomcat logs from linkeddatahub container on failure --- .github/workflows/http-tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/http-tests.yml b/.github/workflows/http-tests.yml index 3233d5374f..6538a16e50 100644 --- a/.github/workflows/http-tests.yml +++ b/.github/workflows/http-tests.yml @@ -52,6 +52,9 @@ jobs: - name: Dump container logs on failure if: failure() run: docker compose --env-file ./http-tests/.env logs --no-color + - name: Dump Tomcat logs from linkeddatahub container on failure + if: failure() + run: docker compose --env-file ./http-tests/.env exec -T linkeddatahub sh -c 'for f in /usr/local/tomcat/logs/*; do echo "=== $f ==="; cat "$f"; done' || true - name: Stop Docker containers and remove volumes run: docker compose --env-file ./http-tests/.env down -v - name: Remove Docker containers From 7719123bd143997d4884d06cc44dded0d9101688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Fri, 5 Jun 2026 00:26:12 +0200 Subject: [PATCH 10/13] Servlet API bump --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 78cf1f2346..c4fa93d7ab 100644 --- a/pom.xml +++ b/pom.xml @@ -86,7 +86,7 @@ jakarta.servlet jakarta.servlet-api - 5.0.0 + 6.0.0 provided From ebb08b389aad432956651fabf4dd7fcc0d7d7d17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Fri, 5 Jun 2026 00:31:55 +0200 Subject: [PATCH 11/13] Jena bump to 6.1.0 --- .github/workflows/http-tests.yml | 2 +- Dockerfile | 2 +- pom.xml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/http-tests.yml b/.github/workflows/http-tests.yml index 6538a16e50..7f63ebcd6f 100644 --- a/.github/workflows/http-tests.yml +++ b/.github/workflows/http-tests.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest env: ASF_ARCHIVE: https://archive.apache.org/dist/ - JENA_VERSION: 4.7.0 + JENA_VERSION: 6.1.0 BASE_URI: https://localhost:4443/ steps: - name: Install Linux packages diff --git a/Dockerfile b/Dockerfile index 5695d0dfe4..a5fdd51e49 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM maven:3.9-eclipse-temurin-21 AS maven # download and extract Jena -ARG JENA_VERSION=6.0.0 +ARG JENA_VERSION=6.1.0 ARG JENA_TAR_URL="https://archive.apache.org/dist/jena/binaries/apache-jena-${JENA_VERSION}.tar.gz" diff --git a/pom.xml b/pom.xml index c4fa93d7ab..4eb1a23653 100644 --- a/pom.xml +++ b/pom.xml @@ -129,12 +129,12 @@ org.apache.jena jena-shacl - 6.0.0 + 6.1.0 org.apache.jena jena-arq - 6.0.0 + 6.1.0 com.github.jsonld-java From 7c722a5fef990c1a3e3ffc545476fd42de01b9a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Fri, 5 Jun 2026 00:52:08 +0200 Subject: [PATCH 12/13] CI: install Java 21 for Jena 6.1.0 CLI tools Jena 6.1.0 binaries are compiled for Java 21; the runner default is Java 17 which produced UnsupportedClassVersionError (class file 65.0 vs 61.0) on every turtle/riot/sparql invocation in the HTTP tests. --- .github/workflows/http-tests.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/http-tests.yml b/.github/workflows/http-tests.yml index 7f63ebcd6f..adac057374 100644 --- a/.github/workflows/http-tests.yml +++ b/.github/workflows/http-tests.yml @@ -13,6 +13,11 @@ jobs: steps: - name: Install Linux packages run: sudo apt-get update && sudo apt-get install -qq raptor2-utils && sudo apt-get install curl + - name: Set up Java 21 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '21' - name: Download Jena run: curl -sS --fail "${{ env.ASF_ARCHIVE }}jena/binaries/apache-jena-${{ env.JENA_VERSION }}.tar.gz" -o "${{ runner.temp }}/jena.tar.gz" - name: Unpack Jena From ed5d3b5c5c78be54464bb353fcd2ef3a404d0aee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Fri, 5 Jun 2026 10:32:53 +0200 Subject: [PATCH 13/13] Dependency bumps --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 4eb1a23653..3294574f1c 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ com.atomgraph.etl.csv csv2rdf - 2.2.0-SNAPSHOT + 2.2.0 @@ -144,18 +144,18 @@ ${project.groupId} twirl - 1.1.0-SNAPSHOT + 1.1.0 ${project.groupId} client - 4.3.0-SNAPSHOT + 4.3.0 classes ${project.groupId} client - 4.3.0-SNAPSHOT + 4.3.0 war