Fixed issue with canonicalization of link identifiers.
- added asId() to LinkKey
- BiLink.linkId() now returns LinkKey.asId()
Change-Id: Ie9069ca5302f09fca9e213ce33fa87bd8868e752
diff --git a/core/api/src/main/java/org/onosproject/net/LinkKey.java b/core/api/src/main/java/org/onosproject/net/LinkKey.java
index 0b0d5fb..5a2566f 100644
--- a/core/api/src/main/java/org/onosproject/net/LinkKey.java
+++ b/core/api/src/main/java/org/onosproject/net/LinkKey.java
@@ -15,13 +15,12 @@
*/
package org.onosproject.net;
-import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.common.base.MoreObjects;
+import org.onosproject.net.link.LinkDescription;
import java.util.Objects;
-import org.onosproject.net.link.LinkDescription;
-
-import com.google.common.base.MoreObjects;
+import static com.google.common.base.Preconditions.checkNotNull;
// TODO Consider renaming.
// it's an identifier for a Link, but it's not ElementId, so not using LinkId.
@@ -31,10 +30,23 @@
*/
public final class LinkKey {
+ private static final String DELIM = "-";
+
private final ConnectPoint src;
private final ConnectPoint dst;
/**
+ * Creates a link identifier with source and destination connection point.
+ *
+ * @param src source connection point
+ * @param dst destination connection point
+ */
+ private LinkKey(ConnectPoint src, ConnectPoint dst) {
+ this.src = checkNotNull(src);
+ this.dst = checkNotNull(dst);
+ }
+
+ /**
* Returns source connection point.
*
* @return source connection point
@@ -53,14 +65,38 @@
}
/**
- * Creates a link identifier with source and destination connection point.
+ * Returns a string suitable to be used as an identifier.
*
- * @param src source connection point
- * @param dst destination connection point
+ * @return string as identifier
*/
- private LinkKey(ConnectPoint src, ConnectPoint dst) {
- this.src = checkNotNull(src);
- this.dst = checkNotNull(dst);
+ public String asId() {
+ return src + DELIM + dst;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(src, dst);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof LinkKey) {
+ final LinkKey other = (LinkKey) obj;
+ return Objects.equals(this.src, other.src) &&
+ Objects.equals(this.dst, other.dst);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .add("src", src)
+ .add("dst", dst)
+ .toString();
}
/**
@@ -94,29 +130,4 @@
return new LinkKey(link.src(), link.dst());
}
- @Override
- public int hashCode() {
- return Objects.hash(src, dst);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj instanceof LinkKey) {
- final LinkKey other = (LinkKey) obj;
- return Objects.equals(this.src, other.src) &&
- Objects.equals(this.dst, other.dst);
- }
- return false;
- }
-
- @Override
- public String toString() {
- return MoreObjects.toStringHelper(getClass())
- .add("src", src)
- .add("dst", dst)
- .toString();
- }
}
diff --git a/core/api/src/main/java/org/onosproject/ui/topo/BiLink.java b/core/api/src/main/java/org/onosproject/ui/topo/BiLink.java
index 16e8dc5..b50e34d 100644
--- a/core/api/src/main/java/org/onosproject/ui/topo/BiLink.java
+++ b/core/api/src/main/java/org/onosproject/ui/topo/BiLink.java
@@ -38,7 +38,7 @@
* that the caller will have used {@link TopoUtils#canonicalLinkKey(Link)}
* to generate the key.
*
- * @param key canonical key for this bi-link
+ * @param key canonical key for this bi-link
* @param link first link
*/
public BiLink(LinkKey key, Link link) {
@@ -62,7 +62,7 @@
* @return link identifier
*/
public String linkId() {
- return TopoUtils.compactLinkString(one);
+ return key.asId();
}
/**
@@ -92,6 +92,11 @@
return two;
}
+ @Override
+ public String toString() {
+ return key.asId();
+ }
+
/**
* Returns the link highlighting to use, based on this bi-link's current
* state.