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.JsonNode;
24 import com.fasterxml.jackson.databind.node.ObjectNode;
25 import java.io.IOException;
26 import java.util.List;
27 import org.identityconnectors.framework.common.objects.AttributeDelta;
28 import org.identityconnectors.framework.common.objects.AttributeDeltaBuilder;
29
30 @SuppressWarnings("squid:S3776")
31 class AttributeDeltaDeserializer extends AbstractValueDeserializer<AttributeDelta> {
32
33 @Override
34 public AttributeDelta deserialize(final JsonParser jp, final DeserializationContext ctx) throws IOException {
35 ObjectNode tree = jp.readValueAsTree();
36
37 String name = tree.get("name").asText();
38
39 List<Object> valuesToAdd = doDeserialize(tree.get("valuesToAdd"), jp);
40 List<Object> valuesToRemove = doDeserialize(tree.get("valuesToRemove"), jp);
41
42 JsonNode valuesToReplaceNode = tree.get("valuesToReplace");
43 List<Object> valuesToReplace = doDeserialize(valuesToReplaceNode, jp);
44
45 return valuesToReplaceNode.isNull()
46 ? AttributeDeltaBuilder.build(name, valuesToAdd, valuesToRemove)
47 : AttributeDeltaBuilder.build(name, valuesToReplace);
48 }
49 }