Skip to content

Commit 134654e

Browse files
committedJul 18, 2023
refine MessageSource
1 parent aaf1db8 commit 134654e

File tree

9 files changed

+74
-44
lines changed

9 files changed

+74
-44
lines changed
 

‎demo/skr-demo-all-in-one/src/test/java/demo/skr/aio/util/JsonUtilTest.java

+35
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@
1818
import com.fasterxml.jackson.annotation.JsonIgnore;
1919
import com.fasterxml.jackson.databind.JsonNode;
2020
import com.fasterxml.jackson.databind.ObjectMapper;
21+
import com.fasterxml.jackson.databind.node.NullNode;
22+
import com.fasterxml.jackson.databind.node.ObjectNode;
2123
import org.junit.Test;
2224
import org.skr.common.util.JsonUtil;
2325
import org.skr.config.json.JsonSkipPersistence;
2426

27+
import java.util.Optional;
28+
2529
import static org.hamcrest.MatcherAssert.assertThat;
2630
import static org.hamcrest.Matchers.*;
2731

@@ -57,6 +61,12 @@ public record B(
5761
@JsonSkipPersistence
5862
int b) {}
5963

64+
public static class C {
65+
public Optional<Integer> a = Optional.empty();
66+
67+
public Optional<Integer> b;
68+
}
69+
6070
@Test
6171
public void testSkipPersistence() {
6272
ObjectMapper objectMapper = JsonUtil.setupPersistentObjectMapper(JsonUtil.getObjectMapper());
@@ -78,4 +88,29 @@ public void testSkipPersistence() {
7888
assertThat(json.get("a"), notNullValue());
7989
assertThat(json.get("b"), nullValue());
8090
}
91+
92+
@Test
93+
public void testOptional() {
94+
ObjectMapper objectMapper = JsonUtil.setupPersistentObjectMapper(JsonUtil.getObjectMapper());
95+
96+
C c1 = new C();
97+
c1.a = Optional.of(1);
98+
JsonNode json = JsonUtil.toJsonNode(objectMapper, c1);
99+
assertThat(json.get("a"), notNullValue());
100+
assertThat(json.get("a").asInt(), equalTo(1));
101+
102+
C c2 = new C();
103+
json = JsonUtil.toJsonNode(objectMapper, c2);
104+
assertThat(json.get("a"), equalTo(NullNode.getInstance()));
105+
assertThat(json.get("b"), nullValue());
106+
107+
C c3 = objectMapper.convertValue(json, C.class);
108+
assertThat(c3.a, equalTo(Optional.empty()));
109+
assertThat(c3.b, nullValue());
110+
111+
ObjectNode c4Json = objectMapper.createObjectNode();
112+
C c4 = objectMapper.convertValue(c4Json.put("a", "1"), C.class);
113+
assertThat(c4.a, notNullValue());
114+
assertThat(c4.a.get(), equalTo(1));
115+
}
81116
}

‎demo/skr-demo-all-in-one/src/test/java/demo/skr/aio/util/ValuedEnumTest.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
public class ValuedEnumTest {
3939

4040
@Test
41-
@Transactional
4241
public void testStringEnumConversion() {
4342
ErrorInfo errorInfo = ErrorInfo.INTERNAL_SERVER_ERROR.msgArgs("test");
4443
String json = JsonUtil.toJson(errorInfo);
@@ -51,7 +50,6 @@ public void testStringEnumConversion() {
5150
}
5251

5352
@Test
54-
@Transactional
5553
public void testIntegerEnumConversion() {
5654
String json = JsonUtil.toJson(PermissionDetail.PermissionResult.PERMISSION_LIMITED);
5755
assertThat(json, notNullValue());
@@ -63,4 +61,12 @@ public void testIntegerEnumConversion() {
6361
assertThat(deserializedObj, equalTo(PermissionDetail.PermissionResult.PERMISSION_LIMITED));
6462
}
6563

64+
@Test
65+
public void testPropertiesMessages() {
66+
assertThat(PermissionDetail.PermissionResult.PERMISSION_LIMITED.enumLabel(), equalTo("Permission Checking Result"));
67+
assertThat(PermissionDetail.PermissionResult.PERMISSION_LIMITED.valueLabel(), equalTo("Permission limited"));
68+
69+
assertThat(ErrorInfo.INTERNAL_SERVER_ERROR.msgArgs("asdf").getMessage(), equalTo("内部错误: asdf"));
70+
}
71+
6672
}

‎gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ demoA_httpPort=8101
99

1010
demoB_httpPort=8102
1111

12-
version=0.3.3
12+
version=0.3.4
1313

1414
springCloudVersion=2022.0.2
1515
springBootVersion=3.0.6

‎skr-common/src/main/java/org/skr/common/exception/AuthException.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,17 @@
1717

1818
import org.springframework.security.core.AuthenticationException;
1919

20+
import java.io.Serial;
21+
2022
/**
2123
* @author <a href="https://github.com/hank-cp">Hank CP</a>
2224
*/
2325
public class AuthException extends AuthenticationException {
2426

25-
private ErrorInfo errorInfo;
27+
@Serial
28+
private static final long serialVersionUID = -1412637398991745466L;
29+
30+
private final ErrorInfo errorInfo;
2631

2732
public AuthException(ErrorInfo errorInfo) {
2833
super(errorInfo.getMessage());

‎skr-common/src/main/java/org/skr/common/exception/PermissionException.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,17 @@
1717

1818
import org.springframework.security.core.AuthenticationException;
1919

20+
import java.io.Serial;
21+
2022
/**
2123
* @author <a href="https://github.com/hank-cp">Hank CP</a>
2224
*/
2325
public class PermissionException extends AuthenticationException {
2426

25-
private ErrorInfo errorInfo;
27+
@Serial
28+
private static final long serialVersionUID = -723686741252944458L;
29+
30+
private final ErrorInfo errorInfo;
2631

2732
public PermissionException(ErrorInfo errorInfo) {
2833
super(errorInfo.getMessage());

‎skr-common/src/main/java/org/skr/common/exception/ValidationException.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
*/
1616
package org.skr.common.exception;
1717

18+
import jakarta.validation.constraints.NotEmpty;
1819
import jakarta.validation.constraints.NotNull;
1920

21+
import java.io.Serial;
2022
import java.util.List;
2123
import java.util.stream.Collectors;
2224

@@ -27,9 +29,17 @@
2729
*/
2830
public class ValidationException extends RuntimeException {
2931

32+
@Serial
33+
private static final long serialVersionUID = 2607643356290543387L;
34+
3035
private final List<ErrorInfo> errorInfos;
3136

32-
public ValidationException(@NotNull List<ErrorInfo> errorInfos) {
37+
public ValidationException(@NotNull ErrorInfo errorInfo) {
38+
super(errorInfo.getMessage());
39+
this.errorInfos = List.of(errorInfo);
40+
}
41+
42+
public ValidationException(@NotEmpty List<ErrorInfo> errorInfos) {
3343
super(errorInfos.stream()
3444
.map(ErrorInfo::getMessage)
3545
.collect(Collectors.joining("\n")));

‎skr-common/src/main/java/org/skr/config/EnumLabelMessageSource.java

+3-19
Original file line numberDiff line numberDiff line change
@@ -18,44 +18,28 @@
1818
import org.skr.SkrProperties;
1919
import org.springframework.beans.factory.InitializingBean;
2020
import org.springframework.beans.factory.annotation.Autowired;
21-
import org.springframework.boot.autoconfigure.context.MessageSourceProperties;
2221
import org.springframework.context.support.ResourceBundleMessageSource;
2322
import org.springframework.stereotype.Component;
2423
import org.springframework.util.StringUtils;
2524

26-
import java.time.Duration;
25+
import java.nio.charset.StandardCharsets;
2726

2827
/**
2928
* @author <a href="https://github.com/hank-cp">Hank CP</a>
3029
*/
3130
@Component
3231
public class EnumLabelMessageSource extends ResourceBundleMessageSource implements InitializingBean {
3332

34-
@Autowired(required = false)
35-
private MessageSourceProperties messageSourceProperties;
36-
3733
@Autowired
3834
private SkrProperties skrProperties;
3935

4036
@Override
4137
public void afterPropertiesSet() {
42-
if (messageSourceProperties == null) {
43-
messageSourceProperties = new MessageSourceProperties();
44-
}
45-
4638
if (StringUtils.hasText(skrProperties.getEnumLabelPropBasename())) {
4739
setBasenames(StringUtils
4840
.commaDelimitedListToStringArray(StringUtils.trimAllWhitespace(skrProperties.getEnumLabelPropBasename())));
4941
}
50-
if (messageSourceProperties.getEncoding() != null) {
51-
setDefaultEncoding(messageSourceProperties.getEncoding().name());
52-
}
53-
setFallbackToSystemLocale(messageSourceProperties.isFallbackToSystemLocale());
54-
Duration cacheDuration = messageSourceProperties.getCacheDuration();
55-
if (cacheDuration != null) {
56-
setCacheMillis(cacheDuration.toMillis());
57-
}
58-
setAlwaysUseMessageFormat(messageSourceProperties.isAlwaysUseMessageFormat());
59-
setUseCodeAsDefaultMessage(messageSourceProperties.isUseCodeAsDefaultMessage());
42+
setDefaultEncoding(StandardCharsets.UTF_8.name());
43+
setUseCodeAsDefaultMessage(true);
6044
}
6145
}

‎skr-common/src/main/java/org/skr/config/ErrorMessageSource.java

+3-19
Original file line numberDiff line numberDiff line change
@@ -18,44 +18,28 @@
1818
import org.skr.SkrProperties;
1919
import org.springframework.beans.factory.InitializingBean;
2020
import org.springframework.beans.factory.annotation.Autowired;
21-
import org.springframework.boot.autoconfigure.context.MessageSourceProperties;
2221
import org.springframework.context.support.ResourceBundleMessageSource;
2322
import org.springframework.stereotype.Component;
2423
import org.springframework.util.StringUtils;
2524

26-
import java.time.Duration;
25+
import java.nio.charset.StandardCharsets;
2726

2827
/**
2928
* @author <a href="https://github.com/hank-cp">Hank CP</a>
3029
*/
3130
@Component
3231
public class ErrorMessageSource extends ResourceBundleMessageSource implements InitializingBean {
3332

34-
@Autowired(required = false)
35-
private MessageSourceProperties messageSourceProperties;
36-
3733
@Autowired
3834
private SkrProperties skrProperties;
3935

4036
@Override
4137
public void afterPropertiesSet() {
42-
if (messageSourceProperties == null) {
43-
messageSourceProperties = new MessageSourceProperties();
44-
}
45-
4638
if (StringUtils.hasText(skrProperties.getErrorMsgPropBasename())) {
4739
setBasenames(StringUtils
4840
.commaDelimitedListToStringArray(StringUtils.trimAllWhitespace(skrProperties.getErrorMsgPropBasename())));
4941
}
50-
if (messageSourceProperties.getEncoding() != null) {
51-
setDefaultEncoding(messageSourceProperties.getEncoding().name());
52-
}
53-
setFallbackToSystemLocale(messageSourceProperties.isFallbackToSystemLocale());
54-
Duration cacheDuration = messageSourceProperties.getCacheDuration();
55-
if (cacheDuration != null) {
56-
setCacheMillis(cacheDuration.toMillis());
57-
}
58-
setAlwaysUseMessageFormat(messageSourceProperties.isAlwaysUseMessageFormat());
59-
setUseCodeAsDefaultMessage(messageSourceProperties.isUseCodeAsDefaultMessage());
42+
setDefaultEncoding(StandardCharsets.UTF_8.name());
43+
setUseCodeAsDefaultMessage(true);
6044
}
6145
}

‎skr-common/src/main/resources/skr-enum.properties

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ ErrorLevel.warn=Warning
22
ErrorLevel.error=Error
33
ErrorLevel.fatal=Fatal
44

5+
PermissionResult=Permission Checking Result
56
PermissionResult.0=Permission Granted
67
PermissionResult.1=Permission Denied
78
PermissionResult.2=Permission limited

0 commit comments

Comments
 (0)
Please sign in to comment.