From 2b8f218c8f5865289703e851c3651f08d9b965da Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Sat, 23 May 2020 15:17:30 +0800 Subject: [PATCH] chore: remove fastjson dependency. (#871) * chore: remove fastjson dependency. * fix: test. --- build.gradle | 3 - .../admin/api/OptionController.java | 6 +- .../app/service/impl/BackupServiceImpl.java | 66 +++++++++++-------- 3 files changed, 41 insertions(+), 34 deletions(-) diff --git a/build.gradle b/build.gradle index 70a682585..ef34c9ea2 100644 --- a/build.gradle +++ b/build.gradle @@ -65,7 +65,6 @@ ext { flywayVersion = "6.4.1" h2Version = "1.4.196" levelDbVersion = "0.12" - fastJsonVersion = "1.2.68" annotationsVersion = "3.0.1u2" jedisVersion= '3.3.0' zxingVersion = "3.4.0" @@ -116,8 +115,6 @@ dependencies { implementation "net.sf.image4j:image4j:$image4jVersion" implementation "org.flywaydb:flyway-core:$flywayVersion" - implementation "com.alibaba:fastjson:$fastJsonVersion" - implementation "com.google.zxing:core:$zxingVersion" implementation "org.iq80.leveldb:leveldb:$levelDbVersion" diff --git a/src/main/java/run/halo/app/controller/admin/api/OptionController.java b/src/main/java/run/halo/app/controller/admin/api/OptionController.java index 844b4e962..616e17fa7 100644 --- a/src/main/java/run/halo/app/controller/admin/api/OptionController.java +++ b/src/main/java/run/halo/app/controller/admin/api/OptionController.java @@ -1,6 +1,5 @@ package run.halo.app.controller.admin.api; -import com.alibaba.fastjson.JSON; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -58,9 +57,8 @@ public class OptionController { @PostMapping("map_view/keys") @ApiOperation("Lists options with map view by keys") - public Map listAllWithMapView(@RequestBody String keys) { - List parsedKeys = JSON.parseArray(keys, String.class); - return optionService.listOptions(parsedKeys); + public Map listAllWithMapView(@RequestBody List keys) { + return optionService.listOptions(keys); } @GetMapping("list_view") diff --git a/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java b/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java index f0a2862ca..9965a60c3 100644 --- a/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java @@ -5,7 +5,10 @@ import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.file.FileWriter; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.IdUtil; -import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.context.ApplicationEventPublisher; @@ -28,8 +31,10 @@ import run.halo.app.security.service.OneTimeTokenService; import run.halo.app.service.*; import run.halo.app.utils.DateTimeUtils; import run.halo.app.utils.HaloUtils; +import run.halo.app.utils.JsonUtils; import java.io.IOException; +import java.lang.reflect.Type; import java.net.MalformedURLException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -37,9 +42,7 @@ import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDateTime; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -60,6 +63,12 @@ public class BackupServiceImpl implements BackupService { private static final String LINE_SEPARATOR = System.getProperty("line.separator"); + private static final Type MAP_TYPE = new TypeToken>() { + }.getType(); + + private static final Type JSON_OBJECT_TYPE = new TypeToken>() { + }.getType(); + private final AttachmentService attachmentService; private final CategoryService categoryService; @@ -258,7 +267,7 @@ public class BackupServiceImpl implements BackupService { @Override public BackupDTO exportData() { - JSONObject data = new JSONObject(); + Map data = new HashMap<>(); data.put("version", HaloConst.HALO_VERSION); data.put("export_date", DateUtil.now()); data.put("attachments", attachmentService.listAll()); @@ -291,7 +300,7 @@ public class BackupServiceImpl implements BackupService { Path haloDataPath = Files.createFile(Paths.get(haloProperties.getDataExportDir(), haloDataFileName)); FileWriter fileWriter = new FileWriter(haloDataPath.toFile(), CharsetUtil.UTF_8); - fileWriter.write(data.toJSONString()); + fileWriter.write(JsonUtils.objectToJson(data)); return buildBackupDto(DATA_EXPORT_BASE_URI, haloDataPath); } catch (IOException e) { @@ -342,68 +351,71 @@ public class BackupServiceImpl implements BackupService { public void importData(MultipartFile file) throws IOException { String jsonContent = IoUtil.read(file.getInputStream(), StandardCharsets.UTF_8); - JSONObject data = JSONObject.parseObject(jsonContent); + ObjectMapper mapper = JsonUtils.createDefaultJsonMapper(); + TypeReference> typeRef = new TypeReference>() { + }; + HashMap data = mapper.readValue(jsonContent, typeRef); - List attachments = data.getJSONArray("attachments").toJavaList(Attachment.class); + List attachments = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("attachments")), Attachment[].class)); attachmentService.createInBatch(attachments); - List categories = data.getJSONArray("categories").toJavaList(Category.class); + List categories = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("categories")), Category[].class)); categoryService.createInBatch(categories); - List tags = data.getJSONArray("tags").toJavaList(Tag.class); + List tags = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("tags")), Tag[].class)); tagService.createInBatch(tags); - List commentBlackList = data.getJSONArray("comment_black_list").toJavaList(CommentBlackList.class); + List commentBlackList = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("comment_black_list")), CommentBlackList[].class)); commentBlackListService.createInBatch(commentBlackList); - List journals = data.getJSONArray("journals").toJavaList(Journal.class); + List journals = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("journals")), Journal[].class)); journalService.createInBatch(journals); - List journalComments = data.getJSONArray("journal_comments").toJavaList(JournalComment.class); + List journalComments = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("journal_comments")), JournalComment[].class)); journalCommentService.createInBatch(journalComments); - List links = data.getJSONArray("links").toJavaList(Link.class); + List links = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("links")), Link[].class)); linkService.createInBatch(links); - List logs = data.getJSONArray("logs").toJavaList(Log.class); + List logs = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("logs")), Log[].class)); logService.createInBatch(logs); - List menus = data.getJSONArray("menus").toJavaList(Menu.class); + List menus = Arrays.asList(mapper.readValue(mapper.writeValueAsString(data.get("menus")), Menu[].class)); menuService.createInBatch(menus); - List