From 48f1d41bc63ede39d4b499094614ece4da12e46f Mon Sep 17 00:00:00 2001 From: Andrew Azores Date: Mon, 4 Dec 2023 13:43:23 -0500 Subject: [PATCH] fix(serialization): recording serialization properly converts recording state types --- .../SerializableRecordingDescriptor.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/cryostat/core/serialization/SerializableRecordingDescriptor.java b/src/main/java/io/cryostat/core/serialization/SerializableRecordingDescriptor.java index 70b0ada5..ec538124 100644 --- a/src/main/java/io/cryostat/core/serialization/SerializableRecordingDescriptor.java +++ b/src/main/java/io/cryostat/core/serialization/SerializableRecordingDescriptor.java @@ -67,7 +67,7 @@ public SerializableRecordingDescriptor(Recording recording) { this( recording.getId(), recording.getName(), - RecordingState.valueOf(recording.getState().name()), + mapRecordingStateState(recording.getState()), recording.getStartTime() == null ? 0 : recording.getStartTime().toEpochMilli(), recording.getDuration() == null ? 0 : recording.getDuration().toMillis(), recording.getDuration() == null, @@ -101,6 +101,25 @@ public SerializableRecordingDescriptor(SerializableRecordingDescriptor o) { this.maxAge = o.getMaxAge(); } + private static RecordingState mapRecordingStateState(jdk.jfr.RecordingState s) { + switch (s) { + case NEW: + return RecordingState.CREATED; + case DELAYED: + return RecordingState.CREATED; + case RUNNING: + return RecordingState.RUNNING; + case STOPPED: + return RecordingState.STOPPED; + case CLOSED: + return RecordingState.STOPPED; + default: + // better not to return null here for NPE safety, but this may not always be + // accurate + return RecordingState.CREATED; + } + } + public IRecordingDescriptor toJmcForm() { return new IRecordingDescriptor() {