2fe7fa11f24f388c7cacd422731bfc1eabd4c500
[ccsdk/features.git] /
1 package org.onap.ccsdk.features.sdnr.wt.yang.mapper.mapperextensions;
2
3 import java.io.IOException;
4 import java.util.ArrayList;
5 import java.util.List;
6 import java.util.Map;
7 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapper;
8 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapperHelper;
9 import org.opendaylight.yangtools.yang.binding.Identifiable;
10 import org.opendaylight.yangtools.yang.binding.Identifier;
11 import com.fasterxml.jackson.core.JsonParser;
12 import com.fasterxml.jackson.core.JsonProcessingException;
13 import com.fasterxml.jackson.core.ObjectCodec;
14 import com.fasterxml.jackson.core.TreeNode;
15 import com.fasterxml.jackson.databind.BeanDescription;
16 import com.fasterxml.jackson.databind.DeserializationContext;
17 import com.fasterxml.jackson.databind.JsonDeserializer;
18 import com.fasterxml.jackson.databind.JsonNode;
19 import com.fasterxml.jackson.databind.node.ArrayNode;
20 import com.fasterxml.jackson.databind.type.CollectionLikeType;
21 import com.fasterxml.jackson.databind.type.TypeFactory;
22 import com.google.common.collect.Maps;
23
24 public class YangtoolsMapDesirializer<K extends Identifier<V>, V extends Identifiable<K>>
25                 extends JsonDeserializer<Map<K, V>> {
26
27         private final Class<V> clazz;
28         private final YangToolsMapper mapper;
29         
30         public YangtoolsMapDesirializer(Class<V> clazz) {
31                 super();
32                 this.clazz = clazz;
33                 this.mapper = new YangToolsMapper();
34         }
35
36         @Override
37         public Map<K, V> deserialize(JsonParser p, DeserializationContext ctxt)
38                         throws IOException, JsonProcessingException {
39                 CollectionLikeType type = ctxt.getTypeFactory().constructCollectionType(List.class, clazz);
40                 List<V> list = mapper.readValue(p,type);
41                 return YangToolsMapperHelper.toMap(list);
42         }
43
44 }