From d9dbc5ab1345c7264df7f5698fa21de662d9b602 Mon Sep 17 00:00:00 2001 From: johnniang Date: Wed, 8 May 2019 16:48:24 +0800 Subject: [PATCH] Fix option updated event bug --- .../FreemarkerConfigAwareListener.java | 3 -- .../event/options/OptionUpdatedListener.java | 29 ------------------- .../app/service/base/AbstractCrudService.java | 5 ++++ .../halo/app/service/base/CrudService.java | 5 ++++ .../app/service/impl/OptionServiceImpl.java | 6 ++++ .../app/service/impl/ThemeServiceImpl.java | 2 ++ 6 files changed, 18 insertions(+), 32 deletions(-) delete mode 100644 src/main/java/run/halo/app/event/options/OptionUpdatedListener.java diff --git a/src/main/java/run/halo/app/event/freemarker/FreemarkerConfigAwareListener.java b/src/main/java/run/halo/app/event/freemarker/FreemarkerConfigAwareListener.java index 34f9f435b..9a11b45a1 100644 --- a/src/main/java/run/halo/app/event/freemarker/FreemarkerConfigAwareListener.java +++ b/src/main/java/run/halo/app/event/freemarker/FreemarkerConfigAwareListener.java @@ -12,14 +12,11 @@ import org.springframework.stereotype.Component; import run.halo.app.event.options.OptionUpdatedEvent; import run.halo.app.event.theme.ThemeActivatedEvent; import run.halo.app.event.user.UserUpdatedEvent; -import run.halo.app.handler.theme.config.support.ThemeProperty; import run.halo.app.service.OptionService; import run.halo.app.service.ThemeService; import run.halo.app.service.ThemeSettingService; import run.halo.app.service.UserService; -import java.util.Map; - /** * Freemarker config aware listener. * diff --git a/src/main/java/run/halo/app/event/options/OptionUpdatedListener.java b/src/main/java/run/halo/app/event/options/OptionUpdatedListener.java deleted file mode 100644 index aeb06e1c1..000000000 --- a/src/main/java/run/halo/app/event/options/OptionUpdatedListener.java +++ /dev/null @@ -1,29 +0,0 @@ -package run.halo.app.event.options; - -import org.springframework.context.ApplicationListener; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; -import run.halo.app.cache.StringCacheStore; -import run.halo.app.service.OptionService; - -/** - * Option updated listener. - * - * @author johnniang - * @date 19-4-29 - */ -@Component -public class OptionUpdatedListener implements ApplicationListener { - - private final StringCacheStore cacheStore; - - public OptionUpdatedListener(StringCacheStore cacheStore) { - this.cacheStore = cacheStore; - } - - @Override - @Async - public void onApplicationEvent(OptionUpdatedEvent event) { - cacheStore.delete(OptionService.OPTIONS_KEY); - } -} diff --git a/src/main/java/run/halo/app/service/base/AbstractCrudService.java b/src/main/java/run/halo/app/service/base/AbstractCrudService.java index 8aabc4d31..849897ad9 100644 --- a/src/main/java/run/halo/app/service/base/AbstractCrudService.java +++ b/src/main/java/run/halo/app/service/base/AbstractCrudService.java @@ -221,6 +221,11 @@ public abstract class AbstractCrudService implements CrudService { @Transactional DOMAIN update(@NonNull DOMAIN domain); + /** + * Flushes all pending changes to the database. + */ + void flush(); + /** * Updates by domains * diff --git a/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java b/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java index 813ea0f50..3b38d08fd 100644 --- a/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java @@ -381,7 +381,13 @@ public class OptionServiceImpl extends AbstractCrudService impl }); } + private void cleanCache() { + cacheStore.delete(OptionService.OPTIONS_KEY); + } + private void publishOptionUpdatedEvent() { + cleanCache(); eventPublisher.publishEvent(new OptionUpdatedEvent(this)); } } + diff --git a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java index 6a6082156..aa6f67e60 100644 --- a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java @@ -331,6 +331,8 @@ public class ThemeServiceImpl implements ThemeService { // Set activated theme setActivatedTheme(themeProperty); + optionService.flush(); + // Clear the cache eventPublisher.publishEvent(new ThemeUpdatedEvent(this));