diff --git a/openvidu-java-client/pom.xml b/openvidu-java-client/pom.xml
index ade4e10d..c28ea70a 100644
--- a/openvidu-java-client/pom.xml
+++ b/openvidu-java-client/pom.xml
@@ -65,32 +65,27 @@
-
+
+ org.apache.httpcomponents
+ httpclient
+ ${version.httpclient}
+
+
+ com.google.code.gson
+ gson
+ ${version.gson}
+
+
+ org.slf4j
+ slf4j-api
+ ${version.slf4j}
+
junit
junit
${version.junit}
test
-
-
- org.apache.httpcomponents
- httpclient
- ${version.httpclient}
-
-
-
- com.googlecode.json-simple
- json-simple
- ${version.json-simple}
-
-
-
- org.slf4j
- slf4j-api
- 1.7.26
-
-
diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/OpenVidu.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/OpenVidu.java
index d9005d93..5dc3c950 100644
--- a/openvidu-java-client/src/main/java/io/openvidu/java/client/OpenVidu.java
+++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/OpenVidu.java
@@ -37,6 +37,7 @@ import javax.net.ssl.SSLContext;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
+import org.apache.http.ParseException;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
@@ -52,13 +53,14 @@ import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.ssl.TrustStrategy;
import org.apache.http.util.EntityUtils;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonSyntaxException;
+
public class OpenVidu {
private static final Logger log = LoggerFactory.getLogger(OpenVidu.class);
@@ -187,25 +189,24 @@ public class OpenVidu {
* to false)
*
*/
- @SuppressWarnings("unchecked")
public Recording startRecording(String sessionId, RecordingProperties properties)
throws OpenViduJavaClientException, OpenViduHttpException {
HttpPost request = new HttpPost(this.hostname + API_RECORDINGS + API_RECORDINGS_START);
- JSONObject json = new JSONObject();
- json.put("session", sessionId);
- json.put("name", properties.name());
- json.put("outputMode", properties.outputMode().name());
- json.put("hasAudio", properties.hasAudio());
- json.put("hasVideo", properties.hasVideo());
+ JsonObject json = new JsonObject();
+ json.addProperty("session", sessionId);
+ json.addProperty("name", properties.name());
+ json.addProperty("outputMode", properties.outputMode().name());
+ json.addProperty("hasAudio", properties.hasAudio());
+ json.addProperty("hasVideo", properties.hasVideo());
if (Recording.OutputMode.COMPOSED.equals(properties.outputMode()) && properties.hasVideo()) {
- json.put("resolution", properties.resolution());
- json.put("recordingLayout",
+ json.addProperty("resolution", properties.resolution());
+ json.addProperty("recordingLayout",
(properties.recordingLayout() != null) ? properties.recordingLayout().name() : "");
if (RecordingLayout.CUSTOM.equals(properties.recordingLayout())) {
- json.put("customLayout", (properties.customLayout() != null) ? properties.customLayout() : "");
+ json.addProperty("customLayout", (properties.customLayout() != null) ? properties.customLayout() : "");
}
}
@@ -420,7 +421,6 @@ public class OpenVidu {
* @throws OpenViduJavaClientException
* @throws OpenViduHttpException
*/
- @SuppressWarnings("unchecked")
public List listRecordings() throws OpenViduJavaClientException, OpenViduHttpException {
HttpGet request = new HttpGet(this.hostname + API_RECORDINGS);
HttpResponse response;
@@ -434,10 +434,10 @@ public class OpenVidu {
int statusCode = response.getStatusLine().getStatusCode();
if ((statusCode == org.apache.http.HttpStatus.SC_OK)) {
List recordings = new ArrayList<>();
- JSONObject json = httpResponseToJson(response);
- JSONArray array = (JSONArray) json.get("items");
+ JsonObject json = httpResponseToJson(response);
+ JsonArray array = json.get("items").getAsJsonArray();
array.forEach(item -> {
- recordings.add(new Recording((JSONObject) item));
+ recordings.add(new Recording(item.getAsJsonObject()));
});
return recordings;
} else {
@@ -529,7 +529,6 @@ public class OpenVidu {
* @throws OpenViduHttpException
* @throws OpenViduJavaClientException
*/
- @SuppressWarnings("unchecked")
public boolean fetch() throws OpenViduJavaClientException, OpenViduHttpException {
HttpGet request = new HttpGet(this.hostname + API_SESSIONS);
@@ -543,19 +542,19 @@ public class OpenVidu {
try {
int statusCode = response.getStatusLine().getStatusCode();
if ((statusCode == org.apache.http.HttpStatus.SC_OK)) {
- JSONObject jsonSessions = httpResponseToJson(response);
- JSONArray jsonArraySessions = (JSONArray) jsonSessions.get("content");
+ JsonObject jsonSessions = httpResponseToJson(response);
+ JsonArray jsonArraySessions = jsonSessions.get("content").getAsJsonArray();
// Set to store fetched sessionIds and later remove closed sessions
Set fetchedSessionIds = new HashSet<>();
// Boolean to store if any Session has changed
final boolean[] hasChanged = { false };
jsonArraySessions.forEach(session -> {
- String sessionId = (String) ((JSONObject) session).get("sessionId");
+ String sessionId = (session.getAsJsonObject()).get("sessionId").getAsString();
fetchedSessionIds.add(sessionId);
this.activeSessions.computeIfPresent(sessionId, (sId, s) -> {
String beforeJSON = s.toJson();
- s = s.resetSessionWithJson((JSONObject) session);
+ s = s.resetSessionWithJson(session.getAsJsonObject());
String afterJSON = s.toJson();
boolean changed = !beforeJSON.equals(afterJSON);
hasChanged[0] = hasChanged[0] || changed;
@@ -565,7 +564,7 @@ public class OpenVidu {
this.activeSessions.computeIfAbsent(sessionId, sId -> {
log.info("New session '{}' fetched", sessionId);
hasChanged[0] = true;
- return new Session(this, (JSONObject) session);
+ return new Session(this, session.getAsJsonObject());
});
});
@@ -589,15 +588,13 @@ public class OpenVidu {
}
}
- private JSONObject httpResponseToJson(HttpResponse response) throws OpenViduJavaClientException {
- JSONParser parser = new JSONParser();
- JSONObject json;
+ private JsonObject httpResponseToJson(HttpResponse response) throws OpenViduJavaClientException {
try {
- json = (JSONObject) parser.parse(EntityUtils.toString(response.getEntity()));
- } catch (org.apache.http.ParseException | ParseException | IOException e) {
+ JsonObject json = JsonParser.parseString(EntityUtils.toString(response.getEntity())).getAsJsonObject();
+ return json;
+ } catch (JsonSyntaxException | ParseException | IOException e) {
throw new OpenViduJavaClientException(e.getMessage(), e.getCause());
}
- return json;
}
}
diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/Publisher.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/Publisher.java
index ef4a3a5e..2da4267f 100644
--- a/openvidu-java-client/src/main/java/io/openvidu/java/client/Publisher.java
+++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/Publisher.java
@@ -17,7 +17,8 @@
package io.openvidu.java.client;
-import org.json.simple.JSONObject;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
/**
* See {@link io.openvidu.java.client.Connection#getPublishers()}.
@@ -39,19 +40,27 @@ public class Publisher {
private String typeOfVideo;
private String videoDimensions;
- protected Publisher(String streamId, long createdAt, boolean hasAudio, boolean hasVideo, Object audioActive,
- Object videoActive, Object frameRate, Object typeOfVideo, Object videoDimensions) {
+ protected Publisher(String streamId, long createdAt, boolean hasAudio, boolean hasVideo, JsonElement audioActive,
+ JsonElement videoActive, JsonElement frameRate, JsonElement typeOfVideo, JsonElement videoDimensions) {
this.streamId = streamId;
this.createdAt = createdAt;
this.hasAudio = hasAudio;
this.hasVideo = hasVideo;
- this.audioActive = (Boolean) audioActive;
- this.videoActive = (Boolean) videoActive;
- if (frameRate != null) {
- this.frameRate = ((Long) frameRate).intValue();
+ if (audioActive != null && !audioActive.isJsonNull()) {
+ this.audioActive = audioActive.getAsBoolean();
+ }
+ if (videoActive != null && !videoActive.isJsonNull()) {
+ this.videoActive = videoActive.getAsBoolean();
+ }
+ if (frameRate != null && !frameRate.isJsonNull()) {
+ this.frameRate = frameRate.getAsInt();
+ }
+ if (typeOfVideo != null && !typeOfVideo.isJsonNull()) {
+ this.typeOfVideo = typeOfVideo.getAsString();
+ }
+ if (videoDimensions != null && !videoDimensions.isJsonNull()) {
+ this.videoDimensions = videoDimensions.getAsString();
}
- this.typeOfVideo = (String) typeOfVideo;
- this.videoDimensions = (String) videoDimensions;
}
/**
@@ -130,17 +139,16 @@ public class Publisher {
return this.videoDimensions;
}
- @SuppressWarnings("unchecked")
- protected JSONObject toJson() {
- JSONObject json = new JSONObject();
- json.put("streamId", this.streamId);
- json.put("hasAudio", this.hasAudio());
- json.put("hasVideo", this.hasVideo());
- json.put("audioActive", this.isAudioActive());
- json.put("videoActive", this.isVideoActive());
- json.put("frameRate", this.getFrameRate());
- json.put("typeOfVideo", this.getTypeOfVideo());
- json.put("videoDimensions", this.getVideoDimensions());
+ protected JsonObject toJson() {
+ JsonObject json = new JsonObject();
+ json.addProperty("streamId", this.streamId);
+ json.addProperty("hasAudio", this.hasAudio());
+ json.addProperty("hasVideo", this.hasVideo());
+ json.addProperty("audioActive", this.isAudioActive());
+ json.addProperty("videoActive", this.isVideoActive());
+ json.addProperty("frameRate", this.getFrameRate());
+ json.addProperty("typeOfVideo", this.getTypeOfVideo());
+ json.addProperty("videoDimensions", this.getVideoDimensions());
return json;
}
diff --git a/openvidu-java-client/src/main/java/io/openvidu/java/client/Recording.java b/openvidu-java-client/src/main/java/io/openvidu/java/client/Recording.java
index a09f1600..05794234 100644
--- a/openvidu-java-client/src/main/java/io/openvidu/java/client/Recording.java
+++ b/openvidu-java-client/src/main/java/io/openvidu/java/client/Recording.java
@@ -17,7 +17,8 @@
package io.openvidu.java.client;
-import org.json.simple.JSONObject;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
/**
* See {@link io.openvidu.java.client.OpenVidu#startRecording(String)}
@@ -86,27 +87,30 @@ public class Recording {
private String url;
private RecordingProperties recordingProperties;
- protected Recording(JSONObject json) {
- this.id = (String) json.get("id");
- this.sessionId = (String) json.get("sessionId");
- this.createdAt = (long) json.get("createdAt");
- this.size = (long) json.get("size");
- this.duration = (double) json.get("duration");
- this.url = (String) json.get("url");
- this.status = Recording.Status.valueOf((String) json.get("status"));
+ protected Recording(JsonObject json) {
+ this.id = json.get("id").getAsString();
+ this.sessionId = json.get("sessionId").getAsString();
+ this.createdAt = json.get("createdAt").getAsLong();
+ this.size = json.get("size").getAsLong();
+ this.duration = json.get("duration").getAsDouble();
+ JsonElement urlElement = json.get("url");
+ if (!urlElement.isJsonNull()) {
+ this.url = urlElement.getAsString();
+ }
+ this.status = Recording.Status.valueOf(json.get("status").getAsString());
- boolean hasAudio = (boolean) json.get("hasAudio");
- boolean hasVideo = (boolean) json.get("hasVideo");
+ boolean hasAudio = json.get("hasAudio").getAsBoolean();
+ boolean hasVideo = json.get("hasVideo").getAsBoolean();
- OutputMode outputMode = OutputMode.valueOf((String) json.get("outputMode"));
- RecordingProperties.Builder builder = new RecordingProperties.Builder().name((String) json.get("name"))
+ OutputMode outputMode = OutputMode.valueOf(json.get("outputMode").getAsString());
+ RecordingProperties.Builder builder = new RecordingProperties.Builder().name(json.get("name").getAsString())
.outputMode(outputMode).hasAudio(hasAudio).hasVideo(hasVideo);
if (OutputMode.COMPOSED.equals(outputMode) && hasVideo) {
- builder.resolution((String) json.get("resolution"));
- builder.recordingLayout(RecordingLayout.valueOf((String) json.get("recordingLayout")));
- String customLayout = (String) json.get("customLayout");
+ builder.resolution(json.get("resolution").getAsString());
+ builder.recordingLayout(RecordingLayout.valueOf(json.get("recordingLayout").getAsString()));
+ JsonElement customLayout = json.get("customLayout");
if (customLayout != null) {
- builder.customLayout(customLayout);
+ builder.customLayout(customLayout.getAsString());
}
}
this.recordingProperties = builder.build();
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 09f4f744..98ab9d13 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
@@ -27,18 +27,20 @@ import java.util.stream.Collectors;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
+import org.apache.http.ParseException;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonSyntaxException;
+
public class Session {
private static final Logger log = LoggerFactory.getLogger(Session.class);
@@ -63,7 +65,7 @@ public class Session {
this.getSessionIdHttp();
}
- protected Session(OpenVidu openVidu, JSONObject json) {
+ protected Session(OpenVidu openVidu, JsonObject json) {
this.openVidu = openVidu;
this.resetSessionWithJson(json);
}
@@ -109,7 +111,6 @@ public class Session {
* @throws OpenViduJavaClientException
* @throws OpenViduHttpException
*/
- @SuppressWarnings("unchecked")
public String generateToken(TokenOptions tokenOptions) throws OpenViduJavaClientException, OpenViduHttpException {
if (!this.hasSessionId()) {
@@ -118,36 +119,36 @@ public class Session {
HttpPost request = new HttpPost(this.openVidu.hostname + OpenVidu.API_TOKENS);
- JSONObject json = new JSONObject();
- json.put("session", this.sessionId);
- json.put("role", tokenOptions.getRole().name());
- json.put("data", tokenOptions.getData());
+ JsonObject json = new JsonObject();
+ json.addProperty("session", this.sessionId);
+ json.addProperty("role", tokenOptions.getRole().name());
+ json.addProperty("data", tokenOptions.getData());
if (tokenOptions.getKurentoOptions() != null) {
- JSONObject kurentoOptions = new JSONObject();
+ JsonObject kurentoOptions = new JsonObject();
if (tokenOptions.getKurentoOptions().getVideoMaxRecvBandwidth() != null) {
- kurentoOptions.put("videoMaxRecvBandwidth",
+ kurentoOptions.addProperty("videoMaxRecvBandwidth",
tokenOptions.getKurentoOptions().getVideoMaxRecvBandwidth());
}
if (tokenOptions.getKurentoOptions().getVideoMinRecvBandwidth() != null) {
- kurentoOptions.put("videoMinRecvBandwidth",
+ kurentoOptions.addProperty("videoMinRecvBandwidth",
tokenOptions.getKurentoOptions().getVideoMinRecvBandwidth());
}
if (tokenOptions.getKurentoOptions().getVideoMaxSendBandwidth() != null) {
- kurentoOptions.put("videoMaxSendBandwidth",
+ kurentoOptions.addProperty("videoMaxSendBandwidth",
tokenOptions.getKurentoOptions().getVideoMaxSendBandwidth());
}
if (tokenOptions.getKurentoOptions().getVideoMinSendBandwidth() != null) {
- kurentoOptions.put("videoMinSendBandwidth",
+ kurentoOptions.addProperty("videoMinSendBandwidth",
tokenOptions.getKurentoOptions().getVideoMinSendBandwidth());
}
if (tokenOptions.getKurentoOptions().getAllowedFilters().length > 0) {
- JSONArray allowedFilters = new JSONArray();
+ JsonArray allowedFilters = new JsonArray();
for (String filter : tokenOptions.getKurentoOptions().getAllowedFilters()) {
allowedFilters.add(filter);
}
- kurentoOptions.put("allowedFilters", allowedFilters);
+ kurentoOptions.add("allowedFilters", allowedFilters);
}
- json.put("kurentoOptions", kurentoOptions);
+ json.add("kurentoOptions", kurentoOptions);
}
StringEntity params;
try {
@@ -169,7 +170,7 @@ public class Session {
try {
int statusCode = response.getStatusLine().getStatusCode();
if ((statusCode == org.apache.http.HttpStatus.SC_OK)) {
- String token = (String) httpResponseToJson(response).get("id");
+ String token = httpResponseToJson(response).get("id").getAsString();
log.info("Returning a TOKEN: {}", token);
return token;
} else {
@@ -444,7 +445,6 @@ public class Session {
return (this.sessionId != null && !this.sessionId.isEmpty());
}
- @SuppressWarnings("unchecked")
private void getSessionIdHttp() throws OpenViduJavaClientException, OpenViduHttpException {
if (this.hasSessionId()) {
return;
@@ -452,13 +452,13 @@ public class Session {
HttpPost request = new HttpPost(this.openVidu.hostname + OpenVidu.API_SESSIONS);
- JSONObject json = new JSONObject();
- json.put("mediaMode", properties.mediaMode().name());
- json.put("recordingMode", properties.recordingMode().name());
- json.put("defaultOutputMode", properties.defaultOutputMode().name());
- json.put("defaultRecordingLayout", properties.defaultRecordingLayout().name());
- json.put("defaultCustomLayout", properties.defaultCustomLayout());
- json.put("customSessionId", properties.customSessionId());
+ JsonObject json = new JsonObject();
+ json.addProperty("mediaMode", properties.mediaMode().name());
+ json.addProperty("recordingMode", properties.recordingMode().name());
+ json.addProperty("defaultOutputMode", properties.defaultOutputMode().name());
+ json.addProperty("defaultRecordingLayout", properties.defaultRecordingLayout().name());
+ json.addProperty("defaultCustomLayout", properties.defaultCustomLayout());
+ json.addProperty("customSessionId", properties.customSessionId());
StringEntity params = null;
try {
params = new StringEntity(json.toString());
@@ -478,9 +478,9 @@ public class Session {
try {
int statusCode = response.getStatusLine().getStatusCode();
if ((statusCode == org.apache.http.HttpStatus.SC_OK)) {
- JSONObject responseJson = httpResponseToJson(response);
- this.sessionId = (String) responseJson.get("id");
- this.createdAt = (long) responseJson.get("createdAt");
+ JsonObject responseJson = httpResponseToJson(response);
+ this.sessionId = responseJson.get("id").getAsString();
+ this.createdAt = responseJson.get("createdAt").getAsLong();
log.info("Session '{}' created", this.sessionId);
} else if (statusCode == org.apache.http.HttpStatus.SC_CONFLICT) {
// 'customSessionId' already existed
@@ -493,12 +493,11 @@ public class Session {
}
}
- private JSONObject httpResponseToJson(HttpResponse response) throws OpenViduJavaClientException {
- JSONParser parser = new JSONParser();
- JSONObject json;
+ private JsonObject httpResponseToJson(HttpResponse response) throws OpenViduJavaClientException {
+ JsonObject json;
try {
- json = (JSONObject) parser.parse(EntityUtils.toString(response.getEntity()));
- } catch (org.apache.http.ParseException | ParseException | IOException e) {
+ json = JsonParser.parseString(EntityUtils.toString(response.getEntity())).getAsJsonObject();
+ } catch (JsonSyntaxException | ParseException | IOException e) {
throw new OpenViduJavaClientException(e.getMessage(), e.getCause());
}
return json;
@@ -508,96 +507,96 @@ public class Session {
this.recording = recording;
}
- @SuppressWarnings("unchecked")
- protected Session resetSessionWithJson(JSONObject json) {
- this.sessionId = (String) json.get("sessionId");
- this.createdAt = (long) json.get("createdAt");
- this.recording = (boolean) json.get("recording");
+ protected Session resetSessionWithJson(JsonObject json) {
+ this.sessionId = json.get("sessionId").getAsString();
+ this.createdAt = json.get("createdAt").getAsLong();
+ this.recording = json.get("recording").getAsBoolean();
SessionProperties.Builder builder = new SessionProperties.Builder()
- .mediaMode(MediaMode.valueOf((String) json.get("mediaMode")))
- .recordingMode(RecordingMode.valueOf((String) json.get("recordingMode")))
- .defaultOutputMode(Recording.OutputMode.valueOf((String) json.get("defaultOutputMode")));
- if (json.containsKey("defaultRecordingLayout")) {
- builder.defaultRecordingLayout(RecordingLayout.valueOf((String) json.get("defaultRecordingLayout")));
+ .mediaMode(MediaMode.valueOf(json.get("mediaMode").getAsString()))
+ .recordingMode(RecordingMode.valueOf(json.get("recordingMode").getAsString()))
+ .defaultOutputMode(Recording.OutputMode.valueOf(json.get("defaultOutputMode").getAsString()));
+ if (json.has("defaultRecordingLayout")) {
+ builder.defaultRecordingLayout(RecordingLayout.valueOf(json.get("defaultRecordingLayout").getAsString()));
}
- if (json.containsKey("defaultCustomLayout")) {
- builder.defaultCustomLayout((String) json.get("defaultCustomLayout"));
+ if (json.has("defaultCustomLayout")) {
+ builder.defaultCustomLayout(json.get("defaultCustomLayout").getAsString());
}
if (this.properties != null && this.properties.customSessionId() != null) {
builder.customSessionId(this.properties.customSessionId());
- } else if (json.containsKey("customSessionId")) {
- builder.customSessionId((String) json.get("customSessionId"));
+ } else if (json.has("customSessionId")) {
+ builder.customSessionId(json.get("customSessionId").getAsString());
}
this.properties = builder.build();
- JSONArray jsonArrayConnections = (JSONArray) ((JSONObject) json.get("connections")).get("content");
+ JsonArray jsonArrayConnections = (json.get("connections").getAsJsonObject()).get("content").getAsJsonArray();
this.activeConnections.clear();
jsonArrayConnections.forEach(connection -> {
- JSONObject con = (JSONObject) connection;
+ JsonObject con = connection.getAsJsonObject();
Map publishers = new ConcurrentHashMap<>();
- JSONArray jsonArrayPublishers = (JSONArray) con.get("publishers");
+ JsonArray jsonArrayPublishers = con.get("publishers").getAsJsonArray();
jsonArrayPublishers.forEach(publisher -> {
- JSONObject pubJson = (JSONObject) publisher;
- JSONObject mediaOptions = (JSONObject) pubJson.get("mediaOptions");
- Publisher pub = new Publisher((String) pubJson.get("streamId"), (long) pubJson.get("createdAt"),
- (boolean) mediaOptions.get("hasAudio"), (boolean) mediaOptions.get("hasVideo"),
- mediaOptions.get("audioActive"), mediaOptions.get("videoActive"), mediaOptions.get("frameRate"),
- mediaOptions.get("typeOfVideo"), mediaOptions.get("videoDimensions"));
+ JsonObject pubJson = publisher.getAsJsonObject();
+ JsonObject mediaOptions = pubJson.get("mediaOptions").getAsJsonObject();
+ Publisher pub = new Publisher(pubJson.get("streamId").getAsString(),
+ pubJson.get("createdAt").getAsLong(), mediaOptions.get("hasAudio").getAsBoolean(),
+ mediaOptions.get("hasVideo").getAsBoolean(), mediaOptions.get("audioActive"),
+ mediaOptions.get("videoActive"), mediaOptions.get("frameRate"), mediaOptions.get("typeOfVideo"),
+ mediaOptions.get("videoDimensions"));
publishers.put(pub.getStreamId(), pub);
});
List subscribers = new ArrayList<>();
- JSONArray jsonArraySubscribers = (JSONArray) con.get("subscribers");
+ JsonArray jsonArraySubscribers = con.get("subscribers").getAsJsonArray();
jsonArraySubscribers.forEach(subscriber -> {
- subscribers.add((String) ((JSONObject) subscriber).get("streamId"));
+ subscribers.add((subscriber.getAsJsonObject()).get("streamId").getAsString());
});
- this.activeConnections.put((String) con.get("connectionId"),
- new Connection((String) con.get("connectionId"), (long) con.get("createdAt"),
- OpenViduRole.valueOf((String) con.get("role")), (String) con.get("token"),
- (String) con.get("location"), (String) con.get("platform"), (String) con.get("serverData"),
- (String) con.get("clientData"), publishers, subscribers));
+ this.activeConnections.put(con.get("connectionId").getAsString(),
+ new Connection(con.get("connectionId").getAsString(), con.get("createdAt").getAsLong(),
+ OpenViduRole.valueOf(con.get("role").getAsString()), con.get("token").getAsString(),
+ con.get("location").getAsString(), con.get("platform").getAsString(),
+ con.get("serverData").getAsString(), con.get("clientData").getAsString(), publishers,
+ subscribers));
});
return this;
}
- @SuppressWarnings("unchecked")
protected String toJson() {
- JSONObject json = new JSONObject();
- json.put("sessionId", this.sessionId);
- json.put("createdAt", this.createdAt);
- json.put("customSessionId", this.properties.customSessionId());
- json.put("recording", this.recording);
- json.put("mediaMode", this.properties.mediaMode().name());
- json.put("recordingMode", this.properties.recordingMode().name());
- json.put("defaultOutputMode", this.properties.defaultOutputMode().name());
- json.put("defaultRecordingLayout", this.properties.defaultRecordingLayout().name());
- json.put("defaultCustomLayout", this.properties.defaultCustomLayout());
- JSONObject connections = new JSONObject();
- connections.put("numberOfElements", this.getActiveConnections().size());
- JSONArray jsonArrayConnections = new JSONArray();
+ 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());
+ json.addProperty("defaultOutputMode", this.properties.defaultOutputMode().name());
+ json.addProperty("defaultRecordingLayout", this.properties.defaultRecordingLayout().name());
+ json.addProperty("defaultCustomLayout", this.properties.defaultCustomLayout());
+ JsonObject connections = new JsonObject();
+ connections.addProperty("numberOfElements", this.getActiveConnections().size());
+ JsonArray jsonArrayConnections = new JsonArray();
this.getActiveConnections().forEach(con -> {
- JSONObject c = new JSONObject();
- c.put("connectionId", con.getConnectionId());
- c.put("role", con.getRole().name());
- c.put("token", con.getToken());
- c.put("clientData", con.getClientData());
- c.put("serverData", con.getServerData());
- JSONArray pubs = new JSONArray();
+ JsonObject c = new JsonObject();
+ c.addProperty("connectionId", con.getConnectionId());
+ c.addProperty("role", con.getRole().name());
+ c.addProperty("token", con.getToken());
+ c.addProperty("clientData", con.getClientData());
+ c.addProperty("serverData", con.getServerData());
+ JsonArray pubs = new JsonArray();
con.getPublishers().forEach(p -> {
pubs.add(p.toJson());
});
- JSONArray subs = new JSONArray();
+ JsonArray subs = new JsonArray();
con.getSubscribers().forEach(s -> {
subs.add(s);
});
- c.put("publishers", pubs);
- c.put("subscribers", subs);
+ c.add("publishers", pubs);
+ c.add("subscribers", subs);
jsonArrayConnections.add(c);
});
- connections.put("content", jsonArrayConnections);
- json.put("connections", connections);
- return json.toJSONString();
+ connections.add("content", jsonArrayConnections);
+ json.add("connections", connections);
+ return json.toString();
}
}
diff --git a/openvidu-server/pom.xml b/openvidu-server/pom.xml
index 69e01bac..d69c4b49 100644
--- a/openvidu-server/pom.xml
+++ b/openvidu-server/pom.xml
@@ -182,6 +182,11 @@
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springframework
+ spring-websocket
+
org.slf4j
slf4j-api
@@ -279,11 +284,22 @@
commons-lang3
${version.commonslang}
+
+ com.google.code.gson
+ gson
+ ${version.gson}
+
io.openvidu
openvidu-java-client
${version.openvidu.java.client}
+
+
+ org.springframework
+ spring-websocket
+ 5.2.3.RELEASE
+
diff --git a/openvidu-test-browsers/pom.xml b/openvidu-test-browsers/pom.xml
index 23eb9a0a..25519eba 100644
--- a/openvidu-test-browsers/pom.xml
+++ b/openvidu-test-browsers/pom.xml
@@ -57,11 +57,6 @@
-
- org.springframework.boot
- spring-boot-starter
- ${version.spring-boot}
-
org.springframework.boot
spring-boot-starter-web
@@ -75,7 +70,7 @@
org.slf4j
slf4j-api
- 1.7.26
+ ${version.slf4j}
org.seleniumhq.selenium
@@ -95,12 +90,12 @@
com.google.code.gson
gson
- 2.8.5
+ ${version.gson}
com.mashape.unirest
unirest-java
- 1.4.9
+ ${version.unirest}
diff --git a/openvidu-test-browsers/src/main/java/io/openvidu/test/browsers/utils/CustomHttpClient.java b/openvidu-test-browsers/src/main/java/io/openvidu/test/browsers/utils/CustomHttpClient.java
index 3ac3c4bf..94467776 100644
--- a/openvidu-test-browsers/src/main/java/io/openvidu/test/browsers/utils/CustomHttpClient.java
+++ b/openvidu-test-browsers/src/main/java/io/openvidu/test/browsers/utils/CustomHttpClient.java
@@ -34,11 +34,14 @@ import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;
import org.json.JSONArray;
-import org.json.JSONException;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonSyntaxException;
import com.mashape.unirest.http.HttpMethod;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
@@ -78,27 +81,27 @@ public class CustomHttpClient {
return Unirest.get(path).header("Authorization", credentials).asJson().getStatus();
}
- public JSONObject rest(HttpMethod method, String path, int status) throws Exception {
+ public JsonObject rest(HttpMethod method, String path, int status) throws Exception {
return this.commonRest(method, path, null, status);
}
- public JSONObject rest(HttpMethod method, String path, String body, int status) throws Exception {
+ public JsonObject rest(HttpMethod method, String path, String body, int status) throws Exception {
return this.commonRest(method, path, body, status);
}
- public JSONObject rest(HttpMethod method, String path, String body, int status, boolean exactReturnedFields,
+ public JsonObject rest(HttpMethod method, String path, String body, int status, boolean exactReturnedFields,
String jsonReturnedValue) throws Exception {
- JSONObject json = this.commonRest(method, path, body, status);
- JSONObject jsonObjExpected = null;
+ JsonObject json = this.commonRest(method, path, body, status);
+ JsonObject jsonObjExpected = null;
jsonReturnedValue.replaceAll("'", "\"");
try {
- jsonObjExpected = new JSONObject(jsonReturnedValue);
- } catch (JSONException e1) {
+ jsonObjExpected = JsonParser.parseString(jsonReturnedValue).getAsJsonObject();
+ } catch (JsonSyntaxException e1) {
throw new Exception("Expected json element is a string without a JSON format: " + jsonReturnedValue);
}
if (exactReturnedFields) {
- if (jsonObjExpected.length() != json.length()) {
+ if (jsonObjExpected.size() != json.size()) {
throw new Exception(
"Error in number of keys in JSON response to POST (" + json.toString() + ")" + path);
}
@@ -117,12 +120,12 @@ public class CustomHttpClient {
return json;
}
- public JSONObject rest(HttpMethod method, String path, String body, int status, boolean exactReturnedFields,
+ public JsonObject rest(HttpMethod method, String path, String body, int status, boolean exactReturnedFields,
Map jsonResponse) throws Exception {
- org.json.JSONObject json = this.commonRest(method, path, body, status);
+ JsonObject json = this.commonRest(method, path, body, status);
if (exactReturnedFields) {
- if (jsonResponse.size() != json.length())
+ if (jsonResponse.size() != json.size())
throw new Exception("Error in number of keys in JSON response to POST " + path);
}
@@ -131,47 +134,47 @@ public class CustomHttpClient {
if (value instanceof String) {
try {
- JSONObject jsonObjExpected = new JSONObject((String) value);
- JSONObject jsonObjActual = json.getJSONObject(entry.getKey());
+ JsonObject jsonObjExpected = JsonParser.parseString((String) value).getAsJsonObject();
+ JsonObject jsonObjActual = json.get(entry.getKey()).getAsJsonObject();
// COMPARE
- } catch (JSONException e1) {
+ } catch (JsonSyntaxException e1) {
try {
- JSONArray jsonArrayExpected = new JSONArray((String) value);
- JSONArray jsonArrayActual = json.getJSONArray(entry.getKey());
+ JsonArray jsonArrayExpected = JsonParser.parseString((String) value).getAsJsonArray();
+ JsonArray jsonArrayActual = json.get(entry.getKey()).getAsJsonArray();
// COMPARE
- } catch (JSONException e2) {
- if (((String) value) != json.getString(entry.getKey())) {
+ } catch (JsonSyntaxException e2) {
+ if (((String) value) != json.get(entry.getKey()).getAsString()) {
throw new Exception("JSON field " + entry.getKey() + " has not expected value. Expected: "
- + value + ". Actual: " + json.getString(entry.getKey()));
+ + value + ". Actual: " + json.get(entry.getKey()).getAsString());
}
}
}
} else if (value instanceof Integer) {
- if (((int) value) != json.getInt(entry.getKey())) {
+ if (((int) value) != json.get(entry.getKey()).getAsInt()) {
throw new Exception("JSON field " + entry.getKey() + " has not expected value. Expected: " + value
- + ". Actual: " + json.getInt(entry.getKey()));
+ + ". Actual: " + json.get(entry.getKey()).getAsInt());
}
} else if (value instanceof Long) {
- if (((long) value) != json.getLong(entry.getKey())) {
+ if (((long) value) != json.get(entry.getKey()).getAsLong()) {
throw new Exception("JSON field " + entry.getKey() + " has not expected value. Expected: " + value
- + ". Actual: " + json.getLong(entry.getKey()));
+ + ". Actual: " + json.get(entry.getKey()).getAsLong());
}
} else if (value instanceof Double) {
- if (((double) value) != json.getDouble(entry.getKey())) {
+ if (((double) value) != json.get(entry.getKey()).getAsDouble()) {
throw new Exception("JSON field " + entry.getKey() + " has not expected value. Expected: " + value
- + ". Actual: " + json.getDouble(entry.getKey()));
+ + ". Actual: " + json.get(entry.getKey()).getAsDouble());
}
} else if (value instanceof Boolean) {
- if (((boolean) value) != json.getBoolean(entry.getKey())) {
+ if (((boolean) value) != json.get(entry.getKey()).getAsBoolean()) {
throw new Exception("JSON field " + entry.getKey() + " has not expected value. Expected: " + value
- + ". Actual: " + json.getBoolean(entry.getKey()));
+ + ". Actual: " + json.get(entry.getKey()).getAsBoolean());
}
- } else if (value instanceof JSONArray) {
- json.getJSONArray(entry.getKey());
- } else if (value instanceof JSONObject) {
- json.getJSONObject(entry.getKey());
+ } else if (value instanceof JSONArray || value instanceof JsonArray) {
+ JsonParser.parseString(entry.getValue().toString()).getAsJsonArray();
+ } else if (value instanceof JSONObject || value instanceof JsonObject) {
+ JsonParser.parseString(entry.getValue().toString()).getAsJsonObject();
} else {
throw new Exception("JSON response field cannot be parsed: " + entry.toString());
}
@@ -183,9 +186,9 @@ public class CustomHttpClient {
Unirest.shutdown();
}
- private org.json.JSONObject commonRest(HttpMethod method, String path, String body, int status) throws Exception {
+ private JsonObject commonRest(HttpMethod method, String path, String body, int status) throws Exception {
HttpResponse> jsonResponse = null;
- org.json.JSONObject json = null;
+ JsonObject json = null;
path = openviduUrl + (path.startsWith("/") ? path : ("/" + path));
HttpRequest request = null;
@@ -227,7 +230,9 @@ public class CustomHttpClient {
try {
jsonResponse = request.asJson();
if (jsonResponse.getBody() != null) {
- json = ((JsonNode) jsonResponse.getBody()).getObject();
+ jsonResponse.getBody();
+ json = JsonParser.parseString(((JsonNode) jsonResponse.getBody()).getObject().toString())
+ .getAsJsonObject();
}
} catch (UnirestException e) {
try {
diff --git a/openvidu-test-e2e/pom.xml b/openvidu-test-e2e/pom.xml
index d52dc83b..fde8b1fb 100644
--- a/openvidu-test-e2e/pom.xml
+++ b/openvidu-test-e2e/pom.xml
@@ -72,24 +72,6 @@
spring-boot-starter-test
${version.spring-boot}
test
-
-
- org.skyscreamer
- jsonassert
-
-
-
-
- org.junit.jupiter
- junit-jupiter
- ${version.junit.jupiter}
- test
-
-
- io.github.bonigarcia
- selenium-jupiter
- ${version.selenium.jupiter}
- test
io.github.bonigarcia
@@ -128,28 +110,9 @@
test
- org.junit.platform
- junit-platform-runner
- ${version.junit.platform}
- test
-
-
- com.googlecode.json-simple
- json-simple
- ${version.json-simple}
- test
-
-
- xml-apis
- xml-apis
- 2.0.2
- test
-
-
- org.jcodec
- jcodec
- 0.2.3
- test
+ com.google.code.gson
+ gson
+ ${version.gson}
org.jcodec
@@ -160,7 +123,7 @@
com.mashape.unirest
unirest-java
- 1.4.9
+ ${version.unirest}
test
@@ -175,11 +138,6 @@
${version.openvidu.java.client}
test
-
- org.springframework.boot
- spring-boot-starter-web
- ${version.spring-boot}
-
diff --git a/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java
index cf467961..87731263 100644
--- a/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java
+++ b/openvidu-test-e2e/src/test/java/io/openvidu/test/e2e/OpenViduTestAppE2eTest.java
@@ -50,9 +50,6 @@ import org.jcodec.api.FrameGrab;
import org.jcodec.api.JCodecException;
import org.jcodec.common.model.Picture;
import org.jcodec.scale.AWTUtil;
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
import org.junit.Assert;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
@@ -77,6 +74,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
import com.google.gson.stream.JsonReader;
import com.mashape.unirest.http.HttpMethod;
@@ -999,12 +997,12 @@ public class OpenViduTestAppE2eTest {
user.getDriver().manage().window().setSize(new Dimension(newWidth, newHeight));
String widthAndHeight = user.getEventManager().getDimensionOfViewport();
- JSONObject obj = (JSONObject) new JSONParser().parse(widthAndHeight);
+ JsonObject obj = JsonParser.parseString(widthAndHeight).getAsJsonObject();
- expectedWidthHeight[0] = (long) obj.get("width");
- expectedWidthHeight[1] = (long) obj.get("height");
+ expectedWidthHeight[0] = obj.get("width").getAsLong();
+ expectedWidthHeight[1] = obj.get("height").getAsLong();
- System.out.println("New viewport dimension: " + obj.toJSONString());
+ System.out.println("New viewport dimension: " + obj.toString());
user.getEventManager().waitUntilEventReaches("streamPropertyChanged", 6);
@@ -1631,9 +1629,10 @@ public class OpenViduTestAppE2eTest {
// Store connectionId and streamId
String response = user.getDriver().findElement(By.id("api-response-text-area")).getAttribute("value");
- JSONObject json = (JSONObject) ((JSONArray) new JSONParser().parse(response.split("%")[1])).get(0);
- String connectionId = (String) json.keySet().iterator().next();
- String streamId = (String) ((JSONObject) ((JSONArray) json.get(connectionId)).get(0)).get("streamId");
+ JsonObject json = JsonParser.parseString(response.split("%")[1]).getAsJsonArray().get(0).getAsJsonObject();
+ String connectionId = json.keySet().iterator().next();
+ String streamId = json.get(connectionId).getAsJsonArray().get(0).getAsJsonObject().get("streamId")
+ .getAsString();
// Fetch all sessions (no change)
user.getDriver().findElement(By.id("list-sessions-btn")).click();
@@ -2154,8 +2153,9 @@ public class OpenViduTestAppE2eTest {
pub = connectionModerator.getPublishers().get(0);
String widthAndHeight = user.getEventManager().getDimensionOfViewport();
- JSONObject obj = (JSONObject) new JSONParser().parse(widthAndHeight);
- Assert.assertEquals("{\"width\":" + (long) obj.get("width") + ",\"height\":" + ((long) obj.get("height")) + "}",
+ JsonObject obj = JsonParser.parseString(widthAndHeight).getAsJsonObject();
+ Assert.assertEquals(
+ "{\"width\":" + obj.get("width").getAsLong() + ",\"height\":" + (obj.get("height").getAsLong()) + "}",
pub.getVideoDimensions());
Assert.assertEquals(new Integer(30), pub.getFrameRate());
Assert.assertEquals("SCREEN", pub.getTypeOfVideo());
@@ -2405,9 +2405,9 @@ public class OpenViduTestAppE2eTest {
restClient.rest(HttpMethod.POST, "/api/sessions", body, HttpStatus.SC_OK, true,
"{'id': 'STR', 'createdAt': 0}");
// Default values
- org.json.JSONObject res = restClient.rest(HttpMethod.POST, "/api/sessions", "{}", HttpStatus.SC_OK, true,
+ JsonObject res = restClient.rest(HttpMethod.POST, "/api/sessions", "{}", HttpStatus.SC_OK, true,
"{'id': 'STR', 'createdAt': 0}");
- restClient.rest(HttpMethod.DELETE, "/api/sessions/" + res.getString("id"), HttpStatus.SC_NO_CONTENT);
+ restClient.rest(HttpMethod.DELETE, "/api/sessions/" + res.get("id").getAsString(), HttpStatus.SC_NO_CONTENT);
// 409
body = "{'customSessionId': 'CUSTOM_SESSION_ID'}";
@@ -2438,16 +2438,16 @@ public class OpenViduTestAppE2eTest {
body = "{'session': 'CUSTOM_SESSION_ID', 'role': 'MODERATOR', 'data': 'SERVER_DATA', 'kurentoOptions': {'allowedFilters': ['GStreamerFilter']}}";
res = restClient.rest(HttpMethod.POST, "/api/tokens", body, HttpStatus.SC_OK, true,
"{'id':'STR','session':'STR','role':'STR','data':'STR','token':'STR','kurentoOptions':{'allowedFilters':['STR']}}");
- final String token1 = res.getString("token");
+ final String token1 = res.get("token").getAsString();
Assert.assertEquals("JSON return value from /api/tokens should have equal srtings in 'id' and 'token'",
- res.getString("id"), token1);
- Assert.assertEquals("Wrong session parameter", "CUSTOM_SESSION_ID", res.getString("session"));
+ res.get("id").getAsString(), token1);
+ Assert.assertEquals("Wrong session parameter", "CUSTOM_SESSION_ID", res.get("session").getAsString());
// Default values
body = "{'session': 'CUSTOM_SESSION_ID'}";
res = restClient.rest(HttpMethod.POST, "/api/tokens", body, HttpStatus.SC_OK, true,
"{'id':'STR','session':'STR','role':'STR','data':'STR','token':'STR'}");
- final String token2 = res.getString("id");
+ final String token2 = res.get("id").getAsString();
/** POST /api/signal (NOT ACTIVE SESSION) **/
body = "{}";
@@ -2495,9 +2495,9 @@ public class OpenViduTestAppE2eTest {
// 409 (RELAYED media mode)
res = restClient.rest(HttpMethod.POST, "/api/sessions", "{'mediaMode':'RELAYED'}", HttpStatus.SC_OK, true,
"{'id': 'STR', 'createdAt': 0}");
- body = "{'session':'" + res.getString("id") + "'}";
+ body = "{'session':'" + res.get("id").getAsString() + "'}";
restClient.rest(HttpMethod.POST, "/api/recordings/start", body, HttpStatus.SC_CONFLICT);
- restClient.rest(HttpMethod.DELETE, "/api/sessions/" + res.getString("id"), HttpStatus.SC_NO_CONTENT);
+ restClient.rest(HttpMethod.DELETE, "/api/sessions/" + res.get("id").getAsString(), HttpStatus.SC_NO_CONTENT);
// Start session
setupBrowser("chrome");
@@ -2591,13 +2591,14 @@ public class OpenViduTestAppE2eTest {
+ "'videoDimensions':'STR','filter':{}}}],'subscribers':[{'createdAt':0,'streamId':'STR','publisher':'STR'}]},{'connectionId':'STR','createdAt':0,'location':'STR',"
+ "'platform':'STR','token':'STR','role':'STR','serverData':'STR','clientData':'STR','publishers':[{'createdAt':0,'streamId':'STR','mediaOptions':{'hasAudio':false,"
+ "'audioActive':false,'hasVideo':false,'videoActive':false,'typeOfVideo':'STR','frameRate':0,'videoDimensions':'STR','filter':{}}}],'subscribers':[{'createdAt':0,'streamId':'STR','publisher':'STR'}]}]},'recording':false}");
- String streamId = ((org.json.JSONObject) ((org.json.JSONObject) res.getJSONObject("connections")
- .getJSONArray("content").get(0)).getJSONArray("publishers").get(0)).getString("streamId");
+ String streamId = res.get("connections").getAsJsonObject().get("content").getAsJsonArray().get(0)
+ .getAsJsonObject().get("publishers").getAsJsonArray().get(0).getAsJsonObject().get("streamId")
+ .getAsString();
restClient.rest(HttpMethod.DELETE, "/api/sessions/CUSTOM_SESSION_ID/stream/" + streamId,
HttpStatus.SC_NO_CONTENT);
- final String connectionId = ((org.json.JSONObject) res.getJSONObject("connections").getJSONArray("content")
- .get(0)).getString("connectionId");
+ final String connectionId = res.get("connections").getAsJsonObject().get("content").getAsJsonArray().get(0)
+ .getAsJsonObject().get("connectionId").getAsString();
/** POST /api/signal (ACTIVE SESSION) **/
body = "{'session':'CUSTOM_SESSION_ID','to':['wrongConnectionId']}";
@@ -2981,37 +2982,37 @@ public class OpenViduTestAppE2eTest {
// Publish IP camera. Dummy URL because no user will subscribe to it [200]
String ipCamBody = "{'type':'IPCAM','rtspUri':'rtsp://dummyurl.com','adaptativeBitrate':true,'onlyPlayWithSubscribers':true,'data':'MY_IP_CAMERA'}";
- org.json.JSONObject response = restClient.rest(HttpMethod.POST, "/api/sessions/IP_CAM_SESSION/connection",
- ipCamBody, HttpStatus.SC_OK, true,
+ JsonObject response = restClient.rest(HttpMethod.POST, "/api/sessions/IP_CAM_SESSION/connection", ipCamBody,
+ HttpStatus.SC_OK, true,
"{'connectionId':'STR','createdAt':0,'location':'STR','platform':'STR','token':'STR','role':'STR','serverData':'STR','clientData':'STR','publishers':[],'subscribers':[]}");
CustomWebhook.waitForEvent("sessionCreated", 1);
CustomWebhook.waitForEvent("participantJoined", 1);
CustomWebhook.waitForEvent("webrtcConnectionCreated", 1);
- Assert.assertEquals("Wrong serverData property", "MY_IP_CAMERA", response.get("serverData"));
- Assert.assertEquals("Wrong platform property", "IPCAM", response.get("platform"));
- Assert.assertEquals("Wrong role property", "PUBLISHER", response.get("role"));
+ Assert.assertEquals("Wrong serverData property", "MY_IP_CAMERA", response.get("serverData").getAsString());
+ Assert.assertEquals("Wrong platform property", "IPCAM", response.get("platform").getAsString());
+ Assert.assertEquals("Wrong role property", "PUBLISHER", response.get("role").getAsString());
Assert.assertEquals("Wrong number of publishers in IPCAM participant", 1,
- response.getJSONArray("publishers").length());
- org.json.JSONObject ipCamPublisher = response.getJSONArray("publishers").getJSONObject(0);
- Assert.assertEquals("Wrong number of properties in IPCAM publisher", 4, ipCamPublisher.length());
- Assert.assertEquals("Wrong rtspUri property", "rtsp://dummyurl.com", ipCamPublisher.get("rtspUri"));
- org.json.JSONObject mediaOptions = ipCamPublisher.getJSONObject("mediaOptions");
- Assert.assertEquals("Wrong number of properties in MediaOptions", 10, mediaOptions.length());
- Assert.assertTrue("Wrong adaptativeBitrate property", mediaOptions.getBoolean("adaptativeBitrate"));
+ response.get("publishers").getAsJsonArray().size());
+ JsonObject ipCamPublisher = response.get("publishers").getAsJsonArray().get(0).getAsJsonObject();
+ Assert.assertEquals("Wrong number of properties in IPCAM publisher", 4, ipCamPublisher.size());
+ Assert.assertEquals("Wrong rtspUri property", "rtsp://dummyurl.com", ipCamPublisher.get("rtspUri").getAsString());
+ JsonObject mediaOptions = ipCamPublisher.get("mediaOptions").getAsJsonObject();
+ Assert.assertEquals("Wrong number of properties in MediaOptions", 10, mediaOptions.size());
+ Assert.assertTrue("Wrong adaptativeBitrate property", mediaOptions.get("adaptativeBitrate").getAsBoolean());
Assert.assertTrue("Wrong onlyPlayWithSubscribers property",
- mediaOptions.getBoolean("onlyPlayWithSubscribers"));
+ mediaOptions.get("onlyPlayWithSubscribers").getAsBoolean());
// Can't delete the stream [405]
restClient.rest(HttpMethod.DELETE,
- "/api/sessions/IP_CAM_SESSION/stream/" + ipCamPublisher.getString("streamId"),
+ "/api/sessions/IP_CAM_SESSION/stream/" + ipCamPublisher.get("streamId").getAsString(),
HttpStatus.SC_METHOD_NOT_ALLOWED);
// Can delete the connection [204]
restClient.rest(HttpMethod.DELETE,
- "/api/sessions/IP_CAM_SESSION/connection/" + response.getString("connectionId"),
+ "/api/sessions/IP_CAM_SESSION/connection/" + response.get("connectionId").getAsString(),
HttpStatus.SC_NO_CONTENT);
CustomWebhook.waitForEvent("webrtcConnectionDestroyed", 1);
@@ -3046,8 +3047,8 @@ public class OpenViduTestAppE2eTest {
CustomWebhook.waitForEvent("recordingStatusChanged", 1); // Stopped
CustomWebhook.waitForEvent("recordingStatusChanged", 1); // Ready
- String recPath = restClient.rest(HttpMethod.GET, "/config", HttpStatus.SC_OK)
- .getString("openviduRecordingPath");
+ String recPath = restClient.rest(HttpMethod.GET, "/config", HttpStatus.SC_OK).get("openviduRecordingPath")
+ .getAsString();
recPath = recPath.endsWith("/") ? recPath : (recPath + "/");
String fullRecordingPath = "file://" + recPath + "TestSession/TestSession.mp4";
ipCamBody = "{'type':'IPCAM','rtspUri':'" + fullRecordingPath
diff --git a/pom.xml b/pom.xml
index 0ba71e56..5cd2009c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,24 +43,25 @@
6.13.0
- 2.1.7.RELEASE
+ 2.2.4.RELEASE
4.12
5.6.0
1.6.0
3.141.59
- 3.2.4
+ 2.23.4
2.0.5
2.2
- 1.1.1
4.5.11
3.1.0
3.9
3.1.5
+ 1.7.30
+ 2.8.6
+ 1.4.9
3.0.11.RELEASE
2.4.1
3.8.1
- 3.2.1
2.11.0
1.1.0