1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.appender.db.jpa.converter;
18
19 import java.io.IOException;
20 import java.util.Map;
21 import javax.persistence.AttributeConverter;
22 import javax.persistence.PersistenceException;
23
24 import com.fasterxml.jackson.core.type.TypeReference;
25 import com.fasterxml.jackson.databind.ObjectMapper;
26
27
28
29
30
31
32
33
34
35 public class ContextMapJsonAttributeConverter implements AttributeConverter<Map<String, String>, String> {
36 static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
37
38 @Override
39 public String convertToDatabaseColumn(final Map<String, String> contextMap) {
40 try {
41 return OBJECT_MAPPER.writeValueAsString(contextMap);
42 } catch (IOException e) {
43 throw new PersistenceException("Failed to convert map to JSON string.", e);
44 }
45 }
46
47 @Override
48 public Map<String, String> convertToEntityAttribute(final String s) {
49 if (s == null || s.length() == 0) {
50 return null;
51 }
52 try {
53 return OBJECT_MAPPER.readValue(s, new TypeReference<Map<String, String>>() { });
54 } catch (IOException e) {
55 throw new PersistenceException("Failed to convert JSON string to map.", e);
56 }
57 }
58 }