1 package org.opendaylight.alto.commons.types.converter;
3 import org.opendaylight.alto.commons.helper.Converter;
5 import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostMap;
6 import org.opendaylight.alto.commons.types.rfc7285.RFC7285VersionTag;
7 import org.opendaylight.alto.commons.types.rfc7285.RFC7285CostType;
10 import java.util.LinkedHashMap;
12 import com.fasterxml.jackson.databind.JsonNode;
14 public class YANGJSON2RFCCostMapConverter extends Converter<JsonNode, RFC7285CostMap> {
15 public YANGJSON2RFCCostMapConverter() {
18 public YANGJSON2RFCCostMapConverter(JsonNode _in) {
23 protected Object _convert() {
24 JsonNode node = this.in();
25 RFC7285CostMap cm = new RFC7285CostMap();
27 JsonNode meta = node.get("meta");
28 for (JsonNode vtag: meta.get("dependentVtags")) {
29 String resource_id = vtag.get("resourceId").get("value").asText();
30 String tag = vtag.get("tag").get("value").asText();
31 cm.meta.netmap_tags.add(new RFC7285VersionTag(resource_id, tag));
34 JsonNode cost_type = meta.get("costType");
35 String mode = cost_type.get("costMode").asText();
36 String metric = cost_type.get("costMetric").get("value").asText();
37 cm.meta.costType = new RFC7285CostType(mode, metric);
39 JsonNode map = node.get("map");
40 assert !map.isArray();
41 for (JsonNode cost_map: map) {
42 String src_pid = cost_map.get("src").get("value").asText();
43 Map<String, Object> data = new LinkedHashMap<String, Object>();
45 for (JsonNode dst: cost_map.get("dstCosts")) {
46 String dst_pid = dst.get("dst").get("value").asText();
48 JsonNode cost_node = dst.get("cost");
49 if ((cost_node != null) && (!cost_node.isNull())) {
50 data.put(dst_pid, cost_node.asText());
54 cm.map.put(src_pid, data);