From 5b2591b5c33d1c2d93bc5c2116ac08470d38d0e7 Mon Sep 17 00:00:00 2001 From: johnniang Date: Mon, 10 Jun 2019 20:02:58 +0800 Subject: [PATCH] Refactor runtime mode conversion --- .../halo/app/model/dto/EnvironmentDTO.java | 3 +- .../java/run/halo/app/model/enums/Mode.java | 47 +++++++++++++++++++ .../run/halo/app/model/support/HaloConst.java | 2 +- .../run/halo/app/service/CategoryService.java | 1 + .../app/service/impl/AdminServiceImpl.java | 14 ++---- .../app/service/impl/BackupServiceImpl.java | 3 +- .../app/service/impl/PostServiceImpl.java | 1 + 7 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 src/main/java/run/halo/app/model/enums/Mode.java diff --git a/src/main/java/run/halo/app/model/dto/EnvironmentDTO.java b/src/main/java/run/halo/app/model/dto/EnvironmentDTO.java index 77063b26f..b2fddafa4 100644 --- a/src/main/java/run/halo/app/model/dto/EnvironmentDTO.java +++ b/src/main/java/run/halo/app/model/dto/EnvironmentDTO.java @@ -1,6 +1,7 @@ package run.halo.app.model.dto; import lombok.Data; +import run.halo.app.model.enums.Mode; /** * Theme controller. @@ -17,5 +18,5 @@ public class EnvironmentDTO { private String version; - private String mode; + private Mode mode; } diff --git a/src/main/java/run/halo/app/model/enums/Mode.java b/src/main/java/run/halo/app/model/enums/Mode.java new file mode 100644 index 000000000..1dd4a7374 --- /dev/null +++ b/src/main/java/run/halo/app/model/enums/Mode.java @@ -0,0 +1,47 @@ +package run.halo.app.model.enums; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; +import org.apache.commons.lang3.StringUtils; +import org.springframework.lang.Nullable; + +/** + * Halo runtime mode. + * + * @author johnniang + * @date 19-6-10 + */ +public enum Mode { + PRODUCTION, + DEVELOPMENT, + TEST; + + @JsonValue + String getValue() { + return this.name().toLowerCase(); + } + + /** + * Get mode from value. + * + * @param value mode value + * @return runtime mode or null if the value is mismatch + */ + @Nullable + @JsonCreator + public static Mode valueFrom(@Nullable String value) { + if (StringUtils.isBlank(value) || value.equalsIgnoreCase("prod")) { + return Mode.PRODUCTION; + } + + if (value.equalsIgnoreCase("dev")) { + return Mode.DEVELOPMENT; + } + + if (value.equalsIgnoreCase("test")) { + return Mode.TEST; + } + + return null; + } +} diff --git a/src/main/java/run/halo/app/model/support/HaloConst.java b/src/main/java/run/halo/app/model/support/HaloConst.java index 49be00fa6..6455ea3aa 100644 --- a/src/main/java/run/halo/app/model/support/HaloConst.java +++ b/src/main/java/run/halo/app/model/support/HaloConst.java @@ -23,7 +23,7 @@ public class HaloConst { public final static String DEFAULT_THEME_ID = "caicai_anatole"; /** - * version constant + * Version constant. (Available in production environment) */ public static final String HALO_VERSION; diff --git a/src/main/java/run/halo/app/service/CategoryService.java b/src/main/java/run/halo/app/service/CategoryService.java index e73e74d2e..7de4e678f 100755 --- a/src/main/java/run/halo/app/service/CategoryService.java +++ b/src/main/java/run/halo/app/service/CategoryService.java @@ -42,6 +42,7 @@ public interface CategoryService extends CrudService { * @param name name * @return Category */ + @Nullable Category getByName(@NonNull String name); /** diff --git a/src/main/java/run/halo/app/service/impl/AdminServiceImpl.java b/src/main/java/run/halo/app/service/impl/AdminServiceImpl.java index 5899ee4f1..51b989f9b 100644 --- a/src/main/java/run/halo/app/service/impl/AdminServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/AdminServiceImpl.java @@ -15,6 +15,7 @@ import run.halo.app.model.dto.EnvironmentDTO; import run.halo.app.model.dto.StatisticDTO; import run.halo.app.model.entity.User; import run.halo.app.model.enums.CommentStatus; +import run.halo.app.model.enums.Mode; import run.halo.app.model.enums.PostStatus; import run.halo.app.model.params.LoginParam; import run.halo.app.model.support.HaloConst; @@ -78,7 +79,7 @@ public class AdminServiceImpl implements AdminService { StringCacheStore cacheStore, ApplicationEventPublisher eventPublisher, @Value("${spring.datasource.driver-class-name}") String driverClassName, - @Value("${spring.profiles.active}") String mode) { + @Value("${spring.profiles.active:prod}") String mode) { this.postService = postService; this.sheetService = sheetService; this.attachmentService = attachmentService; @@ -194,11 +195,7 @@ public class AdminServiceImpl implements AdminService { environmentDTO.setVersion(HaloConst.HALO_VERSION); - if (StringUtils.isNotEmpty(mode)) { - environmentDTO.setMode(StringUtils.equals("dev", mode) ? "development" : "production"); - } else { - environmentDTO.setMode("test"); - } + environmentDTO.setMode(Mode.valueFrom(this.mode)); return environmentDTO; } @@ -214,9 +211,8 @@ public class AdminServiceImpl implements AdminService { User user = userService.getById(userId); // Remove all token - cacheStore.getAny(SecurityUtils.buildAccessTokenKey(user), String.class).ifPresent(accessToken -> { - cacheStore.delete(SecurityUtils.buildTokenAccessKey(accessToken)); - }); + cacheStore.getAny(SecurityUtils.buildAccessTokenKey(user), String.class) + .ifPresent(accessToken -> cacheStore.delete(SecurityUtils.buildTokenAccessKey(accessToken))); cacheStore.delete(SecurityUtils.buildTokenRefreshKey(refreshToken)); cacheStore.delete(SecurityUtils.buildAccessTokenKey(user)); cacheStore.delete(SecurityUtils.buildRefreshTokenKey(user)); 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 88df39af0..483b6308a 100644 --- a/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BackupServiceImpl.java @@ -8,6 +8,7 @@ import run.halo.app.service.BackupService; import run.halo.app.service.PostService; import java.io.IOException; +import java.nio.charset.StandardCharsets; /** * Backup service implementation. @@ -28,7 +29,7 @@ public class BackupServiceImpl implements BackupService { public BasePostDetailDTO importMarkdowns(MultipartFile file) throws IOException { // Read markdown content. - String markdown = IoUtil.read(file.getInputStream(), "UTF-8"); + String markdown = IoUtil.read(file.getInputStream(), StandardCharsets.UTF_8); // TODO sheet import diff --git a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java index 44014d0b2..d1130ea96 100644 --- a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java @@ -340,6 +340,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe category = categoryService.create(category); } categoryIds.add(category.getId()); + break; default: break; }