1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.common.lib.jackson;
20
21 import com.fasterxml.jackson.core.JsonGenerator;
22 import com.fasterxml.jackson.core.JsonProcessingException;
23 import com.fasterxml.jackson.databind.SerializationFeature;
24 import com.fasterxml.jackson.databind.json.JsonMapper;
25 import java.io.File;
26 import java.io.IOException;
27 import java.io.OutputStream;
28 import java.io.Writer;
29 import java.util.Map;
30
31
32
33
34
35 public class SyncopeJsonMapper extends JsonMapper {
36
37 private static final long serialVersionUID = -317191546835195103L;
38
39 public SyncopeJsonMapper() {
40 super();
41
42 findAndRegisterModules();
43
44 configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
45 }
46
47
48
49
50
51
52
53
54 protected Object unwrapMap(final Object value) {
55 if (value instanceof Map) {
56 Map<?, ?> map = (Map<?, ?>) value;
57 if (map.size() == 1) {
58 return map.values().iterator().next();
59 }
60 }
61
62 return value;
63 }
64
65 @Override
66 public void writeValue(final JsonGenerator jgen, final Object value) throws IOException {
67 super.writeValue(jgen, unwrapMap(value));
68 }
69
70 @Override
71 public void writeValue(final File resultFile, final Object value) throws IOException {
72 super.writeValue(resultFile, unwrapMap(value));
73 }
74
75 @Override
76 public void writeValue(final OutputStream out, final Object value) throws IOException {
77 super.writeValue(out, unwrapMap(value));
78 }
79
80 @Override
81 public void writeValue(final Writer writer, final Object value) throws IOException {
82 super.writeValue(writer, unwrapMap(value));
83 }
84
85 @Override
86 public byte[] writeValueAsBytes(final Object value) throws JsonProcessingException {
87 return super.writeValueAsBytes(unwrapMap(value));
88 }
89
90 @Override
91 public String writeValueAsString(final Object value) throws JsonProcessingException {
92 return super.writeValueAsString(unwrapMap(value));
93 }
94 }