diff --git a/src/main/java/io/cryostat/core/serialization/SerializableRecordingDescriptor.java b/src/main/java/io/cryostat/core/serialization/SerializableRecordingDescriptor.java index 70b0ada5..74eabcdc 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,26 @@ public SerializableRecordingDescriptor(SerializableRecordingDescriptor o) { this.maxAge = o.getMaxAge(); } + /** + * @see {@link org.openjdk.jmc.rjmx.services.jfr.internal.RecordingDescriptorV2#decideState} + */ + private static RecordingState mapRecordingStateState(jdk.jfr.RecordingState s) { + switch (s) { + case NEW: + return RecordingState.CREATED; + case DELAYED: + return RecordingState.RUNNING; + case RUNNING: + return RecordingState.RUNNING; + case STOPPED: + return RecordingState.STOPPED; + default: + // better not to return null here for NPE safety, but this may not always be + // accurate + return RecordingState.STOPPED; + } + } + public IRecordingDescriptor toJmcForm() { return new IRecordingDescriptor() {