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..72c51962bb 100644 --- a/app/alarm/logging-ui/pom.xml +++ b/app/alarm/logging-ui/pom.xml @@ -40,24 +40,19 @@ compile - com.fasterxml.jackson.core + tools.jackson.core jackson-core - ${jackson.version} + ${tools.jackson.version} com.fasterxml.jackson.core jackson-annotations - ${jackson.version} + ${jackson.annotations.version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - ${jackson.version} - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - ${jackson.version} + ${tools.jackson.version} diff --git a/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogConfigSearchJob.java b/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogConfigSearchJob.java index f9e3d573bc..ca6140f4f6 100644 --- a/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogConfigSearchJob.java +++ b/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogConfigSearchJob.java @@ -1,8 +1,8 @@ package org.phoebus.applications.alarm.logging.ui; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; import org.phoebus.framework.jobs.Job; import org.phoebus.framework.jobs.JobManager; import org.phoebus.framework.jobs.JobRunnableWithCancel; diff --git a/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogSearchJob.java b/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogSearchJob.java index 39cf293b2e..f9f9c3b7a4 100644 --- a/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogSearchJob.java +++ b/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogSearchJob.java @@ -1,8 +1,8 @@ package org.phoebus.applications.alarm.logging.ui; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; import javafx.collections.ObservableMap; import org.phoebus.applications.alarm.logging.ui.AlarmLogTableQueryUtil.Keys; import org.phoebus.framework.jobs.Job; diff --git a/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableController.java b/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableController.java index 6c8800892a..45a6d11f6b 100644 --- a/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableController.java +++ b/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableController.java @@ -1,9 +1,8 @@ package org.phoebus.applications.alarm.logging.ui; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; import javafx.animation.Timeline; @@ -550,10 +549,6 @@ public void search() { private static final ObjectMapper objectMapper = new ObjectMapper(); - static { - objectMapper.registerModule(new JavaTimeModule()); - } - @FXML public void createContextMenu() { final ContextMenu contextMenu = new ContextMenu(); @@ -593,7 +588,7 @@ public void createContextMenu() { Object jsonObject = objectMapper.readValue(result.getConfig_msg(), Object.class); sb.append("config_msg: ").append(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject)).append(newLine); alarmInfo.setContentText(sb.toString()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { alarmInfo.setContentText(Messages.ConfigurationInfoNotFound); } } diff --git a/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableItem.java b/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableItem.java index 965fb986d7..53eb149cd5 100644 --- a/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableItem.java +++ b/app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTableItem.java @@ -2,13 +2,12 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.core.JacksonException; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.annotation.JsonDeserialize; -import java.io.IOException; import java.time.Instant; @JsonInclude(Include.NON_NULL) @@ -158,7 +157,7 @@ public AlarmInstantDeserializer() { } @Override - public Instant deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException { + public Instant deserialize(JsonParser p, DeserializationContext ctxt) throws JacksonException { return Instant.parse(p.getText()); } } diff --git a/app/alarm/model/pom.xml b/app/alarm/model/pom.xml index db18e6ac30..a1ead9c62d 100644 --- a/app/alarm/model/pom.xml +++ b/app/alarm/model/pom.xml @@ -21,19 +21,14 @@ test - com.fasterxml.jackson.core + tools.jackson.core jackson-core - ${jackson.version} + ${tools.jackson.version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - ${jackson.version} - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - ${jackson.version} + ${tools.jackson.version} org.apache.kafka diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmCommandMessage.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmCommandMessage.java index 43a761c6e5..10be786611 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmCommandMessage.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmCommandMessage.java @@ -15,7 +15,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; /** * @@ -108,7 +108,7 @@ public Map sourceMap() { public String toString() { try { return objectMapper.writeValueAsString(this); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { logger.log(Level.WARNING, "failed to parse the alarm command message ", e); } return ""; diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmConfigMessage.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmConfigMessage.java index e07451beb9..654bf4a4b6 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmConfigMessage.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmConfigMessage.java @@ -16,7 +16,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; /** * @@ -225,7 +225,7 @@ public boolean isLeaf() { public String toString() { try { return AlarmMessageUtil.objectConfigMapper.writeValueAsString(this); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { logger.log(Level.WARNING, "failed to parse the alarm config message ", e); } return ""; diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmDetail.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmDetail.java index a48b8e197b..ec4d2c608b 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmDetail.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmDetail.java @@ -5,7 +5,7 @@ import java.util.logging.Level; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; /** Alarm detail */ public class AlarmDetail { @@ -62,7 +62,7 @@ public void setDelay(int delay) { public String toString() { try { return objectMapper.writeValueAsString(this); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { logger.log(Level.WARNING, "failed to parse the alarm detail message ", e); } return ""; diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmMessage.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmMessage.java index f3a621f8ac..40da3bf019 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmMessage.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmMessage.java @@ -16,7 +16,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; /** * A message which describes both state and configuration events @@ -417,9 +417,9 @@ public void setDelete(String delete) { /** * @return json string representation of this object * - * @throws JsonProcessingException on error + * @throws JacksonException on error */ - public String toJson() throws JsonProcessingException { + public String toJson() throws JacksonException { if (isConfig()) { return objectConfigMapper.writeValueAsString(this); } else if (isState()){ @@ -433,7 +433,7 @@ public String toJson() throws JsonProcessingException { public String toString() { try { return toJson(); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { logger.log(Level.WARNING, "failed to parse the alarm message ", e); } return ""; diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmMessageUtil.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmMessageUtil.java index 3f1dc0b8e6..61ed6e1310 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmMessageUtil.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmMessageUtil.java @@ -3,9 +3,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.module.SimpleModule; import org.phoebus.applications.alarm.model.EnabledState; import java.io.Serializable; @@ -24,30 +24,26 @@ public class AlarmMessageUtil implements Serializable{ // Object mapper for the alarm state messages @JsonIgnore - static final ObjectMapper objectStateMapper = new ObjectMapper(); - static { - objectStateMapper.registerModule(new JavaTimeModule()); - objectStateMapper.addMixIn(AlarmMessageUtil.class, AlarmStateJsonMessage.class); - } + static final ObjectMapper objectStateMapper = JsonMapper.builder() + .addMixIn(AlarmMessageUtil.class, AlarmStateJsonMessage.class) + .build(); // Object mapper for the alarm config messages @JsonIgnore - static final ObjectMapper objectConfigMapper = new ObjectMapper(); + static final ObjectMapper objectConfigMapper; static { SimpleModule simple_module = new SimpleModule(); simple_module.addSerializer(new EnabledSerializer()); - objectConfigMapper.registerModule(new JavaTimeModule()); - objectConfigMapper.registerModule(simple_module); - objectConfigMapper.addMixIn(AlarmMessageUtil.class, AlarmConfigJsonMessage.class); + objectConfigMapper = JsonMapper.builder() + .addModule(simple_module) + .addMixIn(AlarmMessageUtil.class, AlarmConfigJsonMessage.class) + .build(); } // Object mapper for all other alarm messages @JsonIgnore static final ObjectMapper objectMapper = new ObjectMapper(); - static { - objectMapper.registerModule(new JavaTimeModule()); - } private static class AlarmStateJsonMessage { @JsonIgnore diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmStateMessage.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmStateMessage.java index 9acb5ba61b..78ae18f269 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmStateMessage.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmStateMessage.java @@ -14,7 +14,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; /** * A bean representing a alarm state message @@ -206,7 +206,7 @@ public Map sourceMap() { public String toString() { try { return AlarmMessageUtil.objectStateMapper.writeValueAsString(this); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { logger.log(Level.WARNING, "failed to parse the alarm state message ", e); } return ""; diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmTalkMessage.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmTalkMessage.java index 63aaacc90b..a392c1e161 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmTalkMessage.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/AlarmTalkMessage.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; /** Talk message */ @JsonInclude(Include.NON_NULL) @@ -56,7 +56,7 @@ public void setTalk(String talk) { public String toString() { try { return objectMapper.writeValueAsString(this); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { logger.log(Level.WARNING, "failed to parse the alarm talk message ", e); } return ""; diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/EnabledDeserializer.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/EnabledDeserializer.java index 054bd462d1..963baaeb88 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/EnabledDeserializer.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/EnabledDeserializer.java @@ -2,15 +2,13 @@ import static org.phoebus.applications.alarm.AlarmSystem.logger; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.core.ObjectCodec; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.deser.std.StdDeserializer; +import tools.jackson.core.JacksonException; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonNode; import java.time.format.DateTimeFormatter; -import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.time.LocalDateTime; @@ -39,9 +37,8 @@ public EnabledDeserializer(Class t) { } @Override - public EnabledState deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { - ObjectCodec oc = jp.getCodec(); - JsonNode jn = oc.readTree(jp); + public EnabledState deserialize(JsonParser jp, DeserializationContext ctxt) throws JacksonException { + JsonNode jn = ctxt.readTree(jp); // use pattern matching to determine whether boolean or datetime string if (jn != null) { diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/EnabledSerializer.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/EnabledSerializer.java index 3de43989ac..3cc184c103 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/EnabledSerializer.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/EnabledSerializer.java @@ -1,11 +1,10 @@ package org.phoebus.applications.alarm.messages; -import java.io.IOException; import org.phoebus.applications.alarm.model.EnabledState; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ser.std.StdSerializer; /** * Serializer used for writing varied date string/boolean enabled values @@ -22,15 +21,15 @@ public EnabledSerializer() { @Override public void serialize( - EnabledState enabled_state, JsonGenerator jgen, SerializerProvider provider) - throws IOException { + EnabledState enabled_state, JsonGenerator jgen, SerializationContext provider) + { jgen.writeStartObject(); if (enabled_state.enabled_date != null) { - jgen.writeStringField("enabled", enabled_state.getDateString()); + jgen.writeStringProperty("enabled", enabled_state.getDateString()); } else { - jgen.writeBooleanField("enabled", enabled_state.enabled); + jgen.writeBooleanProperty("enabled", enabled_state.enabled); } jgen.writeEndObject(); } diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/MessageParser.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/MessageParser.java index 90d65f04a9..bf1ff30834 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/MessageParser.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/messages/MessageParser.java @@ -7,8 +7,9 @@ import org.apache.kafka.common.serialization.Serializer; import org.phoebus.applications.alarm.model.EnabledState; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.module.SimpleModule; /** XML Message parser */ public class MessageParser implements Serializer, Deserializer { @@ -26,7 +27,7 @@ public MessageParser(Class tClass) { SimpleModule simple_module = new SimpleModule(); simple_module.addSerializer(EnabledState.class, new EnabledSerializer()); simple_module.addDeserializer(EnabledState.class, new EnabledDeserializer()); - objectMapper.registerModule(simple_module); + objectMapper = JsonMapper.builder().addModule(simple_module).build(); } @Override diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/model/json/JsonModelReader.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/model/json/JsonModelReader.java index 0f86d2ea5a..263887a15c 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/model/json/JsonModelReader.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/model/json/JsonModelReader.java @@ -29,8 +29,8 @@ import org.phoebus.applications.alarm.model.TitleDetail; import org.phoebus.applications.alarm.model.TitleDetailDelay; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.JsonNode; /** Read alarm model from JSON * @author Kay Kasemir @@ -52,7 +52,7 @@ public static Object parseJsonText(final String json_text) throws Exception { try ( - final JsonParser jp = JsonModelWriter.mapper.getFactory().createParser(json_text); + final JsonParser jp = JsonModelWriter.mapper.tokenStreamFactory().createParser(json_text); ) { return JsonModelWriter.mapper.readTree(jp); diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/model/json/JsonModelWriter.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/model/json/JsonModelWriter.java index 59242235a4..ffc5b91904 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/model/json/JsonModelWriter.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/model/json/JsonModelWriter.java @@ -20,8 +20,8 @@ import org.phoebus.applications.alarm.model.TitleDetail; import org.phoebus.applications.alarm.model.TitleDetailDelay; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.ObjectMapper; /** Write alarm model as JSON * @author Kay Kasemir @@ -51,38 +51,38 @@ public static byte[] toJsonBytes(final BasicState state, final boolean maintenan final ByteArrayOutputStream buf = new ByteArrayOutputStream(); try ( - JsonGenerator jg = mapper.getFactory().createGenerator(buf); + JsonGenerator jg = mapper.tokenStreamFactory().createGenerator(buf); ) { jg.writeStartObject(); - jg.writeStringField(JsonTags.SEVERITY, state.severity.name()); + jg.writeStringProperty(JsonTags.SEVERITY, state.severity.name()); if (state instanceof AlarmState) { final AlarmState as = (AlarmState) state; if (as.isLatched()) - jg.writeBooleanField(JsonTags.LATCH, true); + jg.writeBooleanProperty(JsonTags.LATCH, true); } if (state instanceof ClientState) { final ClientState as = (ClientState) state; - jg.writeStringField(JsonTags.MESSAGE, as.message); - jg.writeStringField(JsonTags.VALUE, as.value); + jg.writeStringProperty(JsonTags.MESSAGE, as.message); + jg.writeStringProperty(JsonTags.VALUE, as.value); { - jg.writeObjectFieldStart(JsonTags.TIME); - jg.writeNumberField(JsonTags.SECONDS, as.time.getEpochSecond()); - jg.writeNumberField(JsonTags.NANO, as.time.getNano()); + jg.writeObjectPropertyStart(JsonTags.TIME); + jg.writeNumberProperty(JsonTags.SECONDS, as.time.getEpochSecond()); + jg.writeNumberProperty(JsonTags.NANO, as.time.getNano()); jg.writeEndObject(); } - jg.writeStringField(JsonTags.CURRENT_SEVERITY, as.current_severity.name()); - jg.writeStringField(JsonTags.CURRENT_MESSAGE, as.current_message); + jg.writeStringProperty(JsonTags.CURRENT_SEVERITY, as.current_severity.name()); + jg.writeStringProperty(JsonTags.CURRENT_MESSAGE, as.current_message); } if (maintenance_mode) { - jg.writeStringField(JsonTags.MODE, JsonTags.MAINTENANCE); + jg.writeStringProperty(JsonTags.MODE, JsonTags.MAINTENANCE); } if (disable_notify) { - jg.writeBooleanField(JsonTags.NOTIFY, false); + jg.writeBooleanProperty(JsonTags.NOTIFY, false); } jg.writeEndObject(); } @@ -112,13 +112,13 @@ private static ByteArrayOutputStream toJson(final AlarmTreeItem item) throws final ByteArrayOutputStream buf = new ByteArrayOutputStream(); try ( - JsonGenerator jg = mapper.getFactory().createGenerator(buf); + JsonGenerator jg = mapper.tokenStreamFactory().createGenerator(buf); ) { jg.writeStartObject(); - jg.writeStringField(JsonTags.USER, IdentificationHelper.getUser()); - jg.writeStringField(JsonTags.HOST, IdentificationHelper.getHost()); + jg.writeStringProperty(JsonTags.USER, IdentificationHelper.getUser()); + jg.writeStringProperty(JsonTags.HOST, IdentificationHelper.getHost()); if (item instanceof AlarmTreeLeaf) writeLeafDetail(jg, (AlarmTreeLeaf) item); @@ -135,26 +135,26 @@ private static ByteArrayOutputStream toJson(final AlarmTreeItem item) throws private static void writeLeafDetail(final JsonGenerator jg, final AlarmTreeLeaf item) throws Exception { - jg.writeStringField(JsonTags.DESCRIPTION, item.getDescription()); + jg.writeStringProperty(JsonTags.DESCRIPTION, item.getDescription()); // if not enabled and not an enabled date, set false if ((! item.isEnabled()) && ( item.getEnabledDate() == null)) { - jg.writeBooleanField(JsonTags.ENABLED, false); + jg.writeBooleanProperty(JsonTags.ENABLED, false); } // if enabled date is populated, write string field if ( item.getEnabledDate() != null) { - jg.writeStringField(JsonTags.ENABLED, item.getEnabled().toString()); + jg.writeStringProperty(JsonTags.ENABLED, item.getEnabled().toString()); } if (! item.isLatching()) - jg.writeBooleanField(JsonTags.LATCHING, false); + jg.writeBooleanProperty(JsonTags.LATCHING, false); if (! item.isAnnunciating()) - jg.writeBooleanField(JsonTags.ANNUNCIATING, false); + jg.writeBooleanProperty(JsonTags.ANNUNCIATING, false); if (item.getDelay() > 0) - jg.writeNumberField(JsonTags.DELAY, item.getDelay()); + jg.writeNumberProperty(JsonTags.DELAY, item.getDelay()); if (item.getCount() > 0) - jg.writeNumberField(JsonTags.COUNT, item.getCount()); + jg.writeNumberProperty(JsonTags.COUNT, item.getCount()); if (! item.getFilter().isEmpty()) - jg.writeStringField(JsonTags.FILTER, item.getFilter()); + jg.writeStringProperty(JsonTags.FILTER, item.getFilter()); } private static void writeTitleDetail(final JsonGenerator jg, final String name, final List infos) throws Exception @@ -162,12 +162,12 @@ private static void writeTitleDetail(final JsonGenerator jg, final String name, if (infos.isEmpty()) return; - jg.writeArrayFieldStart(name); + jg.writeArrayPropertyStart(name); for (TitleDetail info : infos) { jg.writeStartObject(); - jg.writeStringField(JsonTags.TITLE, info.title); - jg.writeStringField(JsonTags.DETAILS, info.detail); + jg.writeStringProperty(JsonTags.TITLE, info.title); + jg.writeStringProperty(JsonTags.DETAILS, info.detail); jg.writeEndObject(); } jg.writeEndArray(); @@ -178,14 +178,14 @@ private static void writeTitleDetailDelay(final JsonGenerator jg, final String n if (infos.isEmpty()) return; - jg.writeArrayFieldStart(name); + jg.writeArrayPropertyStart(name); { for (TitleDetailDelay info : infos) { jg.writeStartObject(); - jg.writeStringField(JsonTags.TITLE, info.title); - jg.writeStringField(JsonTags.DETAILS, info.detail); - jg.writeNumberField(JsonTags.DELAY, info.delay); + jg.writeStringProperty(JsonTags.TITLE, info.title); + jg.writeStringProperty(JsonTags.DETAILS, info.detail); + jg.writeNumberProperty(JsonTags.DELAY, info.delay); jg.writeEndObject(); } } @@ -204,13 +204,13 @@ public static byte[] commandToBytes(final String cmd) throws Exception final ByteArrayOutputStream buf = new ByteArrayOutputStream(); try ( - JsonGenerator jg = mapper.getFactory().createGenerator(buf); + JsonGenerator jg = mapper.tokenStreamFactory().createGenerator(buf); ) { jg.writeStartObject(); - jg.writeStringField(JsonTags.USER, IdentificationHelper.getUser()); - jg.writeStringField(JsonTags.HOST, IdentificationHelper.getHost()); - jg.writeStringField(JsonTags.COMMAND, cmd); + jg.writeStringProperty(JsonTags.USER, IdentificationHelper.getUser()); + jg.writeStringProperty(JsonTags.HOST, IdentificationHelper.getHost()); + jg.writeStringProperty(JsonTags.COMMAND, cmd); jg.writeEndObject(); } return buf.toByteArray(); @@ -257,13 +257,13 @@ public static String talkToString(final SeverityLevel severity, final String des final ByteArrayOutputStream buf = new ByteArrayOutputStream(); try ( - JsonGenerator jg = mapper.getFactory().createGenerator(buf); + JsonGenerator jg = mapper.tokenStreamFactory().createGenerator(buf); ) { jg.writeStartObject(); - jg.writeBooleanField(JsonTags.STANDOUT, standout); - jg.writeStringField(JsonTags.SEVERITY, severity.toString()); - jg.writeStringField(JsonTags.TALK, message); + jg.writeBooleanProperty(JsonTags.STANDOUT, standout); + jg.writeStringProperty(JsonTags.SEVERITY, severity.toString()); + jg.writeStringProperty(JsonTags.TALK, message); jg.writeEndObject(); } return buf.toString(); @@ -278,7 +278,7 @@ public static byte[] deleteMessageToBytes() throws Exception final ByteArrayOutputStream buf = new ByteArrayOutputStream(); try ( - JsonGenerator jg = mapper.getFactory().createGenerator(buf); + JsonGenerator jg = mapper.tokenStreamFactory().createGenerator(buf); ) { final String user = IdentificationHelper.getUser(); @@ -287,11 +287,12 @@ public static byte[] deleteMessageToBytes() throws Exception final String msg = "Deleting"; jg.writeStartObject(); - jg.writeStringField(JsonTags.USER, user); - jg.writeStringField(JsonTags.HOST, host); - jg.writeStringField(JsonTags.DELETE, msg); + jg.writeStringProperty(JsonTags.USER, user); + jg.writeStringProperty(JsonTags.HOST, host); + jg.writeStringProperty(JsonTags.DELETE, msg); jg.writeEndObject(); } return buf.toByteArray(); } } + diff --git a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/talk/TalkClient.java b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/talk/TalkClient.java index 72365d883b..46e17107d9 100644 --- a/app/alarm/model/src/main/java/org/phoebus/applications/alarm/talk/TalkClient.java +++ b/app/alarm/model/src/main/java/org/phoebus/applications/alarm/talk/TalkClient.java @@ -32,7 +32,7 @@ import org.phoebus.applications.alarm.model.json.JsonModelReader; import org.phoebus.applications.alarm.model.json.JsonTags; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.JsonNode; /** * Alarm Client Model for a *Talk topic. diff --git a/app/alarm/model/src/test/java/org/phoebus/applications/alarm/EnabledDeserializerTest.java b/app/alarm/model/src/test/java/org/phoebus/applications/alarm/EnabledDeserializerTest.java index 87bb1109de..145d1b08ed 100644 --- a/app/alarm/model/src/test/java/org/phoebus/applications/alarm/EnabledDeserializerTest.java +++ b/app/alarm/model/src/test/java/org/phoebus/applications/alarm/EnabledDeserializerTest.java @@ -4,8 +4,9 @@ import java.io.IOException; import org.phoebus.applications.alarm.model.EnabledState; import org.phoebus.applications.alarm.messages.EnabledDeserializer; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.module.SimpleModule; public class EnabledDeserializerTest { public static void DeserializerTest() throws IOException { @@ -16,7 +17,7 @@ public static void DeserializerTest() throws IOException { ObjectMapper mapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); module.addDeserializer(EnabledState.class, new EnabledDeserializer()); - mapper.registerModule(module); + mapper = JsonMapper.builder().addModule(module).build(); EnabledState readValue = mapper.readValue(json, EnabledState.class); } } 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/app/queue-server/network/pom.xml b/app/queue-server/network/pom.xml index c54eab4ab1..3a2bf65a60 100644 --- a/app/queue-server/network/pom.xml +++ b/app/queue-server/network/pom.xml @@ -27,7 +27,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-yaml - 2.19.1 + ${jackson.dataformat.version} org.python diff --git a/app/save-and-restore/model/pom.xml b/app/save-and-restore/model/pom.xml index d12ad82c47..48d932651f 100644 --- a/app/save-and-restore/model/pom.xml +++ b/app/save-and-restore/model/pom.xml @@ -59,18 +59,18 @@ ${vtype.version} - + - com.fasterxml.jackson.core + tools.jackson.core jackson-core - ${jackson.version} + ${tools.jackson.version} - + - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - ${jackson.version} + ${tools.jackson.version} diff --git a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/ComparisonResult.java b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/ComparisonResult.java index b158543364..947a6a6bc2 100644 --- a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/ComparisonResult.java +++ b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/ComparisonResult.java @@ -4,8 +4,8 @@ package org.phoebus.applications.saveandrestore.model; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import org.epics.vtype.VType; import org.phoebus.applications.saveandrestore.model.json.VTypeDeserializer; import org.phoebus.applications.saveandrestore.model.json.VTypeSerializer; diff --git a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/SnapshotItem.java b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/SnapshotItem.java index 101e56bb92..6369f63bc1 100644 --- a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/SnapshotItem.java +++ b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/SnapshotItem.java @@ -22,8 +22,8 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import org.epics.vtype.VType; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import org.phoebus.applications.saveandrestore.model.json.VTypeDeserializer; import org.phoebus.applications.saveandrestore.model.json.VTypeSerializer; diff --git a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/json/VTypeDeserializer.java b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/json/VTypeDeserializer.java index 490c25eb2e..d02641a204 100644 --- a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/json/VTypeDeserializer.java +++ b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/json/VTypeDeserializer.java @@ -19,16 +19,15 @@ package org.phoebus.applications.saveandrestore.model.json; import java.io.ByteArrayInputStream; -import java.io.IOException; import javax.json.Json; import javax.json.JsonReader; import org.epics.vtype.VType; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.deser.std.StdDeserializer; import org.epics.vtype.json.VTypeToJson; /** @@ -36,12 +35,16 @@ * @author georgweiss * Created 30 Nov 2018 */ -public class VTypeDeserializer extends JsonDeserializer { - +public class VTypeDeserializer extends StdDeserializer { + + public VTypeDeserializer() { + super(VType.class); + } + @Override public VType deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) - throws IOException { - String valueAsJson = jsonParser.getCodec().readTree(jsonParser).toString(); + { + String valueAsJson = deserializationContext.readTree(jsonParser).toString(); JsonReader jsonReader = null; try { jsonReader = Json.createReader(new ByteArrayInputStream(valueAsJson.getBytes())); diff --git a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/json/VTypeSerializer.java b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/json/VTypeSerializer.java index 28ab8f3a79..594ff74ddb 100644 --- a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/json/VTypeSerializer.java +++ b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/json/VTypeSerializer.java @@ -18,13 +18,11 @@ package org.phoebus.applications.saveandrestore.model.json; -import java.io.IOException; - import org.epics.vtype.VType; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ser.std.StdSerializer; import org.epics.vtype.json.VTypeToJson; /** @@ -32,10 +30,14 @@ * @author georgweiss * Created 30 Nov 2018 */ -public class VTypeSerializer extends JsonSerializer { +public class VTypeSerializer extends StdSerializer { + + public VTypeSerializer() { + super(VType.class); + } @Override - public void serialize(VType vType, JsonGenerator gen, SerializerProvider serializers) throws IOException { + public void serialize(VType vType, JsonGenerator gen, SerializationContext serializers) { String s = VTypeToJson.toJson(vType).toString(); gen.writeRawValue(s); } diff --git a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/websocket/SaveAndRestoreWebSocketMessageDeserializer.java b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/websocket/SaveAndRestoreWebSocketMessageDeserializer.java index 77ea7d4fbe..6e8e6096ec 100644 --- a/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/websocket/SaveAndRestoreWebSocketMessageDeserializer.java +++ b/app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/websocket/SaveAndRestoreWebSocketMessageDeserializer.java @@ -4,11 +4,11 @@ package org.phoebus.applications.saveandrestore.model.websocket; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.deser.std.StdDeserializer; import org.phoebus.applications.saveandrestore.model.Node; import org.phoebus.applications.saveandrestore.model.search.Filter; import org.phoebus.core.websocket.common.WebSocketMessage; @@ -36,7 +36,7 @@ public SaveAndRestoreWebSocketMessageDeserializer(Class clazz) { @Override public WebSocketMessage deserialize(JsonParser jsonParser, DeserializationContext context) { try { - JsonNode rootNode = jsonParser.getCodec().readTree(jsonParser); + JsonNode rootNode = context.readTree(jsonParser); SaveAndRestoreMessageType saveAndRestoreMessageType = SaveAndRestoreMessageType.valueOf(rootNode.get("messageType").asText()); JsonNode payload = rootNode.get("payload"); switch (saveAndRestoreMessageType) { diff --git a/app/save-and-restore/model/src/test/java/org/phoebus/applications/saveandrestore/model/json/JsonSerializationTest.java b/app/save-and-restore/model/src/test/java/org/phoebus/applications/saveandrestore/model/json/JsonSerializationTest.java index 322e244377..05fbf9da0d 100644 --- a/app/save-and-restore/model/src/test/java/org/phoebus/applications/saveandrestore/model/json/JsonSerializationTest.java +++ b/app/save-and-restore/model/src/test/java/org/phoebus/applications/saveandrestore/model/json/JsonSerializationTest.java @@ -18,7 +18,7 @@ package org.phoebus.applications.saveandrestore.model.json; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import org.epics.util.array.CollectionNumbers; import org.epics.vtype.Alarm; import org.epics.vtype.AlarmSeverity; diff --git a/app/save-and-restore/model/src/test/java/org/phoebus/applications/saveandrestore/model/websocket/SaveAndRestoreWebSocketMessageDeserializerTest.java b/app/save-and-restore/model/src/test/java/org/phoebus/applications/saveandrestore/model/websocket/SaveAndRestoreWebSocketMessageDeserializerTest.java index 8fd044000a..b6ba9c6254 100644 --- a/app/save-and-restore/model/src/test/java/org/phoebus/applications/saveandrestore/model/websocket/SaveAndRestoreWebSocketMessageDeserializerTest.java +++ b/app/save-and-restore/model/src/test/java/org/phoebus/applications/saveandrestore/model/websocket/SaveAndRestoreWebSocketMessageDeserializerTest.java @@ -4,9 +4,10 @@ package org.phoebus.applications.saveandrestore.model.websocket; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.module.SimpleModule; import org.junit.jupiter.api.Test; import org.phoebus.applications.saveandrestore.model.Node; import org.phoebus.applications.saveandrestore.model.search.Filter; @@ -23,7 +24,7 @@ public class SaveAndRestoreWebSocketMessageDeserializerTest { public SaveAndRestoreWebSocketMessageDeserializerTest(){ SimpleModule module = new SimpleModule(); module.addDeserializer(WebSocketMessage.class, new SaveAndRestoreWebSocketMessageDeserializer(WebSocketMessage.class)); - mapper.registerModule(module); + mapper = JsonMapper.builder().addModule(module).build(); } @Test 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..6df14ba9f3 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 @@ -541,7 +541,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-yaml - 2.19.1 + ${jackson.dataformat.version} 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..de47cd9386 100644 --- a/pom.xml +++ b/pom.xml @@ -68,11 +68,14 @@ 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 + 2.19.1 + 3.1.4 1.17 2.23.4 42.6.2 @@ -92,22 +95,23 @@ 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.1.0 maven-compiler-plugin - 3.6.2 + 3.14.1 ${maven.compiler.source} ${maven.compiler.target} true + true -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED @@ -125,7 +129,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M7 + 3.2.5 **/*FXTest.java @@ -135,7 +139,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 2.22.0 + 3.2.5 ${skipITTests} @@ -251,6 +255,9 @@ true glass true + Monocle + Headless + 1920x1080-32 sw t2k 2500 @@ -291,7 +298,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