Skip to content

Commit 53a6a7a

Browse files
committed
修复错误
1 parent ecb2134 commit 53a6a7a

File tree

7 files changed

+25
-33
lines changed

7 files changed

+25
-33
lines changed

framework/fit/java/fit-builtin/plugins/fit-validation-hibernate-jakarta/src/main/java/modelengine/fitframework/validation/LocaleContextMessageInterpolator.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
package modelengine.fitframework.validation;
88

9+
import modelengine.fitframework.util.ObjectUtils;
910
import modelengine.fitframework.util.i18n.LocaleContextHolder;
1011

1112
import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator;
@@ -25,7 +26,6 @@
2526
*/
2627
public class LocaleContextMessageInterpolator implements MessageInterpolator {
2728
private final MessageInterpolator targetInterpolator;
28-
2929
private Locale locale;
3030

3131
/**
@@ -53,7 +53,7 @@ public LocaleContextMessageInterpolator() {
5353
*/
5454
public LocaleContextMessageInterpolator(Locale locale) {
5555
this.targetInterpolator = new ParameterMessageInterpolator();
56-
this.locale = locale;
56+
this.locale = ObjectUtils.getIfNull(locale, Locale::getDefault);
5757
}
5858

5959
/**
@@ -64,7 +64,7 @@ public LocaleContextMessageInterpolator(Locale locale) {
6464
*/
6565
public LocaleContextMessageInterpolator(MessageInterpolator targetInterpolator, Locale locale) {
6666
this.targetInterpolator = targetInterpolator;
67-
this.locale = locale;
67+
this.locale = ObjectUtils.getIfNull(locale, Locale::getDefault);
6868
}
6969

7070
/**
@@ -73,7 +73,7 @@ public LocaleContextMessageInterpolator(MessageInterpolator targetInterpolator,
7373
* @param locale 默认设置的 {@link Locale}。
7474
*/
7575
public void setLocale(Locale locale) {
76-
this.locale = locale;
76+
this.locale = ObjectUtils.getIfNull(locale, Locale::getDefault);
7777
}
7878

7979
@Override
@@ -88,4 +88,4 @@ public String interpolate(String messageTemplate, Context context) {
8888
public String interpolate(String messageTemplate, Context context, Locale locale) {
8989
return this.targetInterpolator.interpolate(messageTemplate, context, locale);
9090
}
91-
}
91+
}

framework/fit/java/fit-builtin/plugins/fit-validation-hibernate-jakarta/src/main/java/modelengine/fitframework/validation/ValidationHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
public class ValidationHandler implements AutoCloseable {
4444
private final ValidatorFactory validatorFactory;
4545
private final Validator validator;
46-
private LocaleContextMessageInterpolator messageInterpolator;
46+
private final LocaleContextMessageInterpolator messageInterpolator;
4747

4848
public ValidationHandler() {
4949
this.messageInterpolator = new LocaleContextMessageInterpolator();
@@ -163,4 +163,4 @@ private boolean isJakartaConstraintAnnotation(Annotation annotation) {
163163
return "jakarta.validation".equals(packageName) && "Constraint".equals(className);
164164
});
165165
}
166-
}
166+
}

framework/fit/java/fit-builtin/plugins/fit-validation-hibernate-jakarta/src/test/java/modelengine/fitframework/validation/ValidationHandlerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -755,4 +755,4 @@ void testRangeBigDecimalValidation() {
755755
ConstraintViolationException exception = invokeHandleMethod(method, new Object[] {new BigDecimal("5.5")});
756756
assertThat(exception.getMessage()).contains("需要在10和100之间");
757757
}
758-
}
758+
}

framework/fit/java/fit-builtin/plugins/fit-validation-hibernate-javax/src/main/java/modelengine/fitframework/validation/LocaleContextMessageInterpolator.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
package modelengine.fitframework.validation;
88

9+
import modelengine.fitframework.util.ObjectUtils;
910
import modelengine.fitframework.util.i18n.LocaleContextHolder;
1011

1112
import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator;
@@ -25,7 +26,6 @@
2526
*/
2627
public class LocaleContextMessageInterpolator implements MessageInterpolator {
2728
private final MessageInterpolator targetInterpolator;
28-
2929
private Locale locale;
3030

3131
/**
@@ -53,7 +53,7 @@ public LocaleContextMessageInterpolator() {
5353
*/
5454
public LocaleContextMessageInterpolator(Locale locale) {
5555
this.targetInterpolator = new ParameterMessageInterpolator();
56-
this.locale = locale;
56+
this.locale = ObjectUtils.getIfNull(locale, Locale::getDefault);
5757
}
5858

5959
/**
@@ -64,7 +64,7 @@ public LocaleContextMessageInterpolator(Locale locale) {
6464
*/
6565
public LocaleContextMessageInterpolator(MessageInterpolator targetInterpolator, Locale locale) {
6666
this.targetInterpolator = targetInterpolator;
67-
this.locale = locale;
67+
this.locale = ObjectUtils.getIfNull(locale, Locale::getDefault);
6868
}
6969

7070
/**
@@ -73,7 +73,7 @@ public LocaleContextMessageInterpolator(MessageInterpolator targetInterpolator,
7373
* @param locale 默认设置的 {@link Locale}。
7474
*/
7575
public void setLocale(Locale locale) {
76-
this.locale = locale;
76+
this.locale = ObjectUtils.getIfNull(locale, Locale::getDefault);
7777
}
7878

7979
@Override
@@ -88,4 +88,4 @@ public String interpolate(String messageTemplate, Context context) {
8888
public String interpolate(String messageTemplate, Context context, Locale locale) {
8989
return this.targetInterpolator.interpolate(messageTemplate, context, locale);
9090
}
91-
}
91+
}

framework/fit/java/fit-builtin/plugins/fit-validation-hibernate-javax/src/main/java/modelengine/fitframework/validation/ValidationHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
public class ValidationHandler implements AutoCloseable {
4646
private final ValidatorFactory validatorFactory;
4747
private final Validator validator;
48-
private LocaleContextMessageInterpolator messageInterpolator;
48+
private final LocaleContextMessageInterpolator messageInterpolator;
4949

5050
public ValidationHandler() {
5151
this.messageInterpolator = new LocaleContextMessageInterpolator();
@@ -165,4 +165,4 @@ private boolean isJavaxConstraintAnnotation(Annotation annotation) {
165165
return "javax.validation".equals(packageName) && "Constraint".equals(className);
166166
});
167167
}
168-
}
168+
}

framework/fit/java/fit-builtin/services/fit-http-classic/definition/src/main/java/modelengine/fit/http/util/i18n/DefualtLocaleResolver.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,8 @@ public Locale resolveLocale(HttpClassicServerRequest request) {
3434
if (StringUtils.isNotBlank(newLocale.trim())) {
3535
return Locale.forLanguageTag(newLocale);
3636
}
37-
String acceptLanguage = null;
38-
List<String> acceptLanguages = request.headers().all("Accept-Language");
39-
40-
for (String language : acceptLanguages) {
41-
if (StringUtils.isNotBlank(language.trim())) {
42-
acceptLanguage = language;
43-
break;
44-
}
45-
}
4637

38+
String acceptLanguage = request.headers().first("Accept-Language").orElse(null);
4739
if (StringUtils.isNotBlank(acceptLanguage.trim())) {
4840
return Locale.forLanguageTag(acceptLanguage);
4941
}

framework/fit/java/fit-builtin/services/fit-http-classic/definition/src/main/java/modelengine/fit/http/util/i18n/LocaleResolveFilter.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88

99
import modelengine.fit.http.server.*;
1010
import modelengine.fitframework.annotation.Scope;
11+
import modelengine.fitframework.inspection.Validation;
1112
import modelengine.fitframework.util.StringUtils;
1213
import modelengine.fitframework.util.i18n.LocaleContextHolder;
1314

1415
import java.util.List;
1516
import java.util.Locale;
17+
import java.util.Optional;
1618

1719
/**
1820
* 地区解析过滤器,使用 {@link LocaleResolver} 进行地区解析。
@@ -32,7 +34,7 @@ public class LocaleResolveFilter implements HttpServerFilter {
3234
* @param localeResolver 表示地区解析器的 {@link LocaleResolver}。
3335
*/
3436
public LocaleResolveFilter(LocaleResolver localeResolver) {
35-
this.localeResolver = localeResolver;
37+
this.localeResolver = Validation.notNull(localeResolver, "The locale resolver cannot be null.");
3638
}
3739

3840
/**
@@ -66,14 +68,7 @@ public List<String> mismatchPatterns() {
6668
public void doFilter(HttpClassicServerRequest request, HttpClassicServerResponse response,
6769
HttpServerFilterChain chain) throws DoHttpServerFilterException {
6870
try {
69-
List<String> paramLocales = request.queries().all("locale");
70-
Locale responseLocale = null;
71-
for (String paramLocale : paramLocales) {
72-
if (StringUtils.isNotBlank(paramLocale.trim())) {
73-
responseLocale = Locale.forLanguageTag(paramLocale);
74-
break;
75-
}
76-
}
71+
Locale responseLocale = Locale.forLanguageTag(this.resolveLocaleFromParam(request));
7772
// 如果参数中带有地区,说明用户想使用新地区执行后续的操作,直接设置地区。
7873
if (responseLocale != null) {
7974
LocaleContextHolder.setLocale(responseLocale);
@@ -99,4 +94,9 @@ public void doFilter(HttpClassicServerRequest request, HttpClassicServerResponse
9994
public Scope scope() {
10095
return this.scope;
10196
}
97+
98+
private String resolveLocaleFromParam(HttpClassicServerRequest request) {
99+
Optional<String> paramLocale = request.queries().first("locale");
100+
return paramLocale.orElse(null);
101+
}
102102
}

0 commit comments

Comments
 (0)