File tree Expand file tree Collapse file tree 6 files changed +71
-2
lines changed
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/context
java/org/hswebframework/web/i18n
resources/META-INF/services
test/java/org/hswebframework/web/i18n Expand file tree Collapse file tree 6 files changed +71
-2
lines changed Original file line number Diff line number Diff line change 10
10
public class AuthenticationThreadLocalAccessor
11
11
implements ThreadLocalAccessor <Authentication > {
12
12
13
- static final String KEY = "cp.hs.auth" ;
13
+ static final Object KEY = Authentication . class ;
14
14
15
15
static {
16
16
ReactiveAuthenticationHolder .addSupplier (
Original file line number Diff line number Diff line change 161
161
<artifactId >hsweb-easy-orm-core</artifactId >
162
162
</dependency >
163
163
164
+ <dependency >
165
+ <groupId >io.micrometer</groupId >
166
+ <artifactId >context-propagation</artifactId >
167
+ <optional >true</optional >
168
+ </dependency >
169
+
164
170
</dependencies >
165
171
</project >
Original file line number Diff line number Diff line change
1
+ package org .hswebframework .web .i18n ;
2
+
3
+ import io .micrometer .context .ThreadLocalAccessor ;
4
+
5
+ import javax .annotation .Nonnull ;
6
+ import java .util .Locale ;
7
+
8
+ public class LocaleThreadLocalAccessor implements ThreadLocalAccessor <Locale > {
9
+
10
+ @ Override
11
+ @ Nonnull
12
+ public Object key () {
13
+ return Locale .class ;
14
+ }
15
+
16
+ @ Override
17
+ public Locale getValue () {
18
+ return LocaleUtils .CONTEXT_THREAD_LOCAL .getIfExists ();
19
+ }
20
+
21
+ @ Override
22
+ public void setValue () {
23
+ LocaleUtils .CONTEXT_THREAD_LOCAL .remove ();
24
+ }
25
+
26
+ @ Override
27
+ public void setValue (@ Nonnull Locale value ) {
28
+ LocaleUtils .CONTEXT_THREAD_LOCAL .set (value );
29
+ }
30
+ }
Original file line number Diff line number Diff line change @@ -35,7 +35,7 @@ public final class LocaleUtils {
35
35
36
36
public static final Locale DEFAULT_LOCALE = Locale .getDefault ();
37
37
38
- private static final FastThreadLocal <Locale > CONTEXT_THREAD_LOCAL = new FastThreadLocal <>();
38
+ static final FastThreadLocal <Locale > CONTEXT_THREAD_LOCAL = new FastThreadLocal <>();
39
39
40
40
static MessageSource messageSource = UnsupportedMessageSource .instance ();
41
41
Original file line number Diff line number Diff line change
1
+ org.hswebframework.web.i18n.LocaleThreadLocalAccessor
Original file line number Diff line number Diff line change
1
+ package org .hswebframework .web .i18n ;
2
+
3
+ import org .junit .jupiter .api .Test ;
4
+ import reactor .core .publisher .Hooks ;
5
+ import reactor .core .scheduler .Schedulers ;
6
+
7
+ import java .util .Locale ;
8
+
9
+ import static org .junit .jupiter .api .Assertions .*;
10
+
11
+ class LocaleThreadLocalAccessorTest {
12
+
13
+ static {
14
+ Hooks .enableAutomaticContextPropagation ();
15
+ }
16
+
17
+ @ Test
18
+ void testInReactive () {
19
+
20
+ for (Locale availableLocale : Locale .getAvailableLocales ()) {
21
+ assertEquals (availableLocale ,
22
+ LocaleUtils .doWith (
23
+ availableLocale ,
24
+ () -> LocaleUtils
25
+ .currentReactive ()
26
+ .subscribeOn (Schedulers .boundedElastic ())
27
+ .block ()));
28
+ }
29
+
30
+
31
+ }
32
+ }
You can’t perform that action at this time.
0 commit comments