diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
new file mode 100644
index 0000000..16c3ecb
--- /dev/null
+++ b/.github/workflows/build.yaml
@@ -0,0 +1,11 @@
+name: Build
+on: [push, pull_request]
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: epimorphics/github-actions/maven-build@v17
+ with:
+ java-version: '21'
+ aws-access-key-id: ${{ secrets.DEPLOY_MAVEN_PRIVATE_S3_USERNAME }}
+ aws-secret-access-key: ${{ secrets.DEPLOY_MAVEN_PRIVATE_S3_PASSWORD }}
diff --git a/pom.xml b/pom.xml
index af3b97f..cba5861 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.epimorphics
sapi
pom
- 2.3.16-SNAPSHOT
+ 4.0.0-SNAPSHOT
sapi
Simple API
@@ -14,8 +14,9 @@
UTF-8
- 3.1.14
- 2.25.1
+ 4.0.0
+ 3.1.11
+ 11.0.12
@@ -79,10 +80,9 @@
- junit
- junit
- 4.13.1
- jar
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.13.2
test
@@ -105,7 +105,17 @@
${jersey.version}
-
+
+ org.glassfish.jersey.inject
+ jersey-hk2
+ ${jersey.version}
+
+
+
+ jakarta.activation
+ jakarta.activation-api
+ 2.1.4
+
@@ -121,8 +131,8 @@
maven-compiler-plugin
3.14.1
- 1.8
- 1.8
+ 21
+ 21
@@ -146,6 +156,17 @@
maven-release-plugin
3.1.1
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.5.4
+
+
+ slow
+
+
+
diff --git a/sapi-app/pom.xml b/sapi-app/pom.xml
index 2508129..cf24450 100644
--- a/sapi-app/pom.xml
+++ b/sapi-app/pom.xml
@@ -5,16 +5,17 @@
sapi-app
Simple API application
-
- 9.0.113
-
+
+ com.epimorphics
+ sapi
+ 4.0.0-SNAPSHOT
+
-
com.epimorphics
sapi-lib
- 2.3.16-SNAPSHOT
+ 4.0.0-SNAPSHOT
@@ -33,10 +34,4 @@
-
- com.epimorphics
- sapi
- 2.3.16-SNAPSHOT
-
-
diff --git a/sapi-app/src/main/java/com/epimorphics/simpleAPI/app/webapi/DefaultHandler.java b/sapi-app/src/main/java/com/epimorphics/simpleAPI/app/webapi/DefaultHandler.java
index 97f7f31..fead120 100644
--- a/sapi-app/src/main/java/com/epimorphics/simpleAPI/app/webapi/DefaultHandler.java
+++ b/sapi-app/src/main/java/com/epimorphics/simpleAPI/app/webapi/DefaultHandler.java
@@ -9,12 +9,12 @@
*****************************************************************/
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
import com.epimorphics.simpleAPI.webapi.EndpointsBase;
@@ -31,4 +31,4 @@ public Response handleDefaultJson() {
public Response handleDefault(String body) {
return defaultResponse(body);
}
-}
\ No newline at end of file
+}
diff --git a/sapi-doctool/pom.xml b/sapi-doctool/pom.xml
index 91fabfe..31693af 100644
--- a/sapi-doctool/pom.xml
+++ b/sapi-doctool/pom.xml
@@ -4,13 +4,19 @@
jar
sapi-doctool
Documentation tooling for sapi
-
+
+
+ com.epimorphics
+ sapi
+ 4.0.0-SNAPSHOT
+
+
com.epimorphics
sapi-lib
- 2.3.16-SNAPSHOT
+ 4.0.0-SNAPSHOT
@@ -21,12 +27,6 @@
-
- com.epimorphics
- sapi
- 2.3.16-SNAPSHOT
-
-
diff --git a/sapi-lib/pom.xml b/sapi-lib/pom.xml
index 4ed530e..971885b 100644
--- a/sapi-lib/pom.xml
+++ b/sapi-lib/pom.xml
@@ -5,15 +5,17 @@
sapi-lib
Simple API library
-
- 9.0.113
-
+
+ com.epimorphics
+ sapi
+ 4.0.0-SNAPSHOT
+
- javax.servlet
- javax.servlet-api
- 3.1.0
+ jakarta.servlet
+ jakarta.servlet-api
+ 6.0.0
provided
@@ -30,12 +32,31 @@
provided
-
+
+ com.github.jsonld-java
+ jsonld-java
+ 0.13.6
+
-
- com.epimorphics
- sapi
- 2.3.16-SNAPSHOT
-
+
+ commons-codec
+ commons-codec
+ 1.19.0
+
+
+
+ ch.qos.logback
+ logback-classic
+ 1.5.21
+ test
+
+
+
+ org.slf4j
+ slf4j-api
+ 2.0.17
+
+
+
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/containers/Container.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/containers/Container.java
index 2c9f341..354f716 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/containers/Container.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/containers/Container.java
@@ -14,11 +14,11 @@
import java.io.InputStream;
import java.util.UUID;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response.Status;
+import com.epimorphics.appbase.data.DatasetAccessor;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response.Status;
-import org.apache.jena.query.DatasetAccessor;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Property;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/core/API.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/core/API.java
index acbedb8..97d94d6 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/core/API.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/core/API.java
@@ -14,9 +14,9 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.core.UriInfo;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.NotFoundException;
+import jakarta.ws.rs.core.UriInfo;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.Resource;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/core/SpecMonitor.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/core/SpecMonitor.java
index 6674265..0451316 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/core/SpecMonitor.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/core/SpecMonitor.java
@@ -15,8 +15,8 @@
import java.util.HashMap;
import java.util.Map;
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.core.UriInfo;
+import jakarta.ws.rs.NotFoundException;
+import jakarta.ws.rs.core.UriInfo;
import com.epimorphics.appbase.monitor.ConfigMonitor;
import com.epimorphics.simpleAPI.endpoints.EndpointSpec;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/endpoints/impl/SparqlEndpointSpec.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/endpoints/impl/SparqlEndpointSpec.java
index 6a31e28..91b7fe6 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/endpoints/impl/SparqlEndpointSpec.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/endpoints/impl/SparqlEndpointSpec.java
@@ -9,7 +9,7 @@
package com.epimorphics.simpleAPI.endpoints.impl;
-import javax.ws.rs.NotFoundException;
+import jakarta.ws.rs.NotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/jsonld/JsonLDJenaTripleCallBack.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/jsonld/JsonLDJenaTripleCallBack.java
index 6b48efd..8fb2b20 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/jsonld/JsonLDJenaTripleCallBack.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/jsonld/JsonLDJenaTripleCallBack.java
@@ -68,7 +68,7 @@ public Object call(RDFDataset dataset) {
Node s = createNode(t, "subject") ;
Node p = createNode(t, "predicate") ;
Node o = createNode(t, "object") ;
- model.getGraph().add( new Triple(s,p,o) );
+ model.getGraph().add( Triple.create(s,p,o) );
}
}
}
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/jsonld/JsonLDUtil.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/jsonld/JsonLDUtil.java
index b45f671..48c6d6d 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/jsonld/JsonLDUtil.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/jsonld/JsonLDUtil.java
@@ -26,7 +26,7 @@
import java.io.InputStream;
import java.util.Map;
-import javax.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MediaType;
import org.apache.jena.rdf.model.Model;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/query/impl/SparqlDataSource.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/query/impl/SparqlDataSource.java
index 4adb753..c3b13a6 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/query/impl/SparqlDataSource.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/query/impl/SparqlDataSource.java
@@ -9,7 +9,7 @@
package com.epimorphics.simpleAPI.query.impl;
-import javax.ws.rs.NotFoundException;
+import jakarta.ws.rs.NotFoundException;
import org.apache.jena.graph.Graph;
import org.apache.jena.rdf.model.Model;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/Call.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/Call.java
index cd1d2f5..dbe759e 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/Call.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/Call.java
@@ -27,9 +27,9 @@
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Response.Status;
+import jakarta.ws.rs.NotFoundException;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Response.Status;
import java.util.List;
import java.util.function.Function;
@@ -170,7 +170,7 @@ public ResultOrStream getResults() throws WebApiException {
return getResults(query);
} catch (QueryExceptionHTTP e) {
// Retry before reporting error?
- if (e.getResponseCode() >= 500) {
+ if (e.getStatusCode() >= 500) {
log.warn("Sparql query execution failed, retrying");
try {
Thread.sleep(3000); // TODO make configurable
@@ -192,7 +192,7 @@ public ResultOrStream getResults() throws WebApiException {
public void returnError(Exception e) throws WebApiException, WebApplicationException {
if (e instanceof QueryExceptionHTTP) {
// Maybe a bad query, a timeout, or dead fuseki
- int status = ((QueryExceptionHTTP)e).getResponseCode();
+ int status = ((QueryExceptionHTTP)e).getStatusCode();
if (status == 503) {
// Fuseki returns 503 when queries time out
returnError(status, "Query timed out");
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/Request.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/Request.java
index a5e4a05..7dbef68 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/Request.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/Request.java
@@ -18,10 +18,11 @@
import java.util.Map;
import java.util.Set;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriInfo;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.core.MultivaluedHashMap;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.UriInfo;
import org.apache.jena.atlas.json.JSON;
import org.apache.jena.atlas.json.JsonObject;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/RequestCheck.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/RequestCheck.java
index fd7fda7..dc0865a 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/RequestCheck.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/RequestCheck.java
@@ -12,7 +12,7 @@
import java.util.ArrayList;
import java.util.List;
-import javax.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.Response.Status;
import org.apache.jena.atlas.json.JsonObject;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/SortRequestProcessor.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/SortRequestProcessor.java
index a2cfb44..77ba89f 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/SortRequestProcessor.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/requests/SortRequestProcessor.java
@@ -9,7 +9,7 @@
package com.epimorphics.simpleAPI.requests;
-import javax.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.Response.Status;
import com.epimorphics.appbase.webapi.WebApiException;
import com.epimorphics.simpleAPI.endpoints.EndpointSpec;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/EndpointsBase.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/EndpointsBase.java
index 00c1e36..6d5e370 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/EndpointsBase.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/EndpointsBase.java
@@ -16,18 +16,18 @@
import java.util.List;
import java.util.Map;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.core.CacheControl;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.ResponseBuilder;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.StreamingOutput;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.core.Variant;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.ws.rs.NotFoundException;
+import jakarta.ws.rs.core.CacheControl;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.ResponseBuilder;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.StreamingOutput;
+import jakarta.ws.rs.core.UriInfo;
+import jakarta.ws.rs.core.Variant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -93,7 +93,7 @@ public class EndpointsBase {
protected @Context ServletContext context;
protected @Context UriInfo uriInfo;
protected @Context HttpServletRequest httprequest;
- protected @Context javax.ws.rs.core.Request containerRequest;
+ protected @Context jakarta.ws.rs.core.Request containerRequest;
// ---- Generic access methods ---------------------------------
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/LibAPI.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/LibAPI.java
index 1894aed..c8e2737 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/LibAPI.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/LibAPI.java
@@ -9,13 +9,13 @@
package com.epimorphics.simpleAPI.webapi;
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.JsonValue;
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonValue;
+import jakarta.ws.rs.client.Client;
+import jakarta.ws.rs.client.ClientBuilder;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/LogRequestFilter.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/LogRequestFilter.java
index fde4823..3ea2205 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/LogRequestFilter.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/LogRequestFilter.java
@@ -12,15 +12,15 @@
import java.io.IOException;
import java.util.concurrent.atomic.AtomicLong;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.Response.Status;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.ws.rs.core.Response.Status;
import com.epimorphics.simpleAPI.metrics.ResponseMetrics;
import org.slf4j.Logger;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/NotModifiedException.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/NotModifiedException.java
index c41f0ad..b54b7be 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/NotModifiedException.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/NotModifiedException.java
@@ -11,9 +11,9 @@
import java.util.Date;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
public class NotModifiedException extends WebApplicationException {
private static final long serialVersionUID = 6895043905741087825L;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultCSV.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultCSV.java
index c9684ed..6e6b4d5 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultCSV.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultCSV.java
@@ -14,13 +14,13 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultHTML.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultHTML.java
index 24a2ae6..e0db8e4 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultHTML.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultHTML.java
@@ -15,12 +15,12 @@
import java.lang.reflect.Type;
import java.util.Map;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultJSON.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultJSON.java
index 55ee291..7f76057 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultJSON.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultJSON.java
@@ -14,12 +14,12 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultRDFXML.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultRDFXML.java
index d43cbc2..628f97e 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultRDFXML.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultRDFXML.java
@@ -14,12 +14,12 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamCSV.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamCSV.java
index e425ccf..992c822 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamCSV.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamCSV.java
@@ -14,13 +14,13 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamHTML.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamHTML.java
index b66ad55..3bc7fdb 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamHTML.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamHTML.java
@@ -17,13 +17,13 @@
import java.util.List;
import java.util.Map;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamJSON.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamJSON.java
index e26ea08..30e6833 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamJSON.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamJSON.java
@@ -14,12 +14,12 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamRDFXML.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamRDFXML.java
index 997803f..48be9f1 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamRDFXML.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamRDFXML.java
@@ -14,12 +14,12 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamTurtle.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamTurtle.java
index a336bcf..b6363f9 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamTurtle.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultStreamTurtle.java
@@ -16,12 +16,12 @@
import java.util.ArrayList;
import java.util.List;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
diff --git a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultTurtle.java b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultTurtle.java
index f0e99f6..d988b84 100644
--- a/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultTurtle.java
+++ b/sapi-lib/src/main/java/com/epimorphics/simpleAPI/webapi/marshalling/ResultTurtle.java
@@ -14,12 +14,12 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.Resource;
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/containers/TestContainers.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/containers/TestContainers.java
index 66493e3..0c520fa 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/containers/TestContainers.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/containers/TestContainers.java
@@ -20,18 +20,18 @@
import java.util.Locale;
import java.util.Map;
-import javax.ws.rs.core.Cookie;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Cookie;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
import org.apache.jena.query.Dataset;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.riot.Lang;
import org.apache.jena.riot.RDFDataMgr;
-import org.junit.Before;
-import org.junit.Test;
-import static org.junit.Assert.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
import com.epimorphics.appbase.core.App;
import com.epimorphics.appbase.data.impl.DatasetSparqlSource;
@@ -48,7 +48,7 @@ public class TestContainers {
Container dsContainer;
Container eltContainer;
- @Before
+ @BeforeEach
public void setUP() throws IOException {
app = new App("test", new File("src/test/testCases/containerTests/app.conf"));
api = app.getA(API.class);
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/core/TestSpecAndViews.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/core/TestSpecAndViews.java
index e93cf69..1b08bd5 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/core/TestSpecAndViews.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/core/TestSpecAndViews.java
@@ -9,7 +9,7 @@
package com.epimorphics.simpleAPI.core;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
import java.io.File;
import java.io.IOException;
@@ -17,8 +17,8 @@
import java.util.List;
import java.util.Set;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import com.epimorphics.appbase.core.App;
import com.epimorphics.simpleAPI.endpoints.impl.SparqlListEndpointSpec;
@@ -38,7 +38,7 @@ public class TestSpecAndViews {
App app;
API api;
- @Before
+ @BeforeEach
public void setUP() throws IOException {
app = new App("test", new File("src/test/testCases/baseEPTest/app.conf"));
api = app.getA(API.class);
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/jsonld/TestJsonLDUtil.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/jsonld/TestJsonLDUtil.java
index a35fd0d..5977fea 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/jsonld/TestJsonLDUtil.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/jsonld/TestJsonLDUtil.java
@@ -11,8 +11,8 @@
import org.apache.jena.rdf.model.Model;
import org.apache.jena.riot.RDFDataMgr;
-import org.junit.Test;
-import static org.junit.Assert.*;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
import java.io.FileInputStream;
import java.io.IOException;
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/query/TestQueryStrings.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/query/TestQueryStrings.java
index 88d49f1..e95730b 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/query/TestQueryStrings.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/query/TestQueryStrings.java
@@ -10,16 +10,17 @@
package com.epimorphics.simpleAPI.query;
import static com.epimorphics.util.Asserts.*;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.File;
import java.io.IOException;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.shared.PrefixMapping;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import com.epimorphics.appbase.core.App;
import com.epimorphics.simpleAPI.core.API;
@@ -36,7 +37,7 @@ public class TestQueryStrings {
App app;
API api;
- @Before
+ @BeforeEach
public void setUP() throws IOException {
app = new App("test", new File("src/test/testCases/testQueries/WEB-INF/app.conf"));
api = app.getA(API.class);
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/requests/TestRequestBasics.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/requests/TestRequestBasics.java
index fc5d946..9663513 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/requests/TestRequestBasics.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/requests/TestRequestBasics.java
@@ -9,7 +9,7 @@
package com.epimorphics.simpleAPI.requests;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
import java.io.File;
import java.io.IOException;
@@ -19,8 +19,8 @@
import java.util.TimeZone;
import org.apache.jena.rdf.model.Literal;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import com.epimorphics.appbase.core.App;
import com.epimorphics.simpleAPI.core.API;
@@ -35,7 +35,7 @@ public class TestRequestBasics {
API api;
DataSource source;
- @Before
+ @BeforeEach
public void setUP() throws IOException {
app = new App("test", new File("src/test/testCases/baseRequestTest/app.conf"));
api = app.getA(API.class);
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/requests/TestRequestChecker.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/requests/TestRequestChecker.java
index ad2f42f..b3e1503 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/requests/TestRequestChecker.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/requests/TestRequestChecker.java
@@ -9,9 +9,9 @@
package com.epimorphics.simpleAPI.requests;
-import org.junit.Before;
-import org.junit.Test;
-import static org.junit.Assert.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
import org.apache.jena.atlas.json.JSON;
import org.apache.jena.atlas.json.JsonObject;
@@ -29,7 +29,7 @@ public class TestRequestChecker {
protected RequestCheck checks = new RequestCheck();
protected API api = new API();
- @Before
+ @BeforeEach
public void setUp() {
api.setBaseURI("http://localhost/");
checks.addParameterCheck( new ParameterCheck("foo", true) );
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/results/TestResultAccess.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/results/TestResultAccess.java
index 5869fa5..7d1318c 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/results/TestResultAccess.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/results/TestResultAccess.java
@@ -13,13 +13,13 @@
import static com.epimorphics.simpleAPI.util.TreeTestUtil.res;
import static com.epimorphics.simpleAPI.util.TreeTestUtil.set;
import static com.epimorphics.simpleAPI.util.TreeTestUtil.tree;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
import java.util.Collection;
import java.util.Set;
import org.apache.jena.rdf.model.RDFNode;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import com.epimorphics.simpleAPI.views.ViewPath;
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/results/TestResultBasics.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/results/TestResultBasics.java
index 3ba8f0c..5dd08db 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/results/TestResultBasics.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/results/TestResultBasics.java
@@ -9,10 +9,10 @@
package com.epimorphics.simpleAPI.results;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -28,8 +28,8 @@
import org.apache.jena.rdf.model.ResourceFactory;
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.util.FileManager;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import com.epimorphics.appbase.core.App;
import com.epimorphics.simpleAPI.core.API;
@@ -59,8 +59,9 @@ public class TestResultBasics {
API api;
DataSource source;
- @Before
- public void setUP() throws IOException {
+ @BeforeEach
+ public void setUp() throws IOException {
+ System.out.println("Starting test setup");
app = new App("test", new File("src/test/testCases/baseResultTest/app.conf"));
api = app.getA(API.class);
// app.startup();
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/transformedQuery/TestRunTransforms.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/transformedQuery/TestRunTransforms.java
index 44bac64..b2f04bc 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/transformedQuery/TestRunTransforms.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/transformedQuery/TestRunTransforms.java
@@ -7,15 +7,15 @@
package com.epimorphics.simpleAPI.transformedQuery;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import com.epimorphics.appbase.core.App;
import com.epimorphics.simpleAPI.core.API;
@@ -38,7 +38,8 @@ public class TestRunTransforms {
API api;
DataSource source;
- @Before public void setUP() throws IOException {
+ @BeforeEach
+ public void setUP() throws IOException {
app = new App("test", new File("src/test/testCases/runTransforms/WEB-INF/app.conf"));
api = app.getA(API.class);
app.startup();
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/transformedQuery/TestTransformations.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/transformedQuery/TestTransformations.java
index 7492211..6fa66b7 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/transformedQuery/TestTransformations.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/transformedQuery/TestTransformations.java
@@ -7,14 +7,14 @@
package com.epimorphics.simpleAPI.transformedQuery;
import static com.epimorphics.util.Asserts.assertContains;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.File;
import java.io.IOException;
import org.apache.jena.shared.PrefixMapping;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import com.epimorphics.appbase.core.App;
import com.epimorphics.simpleAPI.core.API;
@@ -31,7 +31,8 @@ public class TestTransformations {
App app;
API api;
- @Before public void setUP() throws IOException {
+ @BeforeEach
+ public void setUP() throws IOException {
app = new App("test", new File("src/test/testCases/testTransforms/WEB-INF/app.conf"));
api = app.getA(API.class);
app.startup();
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/util/TestJsonComparator.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/util/TestJsonComparator.java
index 7654597..0c41c74 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/util/TestJsonComparator.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/util/TestJsonComparator.java
@@ -11,9 +11,9 @@
import org.apache.jena.atlas.json.JSON;
import org.apache.jena.atlas.json.JsonValue;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
public class TestJsonComparator {
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/TestBaseEndToEnd.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/TestBaseEndToEnd.java
index 6f745ba..f6c1c44 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/TestBaseEndToEnd.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/TestBaseEndToEnd.java
@@ -9,16 +9,17 @@
package com.epimorphics.simpleAPI.webapi;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.io.Console;
import java.io.IOException;
import java.io.InputStream;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.client.Entity;
+import jakarta.ws.rs.client.WebTarget;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
import org.apache.jena.atlas.json.JSON;
import org.apache.jena.atlas.json.JsonObject;
@@ -27,7 +28,7 @@
import org.apache.jena.riot.Lang;
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.util.FileManager;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import com.epimorphics.appbase.webapi.testing.TomcatTestBase;
import com.epimorphics.json.JsonUtil;
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/basetest/DefaultHandler.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/basetest/DefaultHandler.java
index 754894a..760d707 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/basetest/DefaultHandler.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/basetest/DefaultHandler.java
@@ -9,12 +9,12 @@
package com.epimorphics.simpleAPI.webapi.basetest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
import com.epimorphics.simpleAPI.webapi.EndpointsBase;
diff --git a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/basetest/SimpleList.java b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/basetest/SimpleList.java
index f66f0a5..fea6a52 100644
--- a/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/basetest/SimpleList.java
+++ b/sapi-lib/src/test/java/com/epimorphics/simpleAPI/webapi/basetest/SimpleList.java
@@ -9,13 +9,13 @@
package com.epimorphics.simpleAPI.webapi.basetest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
import com.epimorphics.simpleAPI.query.QueryBuilder;
import com.epimorphics.simpleAPI.query.impl.SparqlQueryBuilder;
diff --git a/sapi-lib/src/test/resources/log4j.properties b/sapi-lib/src/test/resources/log4j.properties
deleted file mode 100644
index db98050..0000000
--- a/sapi-lib/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-log4j.rootLogger=INFO, stderr
-#log4j.rootLogger=INFO, FileLog, stdlog
-
-log4j.appender.stderr=org.apache.log4j.ConsoleAppender
-log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
-log4j.appender.stderr.layout.ConversionPattern=%d{MM-dd HH:mm:ss} %-5p %-20c{1} :: %m%n
-
-#log4j.appender.FileLog=org.apache.log4j.DailyRollingFileAppender
-#log4j.appender.FileLog.DatePattern='.'yyyy-MM-dd
-#log4j.appender.FileLog.File=/var/local/registry/log/registry.log
-#log4j.appender.FileLog.layout=org.apache.log4j.PatternLayout
-#log4j.appender.FileLog.layout.ConversionPattern=%d{MM-dd HH:mm:ss} %-5p %-20c{1} :: %m%n
-
-# log4j.logger.com.epimorphics.simpleAPI=DEBUG
diff --git a/sapi-lib/src/test/resources/logback-test.xml b/sapi-lib/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..1665e95
--- /dev/null
+++ b/sapi-lib/src/test/resources/logback-test.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ %d{HH:mm:ss} %-5p %-20c{1} :: %m%n
+
+
+
+
+
+
+