Skip to content

Commit a4b7f9c

Browse files
committed
MDC implement Map to extend ConcurrentHashMap
1 parent 2edb460 commit a4b7f9c

File tree

12 files changed

+255
-154
lines changed

12 files changed

+255
-154
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version=1.2.0
1+
version=1.2.1
22
group=io.github.numichi
33
developerId=numichi
44
developerName=Donát Csongor

src/main/java/io/github/numichi/reactive/logger/DefaultValues.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package io.github.numichi.reactive.logger;
22

3-
import io.github.numichi.reactive.logger.annotations.JacocoSkipGeneratedReport;
43
import io.github.numichi.reactive.logger.exception.AlreadyConfigurationException;
54
import reactor.core.scheduler.Scheduler;
65
import reactor.core.scheduler.Schedulers;
76

8-
@JacocoSkipGeneratedReport
97
public class DefaultValues {
10-
private static final String DEFAULT_REACTOR_CONTEXT_MDC_KEY = "EFAULT_REACTOR_CONTEXT_MDC_KEY";
8+
private static final String DEFAULT_REACTOR_CONTEXT_MDC_KEY = "DEFAULT_REACTOR_CONTEXT_MDC_KEY";
119
private static final Scheduler DEFAULT_SCHEDULER = Schedulers.boundedElastic();
1210
private static DefaultValues instance = null;
1311
private final String defaultReactorContextMdcKey;
@@ -30,6 +28,10 @@ private DefaultValues(String defaultReactorContextMdcKey, Scheduler defaultSched
3028
this.defaultScheduler = defaultScheduler;
3129
}
3230

31+
public static void reset() {
32+
instance = null;
33+
}
34+
3335
public static DefaultValues getInstance() {
3436
if (instance == null) {
3537
instance = configuration();
Lines changed: 29 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,131 +1,67 @@
11
package io.github.numichi.reactive.logger;
22

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;
83
import java.util.Map;
94
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;
156

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;
209

2110
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);
5912
}
6013

61-
@Override
62-
public boolean containsValue(Object value) {
63-
return mdcMap.containsValue(value);
14+
public MDC(String assignedContextKey) {
15+
this(assignedContextKey, null);
6416
}
6517

66-
@Override
67-
public String get(Object key) {
68-
return mdcMap.get(key);
18+
public MDC(Map<String, String> mdcMap) {
19+
this(null, mdcMap);
6920
}
7021

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);
8825
}
89-
90-
mdcMap.putAll(map);
91-
}
9226

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+
}
9632
}
9733

98-
@Override
99-
public Set<String> keySet() {
100-
return mdcMap.keySet();
34+
public String getAssignedContextKey() {
35+
return assignedContextKey;
10136
}
10237

103-
@Override
104-
public Collection<String> values() {
105-
return mdcMap.values();
38+
@Deprecated
39+
public Map<String, String> asMap() {
40+
return this;
10641
}
10742

108-
@Override
109-
public Set<Entry<String, String>> entrySet() {
110-
return mdcMap.entrySet();
43+
@Deprecated
44+
public String getContextKey() {
45+
return assignedContextKey;
11146
}
11247

11348
@Override
11449
public boolean equals(Object o) {
11550
if (this == o) {
11651
return true;
11752
}
118-
11953
if (!(o instanceof MDC)) {
12054
return false;
12155
}
122-
56+
if (!super.equals(o)) {
57+
return false;
58+
}
12359
MDC mdc = (MDC) o;
124-
return mdcMap.equals(mdc.mdcMap) && mdcContextKey.equals(mdc.mdcContextKey);
60+
return getAssignedContextKey().equals(mdc.getAssignedContextKey());
12561
}
12662

12763
@Override
12864
public int hashCode() {
129-
return Objects.hash(mdcMap, mdcContextKey);
65+
return Objects.hash(super.hashCode(), getAssignedContextKey());
13066
}
13167
}

src/main/java/io/github/numichi/reactive/logger/annotations/JacocoSkipGeneratedReport.java

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)