From b6267682387567dc94d6089e98e03071efe5f5eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Banno-Cloutier?= <leo.banno-cloutier@savoirfairelinux.com> Date: Tue, 22 Aug 2023 16:53:50 -0400 Subject: [PATCH] org.json: remove org.json from dependencies Change-Id: If67b4ef11aed93a7ec0b09880badb14e53176859 --- jams-server/pom.xml | 5 ---- .../directory/DirectoryEntryServlet.java | 21 ++------------ .../api/admin/group/GroupServlet.java | 14 +++------- .../api/admin/group/PolicyServlet.java | 28 +++++++++++++------ .../api/admin/group/UserGroupServlet.java | 22 ++++----------- .../servlets/api/admin/users/UserServlet.java | 25 +++++------------ .../directory/SearchDirectoryServlet.java | 15 ++++++---- 7 files changed, 46 insertions(+), 84 deletions(-) diff --git a/jams-server/pom.xml b/jams-server/pom.xml index 546b9697..b097011a 100644 --- a/jams-server/pom.xml +++ b/jams-server/pom.xml @@ -84,11 +84,6 @@ <artifactId>httpclient</artifactId> <version>4.5.14</version> </dependency> - <dependency> - <groupId>org.json</groupId> - <artifactId>json</artifactId> - <version>20230618</version> - </dependency> </dependencies> <build> diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java index 4e2de211..4b93cae2 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java @@ -27,6 +27,7 @@ import static net.jami.jams.server.Server.dataStore; import static net.jami.jams.server.Server.userAuthenticationModule; import com.google.gson.Gson; +import com.google.gson.JsonObject; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; @@ -45,11 +46,8 @@ import net.jami.jams.common.objects.user.User; import net.jami.jams.common.objects.user.UserProfile; import net.jami.jams.common.serialization.adapters.GsonFactory; -import org.json.JSONObject; - import java.io.IOException; import java.util.HashMap; -import java.util.Scanner; @Slf4j @WebServlet("/api/admin/directory/entry") @@ -62,22 +60,7 @@ public class DirectoryEntryServlet extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { // Create a user profile. String realm = "LOCAL"; - Scanner s = new Scanner(req.getInputStream()).useDelimiter("\\A"); - String result = s.hasNext() ? s.next() : ""; - final JSONObject obj = new JSONObject(result); - - UserProfile userProfile = new UserProfile(); - userProfile.setUsername(obj.get("username").toString()); - userProfile.setFirstName(obj.get("firstName").toString()); - userProfile.setLastName(obj.get("lastName").toString()); - userProfile.setEmail(obj.get("email").toString()); - userProfile.setProfilePicture(obj.get("profilePicture").toString()); - userProfile.setOrganization(obj.get("organization").toString()); - userProfile.setPhoneNumber(obj.get("phoneNumber").toString()); - userProfile.setPhoneNumberExtension(obj.get("phoneNumberExtension").toString()); - userProfile.setFaxNumber(obj.get("faxNumber").toString()); - userProfile.setMobileNumber(obj.get("mobileNumber").toString()); - userProfile.setId(obj.get("jamiId").toString()); + UserProfile userProfile = gson.fromJson(req.getReader(), UserProfile.class); userAuthenticationModule .getAuthSources() diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java index 09f9203f..c2eaea8d 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java @@ -3,6 +3,7 @@ package net.jami.jams.server.servlets.api.admin.group; import static net.jami.jams.server.Server.dataStore; import com.google.gson.Gson; +import com.google.gson.JsonObject; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; @@ -18,11 +19,8 @@ import net.jami.jams.common.objects.user.AccessLevel; import net.jami.jams.common.objects.user.Group; import net.jami.jams.common.serialization.adapters.GsonFactory; -import org.json.JSONObject; - import java.io.IOException; import java.util.Optional; -import java.util.stream.Collectors; @WebServlet("/api/admin/group/*") @Slf4j @@ -53,14 +51,10 @@ public class GroupServlet extends HttpServlet { protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException { String id = req.getPathInfo().replace("/", ""); - final JSONObject obj = - new JSONObject( - req.getReader() - .lines() - .collect(Collectors.joining(System.lineSeparator()))); + JsonObject obj = gson.fromJson(req.getReader(), JsonObject.class); - String name = obj.getString("name"); - String blueprint = obj.getString("blueprint"); + String name = obj.get("name").getAsString(); + String blueprint = obj.get("blueprint").getAsString(); if (dataStore.getGroupDao().updateObject(id, name, blueprint)) resp.setStatus(200); else resp.sendError(500, "Could not update group!"); diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java index c4b83690..39346510 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java @@ -2,6 +2,9 @@ package net.jami.jams.server.servlets.api.admin.group; import static net.jami.jams.server.Server.dataStore; +import com.google.gson.JsonParser; +import com.google.gson.JsonSyntaxException; + import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; @@ -15,8 +18,6 @@ import net.jami.jams.common.annotations.ScopedServletMethod; import net.jami.jams.common.objects.user.AccessLevel; import net.jami.jams.common.objects.user.Policy; -import org.json.JSONObject; - import java.io.IOException; import java.util.Scanner; @@ -39,9 +40,14 @@ public class PolicyServlet extends HttpServlet { String name = req.getParameter("name"); Scanner s = new Scanner(req.getInputStream()).useDelimiter("\\A"); - String result = s.hasNext() ? s.next() : ""; - final JSONObject obj = new JSONObject(result); - final String policyData = obj.toString(); + String policyData = s.hasNext() ? s.next() : ""; + + try { + JsonParser.parseString(policyData); + } catch (JsonSyntaxException e) { + resp.sendError(400, "Invalid JSON!"); + return; + } if (dataStore.getPolicyDao().updateObject(name, policyData)) resp.setStatus(200); else resp.sendError(500, "could not update the group's name!"); @@ -53,14 +59,18 @@ public class PolicyServlet extends HttpServlet { String name = req.getParameter("name"); Scanner s = new Scanner(req.getInputStream()).useDelimiter("\\A"); - String result = s.hasNext() ? s.next() : ""; + String policyData = s.hasNext() ? s.next() : ""; - final JSONObject obj = new JSONObject(result); - final String jsonString = obj.toString(); + try { + JsonParser.parseString(policyData); + } catch (JsonSyntaxException e) { + resp.sendError(400, "Invalid JSON!"); + return; + } Policy policy = new Policy(); policy.setName(name); - policy.setPolicyData(jsonString); + policy.setPolicyData(policyData); if (dataStore.getPolicyDao().storeObject(policy)) resp.setStatus(200); else resp.sendError(500, "Could not create a group successfully!"); } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/UserGroupServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/UserGroupServlet.java index 27b1b359..ef891e6d 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/UserGroupServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/UserGroupServlet.java @@ -3,6 +3,7 @@ package net.jami.jams.server.servlets.api.admin.group; import static net.jami.jams.server.Server.dataStore; import com.google.gson.Gson; +import com.google.gson.JsonObject; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; @@ -17,12 +18,9 @@ import net.jami.jams.common.objects.user.AccessLevel; import net.jami.jams.common.objects.user.UserGroupMapping; import net.jami.jams.common.serialization.adapters.GsonFactory; -import org.json.JSONObject; - import java.io.IOException; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; @WebServlet("/api/admin/group/members/*") @Slf4j @@ -65,13 +63,8 @@ public class UserGroupServlet extends HttpServlet { String groupId = req.getPathInfo().replace("/", ""); - final JSONObject obj = - new JSONObject( - req.getReader() - .lines() - .collect(Collectors.joining(System.lineSeparator()))); - - String username = obj.getString("username"); + JsonObject obj = gson.fromJson(req.getReader(), JsonObject.class); + String username = obj.get("username").getAsString(); Optional<UserGroupMapping> existingMapping = dataStore.getUserGroupMappingsDao().getByGroupIdAndUsername(groupId, username); @@ -97,13 +90,8 @@ public class UserGroupServlet extends HttpServlet { String groupId = req.getPathInfo().replace("/", ""); - final JSONObject obj = - new JSONObject( - req.getReader() - .lines() - .collect(Collectors.joining(System.lineSeparator()))); - - String username = obj.getString("username"); + JsonObject obj = gson.fromJson(req.getReader(), JsonObject.class); + String username = obj.get("username").getAsString(); if (dataStore.getUserGroupMappingsDao().deleteObject(username, groupId)) { resp.setStatus(200); diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserServlet.java index 25e6e71e..ea1c007e 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/users/UserServlet.java @@ -28,6 +28,7 @@ import static net.jami.jams.server.Server.nameServer; import static net.jami.jams.server.Server.userAuthenticationModule; import com.google.gson.Gson; +import com.google.gson.JsonObject; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; @@ -50,13 +51,11 @@ import net.jami.jams.server.core.workflows.RevokeUserFlow; import org.apache.commons.codec.binary.Base64; import org.bouncycastle.cert.X509CRLEntryHolder; import org.bouncycastle.cert.X509CRLHolder; -import org.json.JSONObject; import java.io.IOException; import java.util.List; import java.util.Optional; import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; @WebServlet("/api/admin/user") public class UserServlet extends HttpServlet { @@ -107,13 +106,9 @@ public class UserServlet extends HttpServlet { @JsonContent protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - final JSONObject obj = - new JSONObject( - req.getReader() - .lines() - .collect(Collectors.joining(System.lineSeparator()))); - - String password = obj.getString("password"); + JsonObject obj = gson.fromJson(req.getReader(), JsonObject.class); + String username = obj.get("username").getAsString(); + String password = obj.get("password").getAsString(); if (password.isEmpty()) { resp.sendError(400, "Password is empty!"); @@ -123,8 +118,6 @@ public class UserServlet extends HttpServlet { byte[] salt = PasswordUtil.generateSalt(); String hashedPassword = PasswordUtil.hashPassword(password, salt); - String username = obj.getString("username"); - User user = new User(); user.setUsername(username); user.setNeedsPasswordReset(true); @@ -146,13 +139,9 @@ public class UserServlet extends HttpServlet { @Override @ScopedServletMethod(securityGroups = {AccessLevel.ADMIN}) protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException { - final JSONObject obj = - new JSONObject( - req.getReader() - .lines() - .collect(Collectors.joining(System.lineSeparator()))); - String pw = obj.getString("password"); - String username = obj.getString("username"); + JsonObject obj = gson.fromJson(req.getReader(), JsonObject.class); + String username = obj.get("username").getAsString(); + String pw = obj.get("password").getAsString(); Optional<User> result = dataStore.getUserDao().getByUsername(username); diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java index 6c8885f2..72cf954c 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java @@ -27,6 +27,8 @@ import static net.jami.jams.server.Server.nameServer; import static net.jami.jams.server.Server.userAuthenticationModule; import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; @@ -47,8 +49,6 @@ import net.jami.jams.common.objects.user.User; import net.jami.jams.common.objects.user.UserProfile; import net.jami.jams.common.serialization.adapters.GsonFactory; -import org.json.JSONObject; - import java.io.IOException; import java.util.ArrayList; import java.util.Comparator; @@ -156,10 +156,13 @@ public class SearchDirectoryServlet extends HttpServlet { }); }); - JSONObject obj = new JSONObject(); - obj.put("profiles", userProfiles); - obj.put("numPages", DataStore.NUM_PAGES); - resp.getOutputStream().write((obj.toString()).getBytes()); + JsonObject obj = new JsonObject(); + JsonArray profilesArray = gson.toJsonTree(userProfiles).getAsJsonArray(); + + obj.add("profiles", profilesArray); + obj.addProperty("numPages", DataStore.NUM_PAGES); + + resp.getOutputStream().write(gson.toJson(obj).getBytes()); resp.setStatus(200); } } -- GitLab