From 0262c85ac0bc33a2ef94d511c88349d6d2a05088 Mon Sep 17 00:00:00 2001 From: Juan Navarro Date: Fri, 26 Nov 2021 12:27:24 +0100 Subject: [PATCH] openvidu-server: remove duplicated serialization of SessionProperties Let SessionProperties serialize itself, instead of doing it externally on the Session classes. --- .../java/io/openvidu/java/client/Session.java | 19 +++++++---------- .../java/client/SessionProperties.java | 4 ++-- .../java/io/openvidu/server/core/Session.java | 21 ++++++++++--------- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/Session.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/Session.java index 1fb2d396..6bd50536 100644 --- a/openvidu-java-client/src/main/java/io/openvidu/java/client/Session.java +++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/Session.java @@ -38,6 +38,7 @@ import org.slf4j.LoggerFactory; import com.google.gson.Gson; import com.google.gson.JsonArray; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; @@ -756,19 +757,15 @@ public class Session { JsonObject json = new JsonObject(); json.addProperty("sessionId", this.sessionId); json.addProperty("createdAt", this.createdAt); - json.addProperty("customSessionId", this.properties.customSessionId()); json.addProperty("recording", this.recording); - json.addProperty("mediaMode", this.properties.mediaMode().name()); - json.addProperty("recordingMode", this.properties.recordingMode().name()); - if (this.properties.defaultRecordingProperties() != null) { - json.add("defaultRecordingProperties", this.properties.defaultRecordingProperties().toJson()); - } - if (this.properties.forcedVideoCodec() != null) { - json.addProperty("forcedVideoCodec", this.properties.forcedVideoCodec().name()); - } - if (this.properties.isTranscodingAllowed() != null) { - json.addProperty("allowTranscoding", this.properties.isTranscodingAllowed()); + + // Add keys from SessionProperties + JsonObject sessionPropertiesJson = this.properties.toJson(); + for (Map.Entry entry : sessionPropertiesJson.entrySet()) { + json.add(entry.getKey(), entry.getValue().deepCopy()); } + + // Add "connections" object JsonObject connections = new JsonObject(); connections.addProperty("numberOfElements", this.getConnections().size()); JsonArray jsonArrayConnections = new JsonArray(); diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/SessionProperties.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/SessionProperties.java index 27d85638..10392c77 100644 --- a/openvidu-java-client/src/main/java/io/openvidu/java/client/SessionProperties.java +++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/SessionProperties.java @@ -236,13 +236,13 @@ public class SessionProperties { return this.allowTranscoding; } - protected JsonObject toJson() { + public JsonObject toJson() { JsonObject json = new JsonObject(); json.addProperty("mediaMode", mediaMode().name()); json.addProperty("recordingMode", recordingMode().name()); json.addProperty("customSessionId", customSessionId()); json.add("defaultRecordingProperties", defaultRecordingProperties.toJson()); - if (mediaNode() != null) { + if (mediaNode() != null && !mediaNode().isEmpty()) { JsonObject mediaNodeJson = new JsonObject(); mediaNodeJson.addProperty("id", mediaNode()); json.add("mediaNode", mediaNodeJson); diff --git a/openvidu-server/src/main/java/io/openvidu/server/core/Session.java b/openvidu-server/src/main/java/io/openvidu/server/core/Session.java index f5548b77..d19147ec 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/core/Session.java +++ b/openvidu-server/src/main/java/io/openvidu/server/core/Session.java @@ -19,6 +19,7 @@ package io.openvidu.server.core; import java.util.HashSet; import java.util.Iterator; +import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -32,6 +33,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.stream.Collectors; import com.google.gson.JsonArray; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import io.openvidu.client.OpenViduException; @@ -234,22 +236,21 @@ public class Session implements SessionInterface { json.addProperty("object", "session"); json.addProperty("sessionId", this.sessionId); // TODO: deprecated. Better use only "id" json.addProperty("createdAt", this.startTime); - json.addProperty("mediaMode", this.sessionProperties.mediaMode().name()); - json.addProperty("recordingMode", this.sessionProperties.recordingMode().name()); - json.add("defaultRecordingProperties", this.sessionProperties.defaultRecordingProperties().toJson()); - if (this.sessionProperties.customSessionId() != null) { - json.addProperty("customSessionId", this.sessionProperties.customSessionId()); + json.addProperty("recording", this.recordingManager.sessionIsBeingRecorded(this.sessionId)); + + // Add keys from SessionProperties + JsonObject sessionPropertiesJson = sessionProperties.toJson(); + for (Map.Entry entry : sessionPropertiesJson.entrySet()) { + json.add(entry.getKey(), entry.getValue().deepCopy()); } + + // Add "connections" object JsonObject connections = new JsonObject(); JsonArray participants = this.getSnapshotOfConnectionsAsJsonArray(withPendingConnections, withWebrtcStats); connections.addProperty("numberOfElements", participants.size()); connections.add("content", participants); json.add("connections", connections); - json.addProperty("recording", this.recordingManager.sessionIsBeingRecorded(this.sessionId)); - if (this.sessionProperties.forcedVideoCodec() != null) { - json.addProperty("forcedVideoCodec", this.sessionProperties.forcedVideoCodec().name()); - } - json.addProperty("allowTranscoding", this.sessionProperties.isTranscodingAllowed()); + return json; }