From 2184102c68c256436a58adba17908b99c38d6054 Mon Sep 17 00:00:00 2001 From: johnniang Date: Fri, 22 Mar 2019 16:21:19 +0800 Subject: [PATCH] Resolve implicit concurrency problem --- src/main/java/cc/ryanc/halo/listener/StartedListener.java | 4 ++-- src/main/java/cc/ryanc/halo/model/support/HaloConst.java | 6 +++--- src/main/java/cc/ryanc/halo/utils/HaloUtils.java | 8 +++----- .../halo/web/controller/admin/api/ThemeController.java | 2 +- .../halo/web/controller/admin/base/BaseController.java | 2 +- .../ryanc/halo/web/controller/core/InstallController.java | 2 +- 6 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/main/java/cc/ryanc/halo/listener/StartedListener.java b/src/main/java/cc/ryanc/halo/listener/StartedListener.java index 7da4ab939..44456451a 100644 --- a/src/main/java/cc/ryanc/halo/listener/StartedListener.java +++ b/src/main/java/cc/ryanc/halo/listener/StartedListener.java @@ -8,7 +8,6 @@ import cc.ryanc.halo.service.OptionService; import cc.ryanc.halo.utils.HaloUtils; import cc.ryanc.halo.utils.ThemeUtils; import cc.ryanc.halo.web.controller.content.base.BaseContentController; -import cc.ryanc.halo.web.controller.support.PageJacksonSerializer; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import freemarker.template.TemplateModelException; @@ -67,7 +66,8 @@ public class StartedListener implements ApplicationListener @@ -36,7 +36,7 @@ public class HaloConst { /** * All of the options */ - public static Map OPTIONS; + public final static ConcurrentMap OPTIONS = new ConcurrentHashMap<>(); /** * All of the Owo diff --git a/src/main/java/cc/ryanc/halo/utils/HaloUtils.java b/src/main/java/cc/ryanc/halo/utils/HaloUtils.java index 877c96a95..94f835b98 100755 --- a/src/main/java/cc/ryanc/halo/utils/HaloUtils.java +++ b/src/main/java/cc/ryanc/halo/utils/HaloUtils.java @@ -95,11 +95,9 @@ public class HaloUtils { * @return default page size */ public static int getDefaultPageSize() { - if (StrUtil.isNotBlank(OPTIONS.get(BlogProperties.INDEX_POSTS))) { - return Integer.parseInt(OPTIONS.get(BlogProperties.INDEX_POSTS)); - } - - return DEFAULT_PAGE_SIZE; + return Integer.valueOf(OPTIONS.getOrDefault( + BlogProperties.INDEX_POSTS.getValue(), + String.valueOf(DEFAULT_PAGE_SIZE))); } /** diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java index 6d0fec892..1a95e3740 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java @@ -62,7 +62,7 @@ public class ThemeController { optionService.saveProperties(properties); BaseContentController.THEME = themeName; OPTIONS.clear(); - OPTIONS = optionService.listOptions(); + OPTIONS.putAll(optionService.listOptions()); configuration.setSharedVariable("themeName", themeName); configuration.setSharedVariable("options", OPTIONS); } diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/base/BaseController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/base/BaseController.java index 79e560610..37254f078 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/base/BaseController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/base/BaseController.java @@ -30,7 +30,7 @@ public abstract class BaseController { try { OPTIONS.clear(); THEMES.clear(); - OPTIONS = optionService.listOptions(); + OPTIONS.putAll(optionService.listOptions()); THEMES = ThemeUtils.getThemes(); configuration.setSharedVariable("options", OPTIONS); } catch (TemplateModelException e) { diff --git a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java index 62e544d95..332d4c8f5 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java @@ -295,7 +295,7 @@ public class InstallController { menuService.create(menuArchive); OPTIONS.clear(); - OPTIONS = optionService.listOptions(); + OPTIONS.putAll(optionService.listOptions()); configuration.setSharedVariable("options", OPTIONS); // configuration.setSharedVariable("user", userService.findUser()); } catch (Exception e) {