2 * Copyright (c) 2014 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.controller.sal.connect.util;
10 import org.opendaylight.controller.config.api.ModuleIdentifier;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
15 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
17 import com.google.common.base.Preconditions;
18 import org.opendaylight.yangtools.yang.common.QName;
20 public class RemoteDeviceId {
22 private final String name;
23 private final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier path;
24 private final InstanceIdentifier<Node> bindingPath;
25 private final NodeKey key;
27 public RemoteDeviceId(final ModuleIdentifier identifier) {
28 this(Preconditions.checkNotNull(identifier).getInstanceName());
31 public RemoteDeviceId(final String name) {
32 Preconditions.checkNotNull(name);
34 this.key = new NodeKey(new NodeId(name));
35 this.path = createBIPath(name);
36 this.bindingPath = createBindingPath(key);
39 private static InstanceIdentifier<Node> createBindingPath(final NodeKey key) {
40 return InstanceIdentifier.builder(Nodes.class).child(Node.class, key).build();
43 private static org.opendaylight.yangtools.yang.data.api.InstanceIdentifier createBIPath(final String name) {
44 final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.InstanceIdentifierBuilder builder =
45 org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.builder();
46 builder.node(Nodes.QNAME).nodeWithKey(Node.QNAME, QName.create(Node.QNAME.getNamespace(), Node.QNAME.getRevision(), "id"), name);
48 return builder.build();
51 public String getName() {
55 public InstanceIdentifier<Node> getBindingPath() {
59 public org.opendaylight.yangtools.yang.data.api.InstanceIdentifier getPath() {
63 public NodeKey getBindingKey() {
68 public String toString() {
69 return "RemoteDevice{" + name +'}';
73 public boolean equals(final Object o) {
74 if (this == o) return true;
75 if (!(o instanceof RemoteDeviceId)) return false;
77 final RemoteDeviceId that = (RemoteDeviceId) o;
79 if (!name.equals(that.name)) return false;
80 if (!bindingPath.equals(that.bindingPath)) return false;
86 public int hashCode() {
87 int result = name.hashCode();
88 result = 31 * result + bindingPath.hashCode();