1
1
package io .github .numichi .reactive .logger ;
2
2
3
- import io .github .numichi .reactive .logger .annotations .JacocoSkipGeneratedReport ;
4
- import reactor .util .annotation .NonNull ;
5
-
6
- import java .util .Collection ;
7
- import java .util .HashMap ;
8
3
import java .util .Map ;
9
4
import java .util .Objects ;
10
- import java .util .Set ;
11
-
12
- import static io .github .numichi .reactive .logger .exception .Messages .KEY_NOT_NULL ;
13
- import static io .github .numichi .reactive .logger .exception .Messages .MAP_NOT_NULL ;
14
- import static io .github .numichi .reactive .logger .exception .Messages .VALUE_NOT_NULL ;
5
+ import java .util .concurrent .ConcurrentHashMap ;
15
6
16
- @ JacocoSkipGeneratedReport
17
- public class MDC implements Map <String , String > {
18
- private final Map <String , String > mdcMap ;
19
- private final String mdcContextKey ;
7
+ public class MDC extends ConcurrentHashMap <String , String > {
8
+ private final String assignedContextKey ;
20
9
21
10
public MDC () {
22
- this (DefaultValues .getInstance ().getDefaultReactorContextMdcKey (), new HashMap <>());
23
- }
24
-
25
- public MDC (String mdcContextKey ) {
26
- this (mdcContextKey , new HashMap <>());
27
- }
28
-
29
- public MDC (Map <String , String > mdc ) {
30
- this (DefaultValues .getInstance ().getDefaultReactorContextMdcKey (), mdc );
31
- }
32
-
33
- public MDC (String mdcContextKey , Map <String , String > mdc ) {
34
- this .mdcMap = mdc ;
35
- this .mdcContextKey = mdcContextKey ;
36
- }
37
-
38
- public Map <String , String > asMap () {
39
- return mdcMap ;
40
- }
41
-
42
- public String getContextKey () {
43
- return mdcContextKey ;
44
- }
45
-
46
- @ Override
47
- public int size () {
48
- return mdcMap .size ();
49
- }
50
-
51
- @ Override
52
- public boolean isEmpty () {
53
- return mdcMap .isEmpty ();
54
- }
55
-
56
- @ Override
57
- public boolean containsKey (Object key ) {
58
- return mdcMap .containsKey (key );
11
+ this (null , null );
59
12
}
60
13
61
- @ Override
62
- public boolean containsValue (Object value ) {
63
- return mdcMap .containsValue (value );
14
+ public MDC (String assignedContextKey ) {
15
+ this (assignedContextKey , null );
64
16
}
65
17
66
- @ Override
67
- public String get (Object key ) {
68
- return mdcMap .get (key );
18
+ public MDC (Map <String , String > mdcMap ) {
19
+ this (null , mdcMap );
69
20
}
70
21
71
- @ Override
72
- public String put (@ NonNull String key , @ NonNull String value ) {
73
- Objects .requireNonNull (key , KEY_NOT_NULL );
74
- Objects .requireNonNull (value , VALUE_NOT_NULL );
75
-
76
- return mdcMap .put (key , value );
77
- }
78
-
79
- @ Override
80
- public String remove (Object key ) {
81
- return mdcMap .remove (key );
82
- }
83
-
84
- @ Override
85
- public void putAll (@ NonNull Map <? extends String , ? extends String > map ) {
86
- if (map .containsKey (null ) || map .containsValue (null )) {
87
- throw new NullPointerException (MAP_NOT_NULL );
22
+ public MDC (String assignedContextKey , Map <String , String > mdcMap ) {
23
+ if (mdcMap != null ) {
24
+ this .putAll (mdcMap );
88
25
}
89
-
90
- mdcMap .putAll (map );
91
- }
92
26
93
- @ Override
94
- public void clear () {
95
- mdcMap .clear ();
27
+ if (assignedContextKey != null ) {
28
+ this .assignedContextKey = assignedContextKey ;
29
+ } else {
30
+ this .assignedContextKey = DefaultValues .getInstance ().getDefaultReactorContextMdcKey ();
31
+ }
96
32
}
97
33
98
- @ Override
99
- public Set <String > keySet () {
100
- return mdcMap .keySet ();
34
+ public String getAssignedContextKey () {
35
+ return assignedContextKey ;
101
36
}
102
37
103
- @ Override
104
- public Collection <String > values () {
105
- return mdcMap . values () ;
38
+ @ Deprecated
39
+ public Map <String , String > asMap () {
40
+ return this ;
106
41
}
107
42
108
- @ Override
109
- public Set < Entry < String , String >> entrySet () {
110
- return mdcMap . entrySet () ;
43
+ @ Deprecated
44
+ public String getContextKey () {
45
+ return assignedContextKey ;
111
46
}
112
47
113
48
@ Override
114
49
public boolean equals (Object o ) {
115
50
if (this == o ) {
116
51
return true ;
117
52
}
118
-
119
53
if (!(o instanceof MDC )) {
120
54
return false ;
121
55
}
122
-
56
+ if (!super .equals (o )) {
57
+ return false ;
58
+ }
123
59
MDC mdc = (MDC ) o ;
124
- return mdcMap . equals ( mdc . mdcMap ) && mdcContextKey .equals (mdc .mdcContextKey );
60
+ return getAssignedContextKey () .equals (mdc .getAssignedContextKey () );
125
61
}
126
62
127
63
@ Override
128
64
public int hashCode () {
129
- return Objects .hash (mdcMap , mdcContextKey );
65
+ return Objects .hash (super . hashCode (), getAssignedContextKey () );
130
66
}
131
67
}
0 commit comments