migrate sdnr features to phosphorus
[ccsdk/features.git] / sdnr / wt / common-yang / utils / src / main / java / org / onap / ccsdk / features / sdnr / wt / yang / mapper / mapperextensions / YangtoolsMapDesirializer2.java
1 package org.onap.ccsdk.features.sdnr.wt.yang.mapper.mapperextensions;
2
3 import com.fasterxml.jackson.core.JsonParser;
4 import com.fasterxml.jackson.core.JsonProcessingException;
5 import com.fasterxml.jackson.databind.DeserializationContext;
6 import com.fasterxml.jackson.databind.JsonDeserializer;
7 import com.fasterxml.jackson.databind.type.CollectionLikeType;
8 import java.io.IOException;
9 import java.util.List;
10 import java.util.Map;
11 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapper;
12 import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapperHelper;
13 import org.opendaylight.yangtools.yang.binding.Identifiable;
14 import org.opendaylight.yangtools.yang.binding.Identifier;
15
16 public class YangtoolsMapDesirializer2<K extends Identifier<V>, V extends Identifiable<K>>
17                 extends JsonDeserializer<Map<K, V>> {
18
19         private final Class<V> clazz;
20         private final YangToolsMapper mapper;
21
22         public YangtoolsMapDesirializer2(Class<V> clazz) {
23                 super();
24                 this.clazz = clazz;
25                 this.mapper = new YangToolsMapper();
26         }
27
28         @Override
29         public Map<K, V> deserialize(JsonParser p, DeserializationContext ctxt)
30                         throws IOException, JsonProcessingException {
31                 CollectionLikeType type = ctxt.getTypeFactory().constructCollectionType(List.class, clazz);
32                 List<V> list = mapper.readValue(p,type);
33                 return YangToolsMapperHelper.toMap(list);
34         }
35
36 }