1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.jackson;
18
19 import java.io.IOException;
20 import java.util.List;
21 import java.util.Map;
22
23 import org.apache.logging.log4j.core.impl.ContextDataFactory;
24 import org.apache.logging.log4j.util.StringMap;
25
26 import com.fasterxml.jackson.core.JsonParser;
27 import com.fasterxml.jackson.core.JsonProcessingException;
28 import com.fasterxml.jackson.core.type.TypeReference;
29 import com.fasterxml.jackson.databind.DeserializationContext;
30 import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
31
32
33
34
35
36
37 public class ContextDataAsEntryListDeserializer extends StdDeserializer<StringMap> {
38
39 private static final long serialVersionUID = 1L;
40
41 ContextDataAsEntryListDeserializer() {
42 super(Map.class);
43 }
44
45 @Override
46 public StringMap deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException,
47 JsonProcessingException {
48 final List<MapEntry> list = jp.readValueAs(new TypeReference<List<MapEntry>>() {
49
50 });
51 final StringMap contextData = new ContextDataFactory().createContextData();
52 for (final MapEntry mapEntry : list) {
53 contextData.putValue(mapEntry.getKey(), mapEntry.getValue());
54 }
55 return contextData;
56 }
57 }