2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.protocol.bmp.impl.app;
10 import com.google.common.collect.ImmutableMap;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev171207.rib.TablesKey;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.SubsequentAddressFamily;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bmp.monitor.rev171207.BmpMonitor;
15 import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
19 public final class TablesUtil {
21 public static final QName BMP_TABLES_QNAME = QName.create(BmpMonitor.QNAME.getNamespace(),
22 BmpMonitor.QNAME.getRevision(), "tables").intern();
23 public static final QName BMP_ATTRIBUTES_QNAME = QName.create(BmpMonitor.QNAME.getNamespace(),
24 BmpMonitor.QNAME.getRevision(), "attributes").intern();
25 public static final QName BMP_ROUTES_QNAME = QName.create(BmpMonitor.QNAME.getNamespace(),
26 BmpMonitor.QNAME.getRevision(), "routes").intern();
27 public static final QName BMP_AFI_QNAME = QName.create(BMP_TABLES_QNAME, "afi").intern();
28 public static final QName BMP_SAFI_QNAME = QName.create(BMP_TABLES_QNAME, "safi").intern();
30 private TablesUtil() {
31 throw new UnsupportedOperationException("Utility class");
35 * Creates Yang Instance Identifier path argument from supplied AFI and SAFI.
37 * @param afi Class representing AFI
38 * @param safi Class representing SAFI
39 * @return NodeIdentifierWithPredicates for specified AFI, SAFI combination.
41 public static NodeIdentifierWithPredicates toYangTablesKey(final Class<? extends AddressFamily> afi,
42 final Class<? extends SubsequentAddressFamily> safi) {
43 final ImmutableMap<QName, Object> keyValues = ImmutableMap.of(
44 BMP_AFI_QNAME, BindingReflections.findQName(afi),
45 BMP_SAFI_QNAME, BindingReflections.findQName(safi));
46 return new NodeIdentifierWithPredicates(BMP_TABLES_QNAME, keyValues);
50 * Creates Yang Instance Identifier path argument from supplied QNAMES and AFI and SAFI.
52 * @param nodeName QName reprenting node
53 * @param afi Class representing AFI
54 * @param safi Class representing SAFI
55 * @return NodeIdentifierWithPredicates for specified AFI, SAFI combination.
57 public static NodeIdentifierWithPredicates toYangTablesKey(final QName nodeName,
58 final Class<? extends AddressFamily> afi,
59 final Class<? extends SubsequentAddressFamily> safi) {
60 final QName afiQname = QName.create(nodeName, "afi").intern();
61 final QName safiQname = QName.create(nodeName, "safi").intern();
62 final ImmutableMap<QName, Object> keyValues = ImmutableMap.of(
63 afiQname, BindingReflections.findQName(afi),
64 safiQname, BindingReflections.findQName(safi));
65 return new NodeIdentifierWithPredicates(nodeName, keyValues);
69 * Creates Yang Instance Identifier path argument from supplied {@link TablesKey}.
71 * @param tablesKey Tables key representing table.
72 * @return NodeIdentifierWithPredicates of for specified AFI, SAFI combination.
74 public static NodeIdentifierWithPredicates toYangTablesKey(final TablesKey tablesKey) {
75 return toYangTablesKey(tablesKey.getAfi(), tablesKey.getSafi());