Compare fix
Change-Id: I56ad744ff9d99198136c97f62896c487285192ec
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java
index 22e6891..a9a0766 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java
@@ -238,6 +238,7 @@
return 0;
}
int result = this.localNodeDescriptors.compareTo(((BgpPrefixLSIdentifier) o).localNodeDescriptors);
+ boolean tlvFound = false;
if (result != 0) {
return result;
} else {
@@ -249,20 +250,24 @@
} else {
return -1;
}
- }
+ }
ListIterator<BgpValueType> listIterator = prefixDescriptor.listIterator();
- ListIterator<BgpValueType> listIteratorOther = ((BgpPrefixLSIdentifier) o).prefixDescriptor.listIterator();
while (listIterator.hasNext()) {
- BgpValueType tlv = listIterator.next();
- if (prefixDescriptor.contains(tlv) && ((BgpPrefixLSIdentifier) o).prefixDescriptor.contains(tlv)) {
- int res = prefixDescriptor.get(prefixDescriptor.indexOf(tlv)).compareTo(
- ((BgpPrefixLSIdentifier) o).prefixDescriptor
- .get(((BgpPrefixLSIdentifier) o).prefixDescriptor.indexOf(tlv)));
- if (res != 0) {
- return res;
+ BgpValueType tlv1 = listIterator.next();
+ for (BgpValueType tlv : ((BgpPrefixLSIdentifier) o).prefixDescriptor) {
+ if (tlv.getType() == tlv1.getType()) {
+ result = prefixDescriptor.get(prefixDescriptor.indexOf(tlv1)).compareTo(
+ ((BgpPrefixLSIdentifier) o).prefixDescriptor
+ .get(((BgpPrefixLSIdentifier) o).prefixDescriptor.indexOf(tlv)));
+ if (result != 0) {
+ return result;
+ }
+ tlvFound = true;
+ break;
}
- } else {
+ }
+ if (!tlvFound) {
return 1;
}
}
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java
index a07368b..7bc4fcb 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java
@@ -234,31 +234,42 @@
.toString();
}
+ /**
+ * Compares this and o object.
+ *
+ * @param o object to be compared with this object
+ * @return which object is greater
+ */
public int compareTo(Object o) {
if (this.equals(o)) {
return 0;
}
ListIterator<BgpValueType> listIterator = subTlvs.listIterator();
- ListIterator<BgpValueType> listIteratorOther = ((NodeDescriptors) o).subTlvs.listIterator();
int countOtherSubTlv = ((NodeDescriptors) o).subTlvs.size();
int countObjSubTlv = subTlvs.size();
+ boolean tlvFound = false;
if (countOtherSubTlv != countObjSubTlv) {
- if (countOtherSubTlv > countObjSubTlv) {
- return 1;
- } else {
- return -1;
- }
+ if (countOtherSubTlv > countObjSubTlv) {
+ return 1;
+ } else {
+ return -1;
+ }
} else {
while (listIterator.hasNext()) {
- BgpValueType tlv = listIterator.next();
+ BgpValueType tlv1 = listIterator.next();
log.debug("NodeDescriptor compare subtlv's");
- if (subTlvs.contains(tlv) && ((NodeDescriptors) o).subTlvs.contains(tlv)) {
- int result = subTlvs.get(subTlvs.indexOf(tlv)).compareTo(
- ((NodeDescriptors) o).subTlvs.get(((NodeDescriptors) o).subTlvs.indexOf(tlv)));
- if (result != 0) {
- return result;
+ for (BgpValueType tlv : ((NodeDescriptors) o).subTlvs) {
+ if (tlv.getType() == tlv1.getType()) {
+ int result = subTlvs.get(subTlvs.indexOf(tlv1)).compareTo(
+ ((NodeDescriptors) o).subTlvs.get(((NodeDescriptors) o).subTlvs.indexOf(tlv)));
+ if (result != 0) {
+ return result;
+ }
+ tlvFound = true;
+ break;
}
- } else {
+ }
+ if (!tlvFound) {
return 1;
}
}