diff --git a/.github/actions/setup-java/action.yml b/.github/actions/setup-java/action.yml
index fa997d077e..f0684ca7fb 100644
--- a/.github/actions/setup-java/action.yml
+++ b/.github/actions/setup-java/action.yml
@@ -7,5 +7,5 @@ runs:
- uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287
with:
distribution: temurin
- java-version: '21'
+ java-version: '25'
cache: maven
diff --git a/README.md b/README.md
index 34a4349184..612be065d2 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ https://control-system-studio.readthedocs.io
## Requirements
- - [JDK21 or later, suggested is OpenJDK](https://adoptium.net/en-GB/temurin/releases?version=21).
+ - [JDK 25 or later, suggested is OpenJDK](https://adoptium.net/en-GB/temurin/releases?version=25).
- [maven 3.x](https://maven.apache.org/) or [ant](http://ant.apache.org/)
@@ -27,7 +27,7 @@ mvn clean verify -f dependencies/pom.xml
Define the JAVA_HOME environment variable to point to your Java installation directory.
Mac OS users should use something like:
```
-export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-21.0.11+10/Contents/Home
+export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25/Contents/Home
```
Verify through:
```
@@ -73,14 +73,14 @@ Download "Eclipse for Java Developers" from https://www.eclipse.org/downloads/pa
Start Eclipse like this:
- export JAVA_HOME=/path/to/your/jdk-21-or-later
+ export JAVA_HOME=/path/to/your/jdk-25-or-later
export PATH="$JAVA_HOME/bin:$PATH"
eclipse/eclipse -consoleLog
Check Eclipse Preferences:
- * Java, Installed JREs: JDK 21-or-later should be the default
- * Java, Compiler: JDK Compliance should be "21" or higher
+ * Java, Installed JREs: JDK 25-or-later should be the default
+ * Java, Compiler: JDK Compliance should be "25" or higher
### Use plain Java configuration
@@ -112,7 +112,7 @@ In Help/Eclipse Marketplace, search for Maven Integration for Eclipse Luna or ne
Use File/Import/Maven/Existing Maven Projects to import the phoebus source code.
There can be a compiler error because the "JRE System Library" in the Package Explorer shows "[J2SE-1.4]".
-Right click on the affected projects (greeting-app, probe), Build Path, Configure Build Path, Libraries, Edit the JRE System Library to use the Workspace default (jdk-21).
+Right click on the affected projects (greeting-app, probe), Build Path, Configure Build Path, Libraries, Edit the JRE System Library to use the Workspace default (jdk-25).
Restart Eclipse IDE.
Can now start product/src/main/java/org.phoebus.product/Launcher.java.
@@ -126,14 +126,14 @@ To import the project:
* Select the Phoebus directory
* Import project from external model: Maven
* Accept the default options and click Next twice
- * Ensure that the JDK is version 21 or above
+ * Ensure that the JDK is version 25 or above
* Change the project name to Phoebus and click finish
To run the Phoebus application:
* Run | Edit Configurations...
* Select + | Application
- * Module: Your JRE 21
+ * Module: Your JRE 25
* Classpath `-cp`: select `product` from drop-down
* Main class: `org.phoebus.product.Launcher`
* Set the name to Phoebus
@@ -145,7 +145,7 @@ To run the Phoebus application:
First download [NetBeans 9](https://netbeans.apache.org/download/nb90/nb90.html),
then the target platform as described above. After running NetBeans, select
-**Tools** ➜ **Java Platforms** and make sure that a Java 9 or 10 platform is set as
+**Tools** ➜ **Java Platforms** and make sure that a Java 25 platform is set as
the default one.
To open the Maven project Select the **File** ➜ **Open Project…** and select the
diff --git a/app/alarm/logging-ui/pom.xml b/app/alarm/logging-ui/pom.xml
index ef60ce77a6..4802274668 100644
--- a/app/alarm/logging-ui/pom.xml
+++ b/app/alarm/logging-ui/pom.xml
@@ -47,7 +47,7 @@
com.fasterxml.jackson.core
jackson-annotations
- ${jackson.version}
+ ${jackson.annotations.version}
com.fasterxml.jackson.core
diff --git a/app/channel/channelfinder/pom.xml b/app/channel/channelfinder/pom.xml
index 09a37a085b..5926add326 100644
--- a/app/channel/channelfinder/pom.xml
+++ b/app/channel/channelfinder/pom.xml
@@ -32,7 +32,7 @@
com.fasterxml.jackson.core
jackson-annotations
- ${jackson.version}
+ ${jackson.annotations.version}
diff --git a/app/email/ui/pom.xml b/app/email/ui/pom.xml
index 7bdf64957d..b729b1ac0e 100644
--- a/app/email/ui/pom.xml
+++ b/app/email/ui/pom.xml
@@ -41,6 +41,12 @@
+
+ org.testfx
+ openjfx-monocle
+ 21.0.2
+ test
+
org.junit.jupiter
junit-jupiter
diff --git a/app/logbook/olog/client-es/pom.xml b/app/logbook/olog/client-es/pom.xml
index d6e8ff6b1e..9ae60305e6 100644
--- a/app/logbook/olog/client-es/pom.xml
+++ b/app/logbook/olog/client-es/pom.xml
@@ -28,7 +28,7 @@
com.fasterxml.jackson.core
jackson-annotations
- ${jackson.version}
+ ${jackson.annotations.version}
com.fasterxml.jackson.core
diff --git a/app/logbook/olog/client/pom.xml b/app/logbook/olog/client/pom.xml
index 889f3a0ab2..47cea9e0b4 100644
--- a/app/logbook/olog/client/pom.xml
+++ b/app/logbook/olog/client/pom.xml
@@ -33,7 +33,7 @@
com.fasterxml.jackson.core
jackson-annotations
- ${jackson.version}
+ ${jackson.annotations.version}
diff --git a/app/logbook/ui/pom.xml b/app/logbook/ui/pom.xml
index 4ad5b7f8ab..7fc3a5e9a2 100644
--- a/app/logbook/ui/pom.xml
+++ b/app/logbook/ui/pom.xml
@@ -72,5 +72,11 @@
+
+ org.testfx
+ openjfx-monocle
+ 21.0.2
+ test
+
diff --git a/app/queue-server/README.md b/app/queue-server/README.md
index 38d478903e..3a5a6963aa 100644
--- a/app/queue-server/README.md
+++ b/app/queue-server/README.md
@@ -30,7 +30,7 @@ A JavaFX-based client for the [Bluesky QueueServer](https://blueskyproject.io/bl
### Prerequisites
-- **Java 21** or later
+- **Java 25** or later
- **Maven** (for building from source)
- **Bluesky Queue Server** running and accessible
diff --git a/core/ui/pom.xml b/core/ui/pom.xml
index 829217a20e..8991f74265 100644
--- a/core/ui/pom.xml
+++ b/core/ui/pom.xml
@@ -38,6 +38,12 @@
+
+ org.testfx
+ openjfx-monocle
+ 21.0.2
+ test
+
diff --git a/core/websocket/client/src/main/java/org/phoebus/core/websocket/client/WebSocketClientService.java b/core/websocket/client/src/main/java/org/phoebus/core/websocket/client/WebSocketClientService.java
index 34903d66b0..6691ba9a60 100644
--- a/core/websocket/client/src/main/java/org/phoebus/core/websocket/client/WebSocketClientService.java
+++ b/core/websocket/client/src/main/java/org/phoebus/core/websocket/client/WebSocketClientService.java
@@ -19,7 +19,8 @@
import org.springframework.web.socket.client.standard.StandardWebSocketClient;
import org.springframework.web.socket.messaging.WebSocketStompClient;
-import javax.websocket.DeploymentException;
+import jakarta.websocket.DeploymentException;
+
import java.lang.reflect.Type;
import java.net.URI;
import java.util.ArrayList;
@@ -151,7 +152,7 @@ public void connect() {
try {
synchronized (WebSocketClientService.this) {
if (attemptReconnect.get()) {
- stompSession = stompClient.connect(connectUrl, sessionHandler).get();
+ stompSession = stompClient.connectAsync(connectUrl, sessionHandler).get();
stompSession.subscribe(this.subscriptionEndpoint, new StompFrameHandler() {
@Override
public Type getPayloadType(StompHeaders headers) {
@@ -268,7 +269,7 @@ public static boolean checkAvailability(String webSocketConnectUrl) {
WebSocketClient webSocketClient = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(webSocketClient);
try {
- StompSession stompSession = stompClient.connect(webSocketConnectUrl, new StompSessionHandlerAdapter() {
+ StompSession stompSession = stompClient.connectAsync(webSocketConnectUrl, new StompSessionHandlerAdapter() {
@Override
public Type getPayloadType(StompHeaders headers) {
return super.getPayloadType(headers);
diff --git a/dependencies/phoebus-target/pom.xml b/dependencies/phoebus-target/pom.xml
index 659d0ee354..a53e3bc688 100644
--- a/dependencies/phoebus-target/pom.xml
+++ b/dependencies/phoebus-target/pom.xml
@@ -237,7 +237,7 @@
com.fasterxml.jackson.core
jackson-annotations
- ${jackson.version}
+ ${jackson.annotations.version}
com.fasterxml.jackson.core
diff --git a/phoebus-product/README.md b/phoebus-product/README.md
index 96fb1a4d96..9fe835569a 100644
--- a/phoebus-product/README.md
+++ b/phoebus-product/README.md
@@ -33,7 +33,7 @@ The following use cases have been verified:
#### Prerequisites
- * A working Phoebus build environment, i.e. JDK 11 and Maven.
+ * A working Phoebus build environment, i.e. JDK 25 and Maven.
* `jpackage` must be run on the same OS as the target OS, i.e. cross builds are not supported.
* JDK 14 or newer.
* On Windows you also need to install the "WiX" tools, available here: https://wixtoolset.org/.
@@ -51,7 +51,7 @@ The following use cases have been verified:
5. Determine a version for your application, in the following referred to as `app_version`.
6. For Window installers determine a menu group in which the application will be placed. If the group does not
exist, it will be created.
- 7. Identify the path to the Java 11 SDK. In the following referred to as ``. See below for additional
+ 7. Identify the path to the Java 25 SDK. In the following referred to as ``. See below for additional
information on the selecttion of target Java runtime.
##### `jpackage` build step 1
@@ -91,10 +91,9 @@ and MacOS at the European Spallation Source.
### Selection of target Java runtime
During build (step 1) a target Java runtime is specified. If this option (`--runtime-image`) is omitted, `jpackage` will
-bundle the Java runtime containing the `jpackage` tool, i.e. Java 14+. Tests on Windows shows that the
-target runtime selection may impact the end result, i.e. the Phoebus application installed from the msi file.
-For instance, while the Java runtime Adopt JDK 11.0.9 can be bundled into a working installation,
-Adopt JDK 11.0.12 will not work when Phoebus is launched. On MacOS Adopt JDK 11.0.12 works fine.
+bundle the Java runtime containing the `jpackage` tool, i.e. Java 14+. Tests on Windows show that the
+target runtime selection may impact the end result, i.e. the Phoebus application installed from the msi file.
+When preparing installers, validate the exact JDK 25 runtime you plan to bundle on each supported OS.
### Application signing
Starting from MacOS 13.2 (possibly from 13.0), installer packages must be signed for a hassle-free installation process.
@@ -112,4 +111,3 @@ Developer Program may request/create such certificates.
`
-
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 30d07547ae..9fea80398e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,11 +68,12 @@
7.0.11
1.0.8
1.0.8
- 21.0.7
+ 25.0.3
26.0.1
- 2.12.3
+ 2.21.2
+ 2.22
1.17
2.23.4
42.6.2
@@ -92,18 +93,18 @@
10.16.1.1
2.7.4b1
6.9.0.202403050737-r
- 21
- 21
+ 25
+ 25
5.18.4
1.26.1
5.3.22
- 2.7.18
+ 4.0.5
maven-compiler-plugin
- 3.6.2
+ 3.14.1
${maven.compiler.source}
${maven.compiler.target}
@@ -125,7 +126,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.0.0-M7
+ 3.2.5
**/*FXTest.java
@@ -135,7 +136,7 @@
org.apache.maven.plugins
maven-failsafe-plugin
- 2.22.0
+ 3.2.5
${skipITTests}
@@ -251,6 +252,9 @@
true
glass
true
+ Monocle
+ Headless
+ 1920x1080-32
sw
t2k
2500
@@ -291,7 +295,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.0.0-M7
+ 3.2.5
true
diff --git a/services/alarm-config-logger/pom.xml b/services/alarm-config-logger/pom.xml
index 80fa30cfc0..c5c214b00c 100644
--- a/services/alarm-config-logger/pom.xml
+++ b/services/alarm-config-logger/pom.xml
@@ -6,7 +6,7 @@
6.0.0-SNAPSHOT
- 21
+ 25
service-alarm-config-logger
${project.groupId}:${project.artifactId}
diff --git a/services/alarm-logger/Dockerfile b/services/alarm-logger/Dockerfile
index e6fb2d6328..2e40bef12c 100644
--- a/services/alarm-logger/Dockerfile
+++ b/services/alarm-logger/Dockerfile
@@ -1,4 +1,4 @@
-FROM eclipse-temurin:21-jre
+FROM eclipse-temurin:25-jre
# deployment unit
COPY target/service-alarm-logger-*.jar /alarmlogger/service-alarm-logger-*.jar
diff --git a/services/alarm-logger/pom.xml b/services/alarm-logger/pom.xml
index f5acedffd4..2fa9991bab 100644
--- a/services/alarm-logger/pom.xml
+++ b/services/alarm-logger/pom.xml
@@ -1,4 +1,5 @@
-
+
4.0.0
org.phoebus
@@ -6,7 +7,7 @@
6.0.0-SNAPSHOT
- 21
+ 25
8.2.0
service-alarm-logger
@@ -37,14 +38,14 @@
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
org.springframework.boot
@@ -89,7 +90,7 @@
com.fasterxml.jackson.core
jackson-annotations
- ${jackson.version}
+ ${jackson.annotations.version}
com.fasterxml.jackson.datatype
@@ -137,7 +138,11 @@
-
+
+ org.springframework.boot
+ spring-boot-starter-webmvc-test
+ test
+
org.junit.jupiter
junit-jupiter
@@ -193,7 +198,8 @@
- SPRING_MVC
+ SPRING_MVC
+
json
diff --git a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/purge/ElasticIndexPurger.java b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/purge/ElasticIndexPurger.java
index 9b2a9fbfaf..6d16f2bbe6 100644
--- a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/purge/ElasticIndexPurger.java
+++ b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/purge/ElasticIndexPurger.java
@@ -38,7 +38,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
import java.io.IOException;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
diff --git a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java
index 771a594186..6e49d24b89 100644
--- a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java
+++ b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java
@@ -22,7 +22,7 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ResponseStatusException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedHashMap;
diff --git a/services/alarm-logger/src/test/java/org/phoebus/alarm/logging/rest/SearchControllerTest.java b/services/alarm-logger/src/test/java/org/phoebus/alarm/logging/rest/SearchControllerTest.java
index 83400e8b9c..93b7688e02 100644
--- a/services/alarm-logger/src/test/java/org/phoebus/alarm/logging/rest/SearchControllerTest.java
+++ b/services/alarm-logger/src/test/java/org/phoebus/alarm/logging/rest/SearchControllerTest.java
@@ -7,7 +7,7 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.servlet.MockMvc;
diff --git a/services/alarm-server/Dockerfile b/services/alarm-server/Dockerfile
index 1ba2b6d146..e722090991 100644
--- a/services/alarm-server/Dockerfile
+++ b/services/alarm-server/Dockerfile
@@ -1,4 +1,4 @@
-FROM eclipse-temurin:21-jre
+FROM eclipse-temurin:25-jre
# deployment unit
COPY target/service-alarm-server-*.jar /alarmserver/service-alarm-server-*.jar
diff --git a/services/save-and-restore/Dockerfile b/services/save-and-restore/Dockerfile
index 3e153dd093..de05f0180a 100644
--- a/services/save-and-restore/Dockerfile
+++ b/services/save-and-restore/Dockerfile
@@ -1,4 +1,4 @@
-FROM eclipse-temurin:21-jre
+FROM eclipse-temurin:25-jre
# deployment unit
COPY target/service-save-and-restore-*.jar /saveandrestore/service-save-and-restore-*.jar
diff --git a/services/save-and-restore/README.md b/services/save-and-restore/README.md
index 19ad7578ba..ae1d1cff3e 100644
--- a/services/save-and-restore/README.md
+++ b/services/save-and-restore/README.md
@@ -4,7 +4,7 @@ The save-and-restore service implements service as a collection
of REST endpoints. These can be used by clients to manage configurations (aka save sets) and
snapshots, to compare snapshots and to restore PV values from snapshots.
-The service is packaged as a self-contained Spring Boot jar file. External dependencies are limited to a JVM (Java 21+)
+The service is packaged as a self-contained Spring Boot jar file. External dependencies are limited to a JVM (Java 25+)
and a running instance of Elasticsearch (8.x).
# Build
diff --git a/services/save-and-restore/doc/index.rst b/services/save-and-restore/doc/index.rst
index a4f0800ea7..55e8128741 100644
--- a/services/save-and-restore/doc/index.rst
+++ b/services/save-and-restore/doc/index.rst
@@ -5,7 +5,7 @@ The save-and-restore service implements service as a collection
of REST endpoints. These can be used by clients to manage configurations (aka save sets) and
snapshots, to compare snapshots and to restore PV values from snapshots.
-The service is packaged as a self-contained Spring Boot jar file. External dependencies are limited to a JVM (Java 21+)
+The service is packaged as a self-contained Spring Boot jar file. External dependencies are limited to a JVM (Java 25+)
and a running instance of Elasticsearch (8.x).
Running the service
diff --git a/services/save-and-restore/pom.xml b/services/save-and-restore/pom.xml
index 61f8a0aca1..42ee05cdb4 100644
--- a/services/save-and-restore/pom.xml
+++ b/services/save-and-restore/pom.xml
@@ -1,263 +1,269 @@
-
- 4.0.0
+
+ 4.0.0
-
- org.phoebus
- services
- 6.0.0-SNAPSHOT
-
+
+ org.phoebus
+ services
+ 6.0.0-SNAPSHOT
+
- org.phoebus
- service-save-and-restore
+ org.phoebus
+ service-save-and-restore
${project.groupId}:${project.artifactId}
6.0.0-SNAPSHOT
-
- 4.4
- 8.2.0
-
+
+ 4.4
+ 8.2.0
+
-
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring.boot.version}
- pom
- import
-
-
-
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring.boot.version}
+ pom
+ import
+
+
+
-
+
-
-
- org.mockito
- mockito-core
- ${mockito.version}
- test
-
+
+
+ org.mockito
+ mockito-core
+ ${mockito.version}
+ test
+
-
- org.springframework.boot
- spring-boot-starter-data-elasticsearch
-
+
+ org.springframework.boot
+ spring-boot-starter-data-elasticsearch
+
-
- co.elastic.clients
- elasticsearch-java
- ${elasticsearch.version}
-
+
+ co.elastic.clients
+ elasticsearch-java
+ ${elasticsearch.version}
+
-
- org.springdoc
- springdoc-openapi-ui
- 1.7.0
-
+
+ org.springdoc
+ springdoc-openapi-ui
+ 1.7.0
+
-
- org.phoebus
- save-and-restore-model
- 6.0.0-SNAPSHOT
-
+
+ org.phoebus
+ save-and-restore-model
+ 6.0.0-SNAPSHOT
+
-
- org.phoebus
- save-and-restore-util
- 6.0.0-SNAPSHOT
-
+
+ org.phoebus
+ save-and-restore-util
+ 6.0.0-SNAPSHOT
+
-
- org.phoebus
- core-pv-pva
- 6.0.0-SNAPSHOT
-
-
- org.phoebus
- core-pv-ca
- 6.0.0-SNAPSHOT
-
+
+ org.phoebus
+ core-pv-pva
+ 6.0.0-SNAPSHOT
+
+
+ org.phoebus
+ core-pv-ca
+ 6.0.0-SNAPSHOT
+
-
- org.phoebus
- core-websocket-common
- 6.0.0-SNAPSHOT
-
+
+ org.phoebus
+ core-websocket-common
+ 6.0.0-SNAPSHOT
+
-
- org.apache.logging.log4j
- log4j-api
- 2.23.1
-
-
- org.apache.logging.log4j
- log4j-core
- 2.23.1
-
+
+ org.apache.logging.log4j
+ log4j-api
+ 2.23.1
+
+
+ org.apache.logging.log4j
+ log4j-core
+ 2.23.1
+
-
- org.springframework.boot
- spring-boot-starter
-
+
+ org.springframework.boot
+ spring-boot-starter
+
-
- org.springframework.boot
- spring-boot-starter-web
-
+
+ org.springframework.boot
+ spring-boot-starter-web
+
-
- org.springframework.boot
- spring-boot-starter-security
-
+
+ org.springframework.boot
+ spring-boot-starter-security
+
-
- org.springframework.ldap
- spring-ldap-core
-
-
- org.springframework.security
- spring-security-ldap
-
-
- com.unboundid
- unboundid-ldapsdk
-
-
- org.springframework.security
- spring-security-test
-
+
+ org.springframework.ldap
+ spring-ldap-core
+
+
+ org.springframework.security
+ spring-security-ldap
+
+
+ com.unboundid
+ unboundid-ldapsdk
+
+
+ org.springframework.security
+ spring-security-test
+
-
- org.springframework.boot
- spring-boot-starter-actuator
-
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
-
- jakarta.json
- jakarta.json-api
- 2.0.1
-
+
+ jakarta.json
+ jakarta.json-api
+ 2.0.1
+
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
- org.apache.logging.log4j
- log4j-to-slf4j
-
-
-
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
+ org.apache.logging.log4j
+ log4j-to-slf4j
+
+
+
-
-
- org.glassfish
- javax.json
- 1.1.4
-
+
+
+ org.glassfish
+ javax.json
+ 1.1.4
+
-
-
- org.springframework
- spring-tx
-
+
+
+ org.springframework
+ spring-tx
+
-
- org.springframework.boot
- spring-boot-configuration-processor
- true
-
-
- org.springframework
- spring-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+ org.springframework
+ spring-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-webmvc-test
+ test
+
-
-
- org.apache.commons
- commons-collections4
- ${commons.collections.version}
-
+
+
+ org.apache.commons
+ commons-collections4
+ ${commons.collections.version}
+
-
+
-
-
-
- src/main/resources
- true
-
-
-
-
-
- maven-failsafe-plugin
-
-
- IT
-
-
-
-
-
+
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ maven-failsafe-plugin
+
+
+ IT
+
+
+
+
+
-
-
- integration-tests
-
-
-
- maven-failsafe-plugin
- 2.22.0
-
-
-
- integration-test
- verify
-
-
-
-
-
-
-
+
+
+ integration-tests
+
+
+
+ maven-failsafe-plugin
+ 2.22.0
+
+
+
+ integration-test
+ verify
+
+
+
+
+
+
+
-
-
- executable-jar
-
-
- !skip-executable-jar
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring.boot.version}
-
-
-
- repackage
-
-
-
-
-
-
-
-
+
+
+ executable-jar
+
+
+ !skip-executable-jar
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring.boot.version}
+
+
+
+ repackage
+
+
+
+
+
+
+
+
diff --git a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/AcceptHeaderResolver.java b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/AcceptHeaderResolver.java
index 17c9a8c9f0..1389682451 100644
--- a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/AcceptHeaderResolver.java
+++ b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/AcceptHeaderResolver.java
@@ -20,7 +20,7 @@
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
diff --git a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/WebConfiguration.java b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/WebConfiguration.java
index 63fe8a2dc1..1530c661f3 100644
--- a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/WebConfiguration.java
+++ b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/WebConfiguration.java
@@ -27,7 +27,7 @@
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.Scope;
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
diff --git a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/WebSecurityConfig.java b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/WebSecurityConfig.java
index 8b2bad60d2..4341a3f36d 100644
--- a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/WebSecurityConfig.java
+++ b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/config/WebSecurityConfig.java
@@ -11,10 +11,12 @@
import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
import org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl;
import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.ObjectPostProcessor;
+import org.springframework.security.authentication.ProviderManager;
+import org.springframework.security.config.Customizer;
+import org.springframework.security.config.ObjectPostProcessor;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.authentication.configurers.ldap.LdapAuthenticationProviderConfigurer;
-import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
@@ -35,7 +37,7 @@
*/
@Configuration
@EnableWebSecurity
-@EnableGlobalMethodSecurity(prePostEnabled = true)
+@EnableMethodSecurity(prePostEnabled = true)
@SuppressWarnings("unused")
public class WebSecurityConfig {
@@ -188,8 +190,8 @@ public String authenticationImplementation(){
public WebSecurityCustomizer ignoringCustomizer() {
return web -> {
// The below lists exceptions for authentication.
- web.ignoring().antMatchers(HttpMethod.GET, "/**");
- web.ignoring().antMatchers(HttpMethod.POST, "/**/login*");
+ web.ignoring().requestMatchers(HttpMethod.GET, "/**");
+ web.ignoring().requestMatchers(HttpMethod.POST, "/**/login*");
};
}
@@ -201,9 +203,9 @@ public WebSecurityCustomizer ignoringCustomizer() {
*/
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
- http.csrf().disable();
- http.authorizeRequests().anyRequest().authenticated();
- http.httpBasic();
+ http.csrf(csrf -> csrf.disable());
+ http.authorizeHttpRequests(auth -> auth.anyRequest().authenticated());
+ http.httpBasic(Customizer.withDefaults());
return http.build();
}
@@ -284,12 +286,7 @@ public AuthenticationManager authenticationProvider() throws Exception {
SimpleAuthorityMapper simpleAuthorityMapper = new SimpleAuthorityMapper();
simpleAuthorityMapper.setConvertToUpperCase(true);
adProvider.setAuthoritiesMapper(simpleAuthorityMapper);
- return new AuthenticationManagerBuilder(new ObjectPostProcessor<>() {
- @Override
- public O postProcess(O object) {
- return object;
- }
- }).authenticationProvider(adProvider).build();
+ return new ProviderManager(adProvider);
}
/**
@@ -346,9 +343,7 @@ public ObjectMapper objectMapper() {
*/
@Bean
public RoleHierarchy roleHierarchy() {
- RoleHierarchyImpl hierarchy = new RoleHierarchyImpl();
- hierarchy.setHierarchy("ROLE_" + roleAdmin.toUpperCase() + " > ROLE_" + roleUser.toUpperCase());
- return hierarchy;
+ return RoleHierarchyImpl.fromHierarchy("ROLE_" + roleAdmin.toUpperCase() + " > ROLE_" + roleUser.toUpperCase());
}
/**
diff --git a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/AuthenticationController.java b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/AuthenticationController.java
index 7a87af6a8e..6e21c1ebf6 100644
--- a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/AuthenticationController.java
+++ b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/AuthenticationController.java
@@ -62,14 +62,10 @@ public ResponseEntity login(@RequestBody LoginCredentials loginCredent
authentication = authenticationManager.authenticate(authentication);
} catch (AuthenticationException e) {
Logger.getLogger(AuthenticationController.class.getName()).log(Level.WARNING, "Unable to authenticate user " + loginCredentials.username(), e);
- return new ResponseEntity<>(
- null,
- HttpStatus.UNAUTHORIZED);
+ return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
List roles = authentication.getAuthorities().stream()
.map(GrantedAuthority::getAuthority).collect(Collectors.toList());
- return new ResponseEntity<>(
- new UserData(loginCredentials.username(), roles),
- HttpStatus.OK);
+ return ResponseEntity.ok(new UserData(loginCredentials.username(), roles));
}
}
diff --git a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/BaseController.java b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/BaseController.java
index d031cb6e1b..b732ed5c6c 100644
--- a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/BaseController.java
+++ b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/BaseController.java
@@ -25,8 +25,8 @@
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestController;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.logging.Level;
import java.util.logging.Logger;
diff --git a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/HelpResource.java b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/HelpResource.java
index 5b8d8b8697..64359e43db 100644
--- a/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/HelpResource.java
+++ b/services/save-and-restore/src/main/java/org/phoebus/service/saveandrestore/web/controllers/HelpResource.java
@@ -28,7 +28,7 @@
import org.springframework.web.server.ResponseStatusException;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
diff --git a/services/save-and-restore/src/main/resources/application.properties b/services/save-and-restore/src/main/resources/application.properties
index d13649fb50..76fa6da258 100644
--- a/services/save-and-restore/src/main/resources/application.properties
+++ b/services/save-and-restore/src/main/resources/application.properties
@@ -29,9 +29,9 @@ server.servlet.contextPath=/save-restore
# The names of the index to use for save&restore
elasticsearch.tree_node.index=saveandrestore_tree
elasticsearch.configuration_node.index=saveandrestore_configuration
-elasticsearch.snapshot_node.index:saveandrestore_snapshot
-elasticsearch.composite_snapshot_node.index:saveandrestore_composite_snapshot
-elasticsearch.filter.index:saveandrestore_filter
+elasticsearch.snapshot_node.index=saveandrestore_snapshot
+elasticsearch.composite_snapshot_node.index=saveandrestore_composite_snapshot
+elasticsearch.filter.index=saveandrestore_filter
############################## REST Logging ###############################
# DEBUG level will log all requests and responses to and from the REST end points
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/config/ControllersTestConfig.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/config/ControllersTestConfig.java
index a6e5bc57af..6c61e75060 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/config/ControllersTestConfig.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/config/ControllersTestConfig.java
@@ -36,10 +36,11 @@
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.messaging.simp.user.SimpUserRegistry;
import org.springframework.mock.web.MockServletContext;
-import org.springframework.util.Base64Utils;
import org.springframework.web.socket.WebSocketSession;
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -111,17 +112,17 @@ public SearchUtil searchUtil() {
@Bean("userAuthorization")
public String userAuthorization() {
- return "Basic " + Base64Utils.encodeToString((demoUser + ":" + demoUserPassword).getBytes());
+ return "Basic " + Base64.getEncoder().encodeToString((demoUser + ":" + demoUserPassword).getBytes(StandardCharsets.UTF_8));
}
@Bean("adminAuthorization")
public String adminAuthorization() {
- return "Basic " + Base64Utils.encodeToString((demoAdmin + ":" + demoAdminPassword).getBytes());
+ return "Basic " + Base64.getEncoder().encodeToString((demoAdmin + ":" + demoAdminPassword).getBytes(StandardCharsets.UTF_8));
}
@Bean("readOnlyAuthorization")
public String readOnlyAuthorization() {
- return "Basic " + Base64Utils.encodeToString((demoReadOnly + ":" + demoReadOnlyPassword).getBytes());
+ return "Basic " + Base64.getEncoder().encodeToString((demoReadOnly + ":" + demoReadOnlyPassword).getBytes(StandardCharsets.UTF_8));
}
@Bean
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/AppMetaDataControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/AppMetaDataControllerTest.java
index 142d9e90da..329555b26e 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/AppMetaDataControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/AppMetaDataControllerTest.java
@@ -24,7 +24,7 @@
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
import org.springframework.test.context.TestPropertySource;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ComparisonControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ComparisonControllerTest.java
index 2b4afe25f8..c656d8f924 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ComparisonControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ComparisonControllerTest.java
@@ -24,7 +24,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
import org.springframework.test.context.TestPropertySource;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/CompositeSnapshotControllerPermitAllTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/CompositeSnapshotControllerPermitAllTest.java
index eacf21be4c..4f83ad9845 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/CompositeSnapshotControllerPermitAllTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/CompositeSnapshotControllerPermitAllTest.java
@@ -32,7 +32,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/CompositeSnapshotControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/CompositeSnapshotControllerTest.java
index a11883801d..8fe6ef80c6 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/CompositeSnapshotControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/CompositeSnapshotControllerTest.java
@@ -37,7 +37,7 @@
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.phoebus.service.saveandrestore.websocket.WebSocketService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ConfigurationControllerPermitAllTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ConfigurationControllerPermitAllTest.java
index d6d6e64b9b..531d6d7d56 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ConfigurationControllerPermitAllTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ConfigurationControllerPermitAllTest.java
@@ -32,7 +32,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ConfigurationControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ConfigurationControllerTest.java
index 32e517f171..b58a376bba 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ConfigurationControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/ConfigurationControllerTest.java
@@ -37,7 +37,7 @@
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.phoebus.service.saveandrestore.websocket.WebSocketService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/FilterControllerPermitAllTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/FilterControllerPermitAllTest.java
index 37746e5b8c..1a02e2dfea 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/FilterControllerPermitAllTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/FilterControllerPermitAllTest.java
@@ -28,7 +28,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/FilterControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/FilterControllerTest.java
index 51258ebffe..891d2379da 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/FilterControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/FilterControllerTest.java
@@ -31,7 +31,7 @@
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.phoebus.service.saveandrestore.websocket.WebSocketService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/HelpResourceTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/HelpResourceTest.java
index 995e84570a..9adb982c27 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/HelpResourceTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/HelpResourceTest.java
@@ -24,7 +24,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
import org.springframework.test.context.TestPropertySource;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/NodeControllerPermitAllTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/NodeControllerPermitAllTest.java
index d646607194..3d3903aa91 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/NodeControllerPermitAllTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/NodeControllerPermitAllTest.java
@@ -28,7 +28,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/NodeControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/NodeControllerTest.java
index 65619d5142..61e7a2fa05 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/NodeControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/NodeControllerTest.java
@@ -42,7 +42,7 @@
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.phoebus.service.saveandrestore.websocket.WebSocketService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SearchControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SearchControllerTest.java
index 05113d1fb4..42a0c5098e 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SearchControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SearchControllerTest.java
@@ -33,7 +33,7 @@
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
import org.springframework.test.context.TestPropertySource;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotControllerPermitAllTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotControllerPermitAllTest.java
index b1ef17fa87..1c3d3117ae 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotControllerPermitAllTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotControllerPermitAllTest.java
@@ -31,7 +31,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotControllerTest.java
index 9b956fe7a3..62b5524417 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotControllerTest.java
@@ -34,7 +34,7 @@
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.phoebus.service.saveandrestore.websocket.WebSocketService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotRestorerControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotRestorerControllerTest.java
index e43d0c9eaa..cf85bdbe95 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotRestorerControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/SnapshotRestorerControllerTest.java
@@ -18,7 +18,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/StructureControllerPermitAllTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/StructureControllerPermitAllTest.java
index 02344101a7..74cc892750 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/StructureControllerPermitAllTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/StructureControllerPermitAllTest.java
@@ -27,7 +27,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/StructureControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/StructureControllerTest.java
index bfc64a40fc..611d0516aa 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/StructureControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/StructureControllerTest.java
@@ -31,7 +31,7 @@
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.phoebus.service.saveandrestore.websocket.WebSocketService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TagControllerPermitAllTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TagControllerPermitAllTest.java
index df0f938952..0984f23e3f 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TagControllerPermitAllTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TagControllerPermitAllTest.java
@@ -29,7 +29,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TagControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TagControllerTest.java
index f3dbd629de..731e730f4a 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TagControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TagControllerTest.java
@@ -29,7 +29,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
diff --git a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TakeSnapshotControllerTest.java b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TakeSnapshotControllerTest.java
index c8aef1b267..d910d2a453 100644
--- a/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TakeSnapshotControllerTest.java
+++ b/services/save-and-restore/src/test/java/org/phoebus/service/saveandrestore/web/controllers/TakeSnapshotControllerTest.java
@@ -15,7 +15,7 @@
import org.phoebus.service.saveandrestore.web.config.ControllersTestConfig;
import org.phoebus.service.saveandrestore.web.config.WebSecurityConfig;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.ContextHierarchy;
import org.springframework.test.context.TestPropertySource;
diff --git a/services/save-and-restore/src/test/resources/test_application.properties b/services/save-and-restore/src/test/resources/test_application.properties
index a1068517b7..a7e4886688 100644
--- a/services/save-and-restore/src/test/resources/test_application.properties
+++ b/services/save-and-restore/src/test/resources/test_application.properties
@@ -17,8 +17,8 @@ spring.jackson.serialization.write-dates-as-timestamps=false
# The names of the index to use for save&restore
elasticsearch.tree_node.index=test_saveandrestore_tree
elasticsearch.configuration_node.index=test_saveandrestore_configuration
-elasticsearch.snapshot_node.index:test_saveandrestore_snapshot
+elasticsearch.snapshot_node.index=test_saveandrestore_snapshot
elasticsearch.composite_snapshot_node.index=test_saveandrestore_composite_snapshot
-elasticsearch.filter.index:test_saveandrestore_filter
+elasticsearch.filter.index=test_saveandrestore_filter
diff --git a/services/scan-server/Dockerfile b/services/scan-server/Dockerfile
index 6df044c70f..c4f532a839 100644
--- a/services/scan-server/Dockerfile
+++ b/services/scan-server/Dockerfile
@@ -1,4 +1,4 @@
-FROM eclipse-temurin:21-jre
+FROM eclipse-temurin:25-jre
# deployment unit
COPY target/service-scan-server-*.jar /scanserver/service-scan-server-*.jar