diff --git a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java index 596505ff..12b329ec 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java +++ b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java @@ -612,7 +612,7 @@ public class OpenviduConfig { if (parameters.get(key) instanceof Collection) { list = (List) parameters.get(key); } else if (admitStringified) { - list = this.kmsUrisStringToList((String) parameters.get(key)); + list = this.stringifiedArrayOfStringToListOfStrings((String) parameters.get(key)); } else { throw new Exception("Property '" + key + "' must be an integer"); } @@ -654,6 +654,22 @@ public class OpenviduConfig { return externalizedProps; } + public List stringifiedArrayOfStringToListOfStrings(String json) { + kmsUris = kmsUris.replaceAll("\\s", ""); // Remove all white spaces + kmsUris = kmsUris.replaceAll("\\\\", ""); // Remove previous escapes + kmsUris = kmsUris.replaceAll("\"", ""); // Remove previous double quotes + kmsUris = kmsUris.replaceFirst("^\\[", "[\\\""); // Escape first char + kmsUris = kmsUris.replaceFirst("\\]$", "\\\"]"); // Escape last char + kmsUris = kmsUris.replaceAll(",", "\\\",\\\""); // Escape middle strings + Gson gson = new Gson(); + JsonArray kmsUrisArray = gson.fromJson(kmsUris, JsonArray.class); + List list = JsonUtils.toStringList(kmsUrisArray); + if (list.size() == 1 && list.get(0).isEmpty()) { + list = new ArrayList<>(); + } + return list; + } + public List kmsUrisStringToList(String kmsUris) throws Exception { kmsUris = kmsUris.replaceAll("\\s", ""); // Remove all white spaces kmsUris = kmsUris.replaceAll("\\\\", ""); // Remove previous escapes