1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.provisioning.api.serialization;
20
21 import com.fasterxml.jackson.core.JsonParser;
22 import com.fasterxml.jackson.databind.DeserializationContext;
23 import com.fasterxml.jackson.databind.node.ObjectNode;
24 import java.io.IOException;
25 import java.util.List;
26 import org.identityconnectors.framework.common.objects.Attribute;
27 import org.identityconnectors.framework.common.objects.AttributeBuilder;
28 import org.identityconnectors.framework.common.objects.Name;
29 import org.identityconnectors.framework.common.objects.Uid;
30
31 @SuppressWarnings("squid:S3776")
32 class AttributeDeserializer extends AbstractValueDeserializer<Attribute> {
33
34 @Override
35 public Attribute deserialize(final JsonParser jp, final DeserializationContext ctx) throws IOException {
36 ObjectNode tree = jp.readValueAsTree();
37
38 String name = tree.get("name").asText();
39
40 List<Object> values = doDeserialize(tree.get("value"), jp);
41
42 if (Uid.NAME.equals(name)) {
43 return new Uid(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString());
44 } else {
45 if (Name.NAME.equals(name)) {
46 return new Name(values.isEmpty() || values.get(0) == null ? null : values.get(0).toString());
47 }
48
49 return AttributeBuilder.build(name, values);
50 }
51 }
52 }