From 5daf2fa7e088e53f1a90bc7216e251ee8bcd4277 Mon Sep 17 00:00:00 2001 From: Aleksandr Fedorov Date: Wed, 21 Aug 2024 16:39:44 +0300 Subject: [PATCH] fix: serialize JSONObject in OnlyOfficeEditorServlet # Conflicts: # src/main/java/onlyoffice/OnlyOfficeEditorServlet.java --- .../onlyoffice/OnlyOfficeEditorServlet.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/onlyoffice/OnlyOfficeEditorServlet.java b/src/main/java/onlyoffice/OnlyOfficeEditorServlet.java index 3e9eecee..ba7fe354 100644 --- a/src/main/java/onlyoffice/OnlyOfficeEditorServlet.java +++ b/src/main/java/onlyoffice/OnlyOfficeEditorServlet.java @@ -25,7 +25,11 @@ import com.atlassian.confluence.user.ConfluenceUser; import com.atlassian.confluence.util.velocity.VelocityUtils; import com.atlassian.sal.api.message.I18nResolver; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.module.SimpleModule; import com.onlyoffice.manager.settings.SettingsManager; import com.onlyoffice.model.documenteditor.Config; import com.onlyoffice.model.documenteditor.config.document.DocumentType; @@ -181,7 +185,7 @@ public void doGet(final HttpServletRequest request, final HttpServletResponse re config.getEditorConfig().setLang(localeManager.getLocale(user).toLanguageTag()); config.getEditorConfig().setActionLink(actionData); - ObjectMapper mapper = new ObjectMapper(); + ObjectMapper mapper = createObjectMapper(); context.put("request", request); context.put("configAsHtml", mapper.writeValueAsString(config)); @@ -210,4 +214,19 @@ public void doGet(final HttpServletRequest request, final HttpServletResponse re throw new ServletException(e.getMessage(), e); } } + + private ObjectMapper createObjectMapper() { + ObjectMapper objectMapper = new ObjectMapper(); + SimpleModule module = new SimpleModule(); + module.addSerializer(JSONObject.class, new JsonSerializer() { + @Override + public void serialize(final JSONObject jsonObject, final JsonGenerator jsonGenerator, + final SerializerProvider serializerProvider) throws IOException { + jsonGenerator.writeObject(jsonObject.toMap()); + } + }); + objectMapper.registerModule(module); + + return objectMapper; + } }