Committed by
Ray Milkey
Compare fix
Change-Id: I56ad744ff9d99198136c97f62896c487285192ec
Showing
2 changed files
with
39 additions
and
23 deletions
| ... | @@ -238,6 +238,7 @@ public class BgpPrefixLSIdentifier implements Comparable<Object> { | ... | @@ -238,6 +238,7 @@ public class BgpPrefixLSIdentifier implements Comparable<Object> { |
| 238 | return 0; | 238 | return 0; |
| 239 | } | 239 | } |
| 240 | int result = this.localNodeDescriptors.compareTo(((BgpPrefixLSIdentifier) o).localNodeDescriptors); | 240 | int result = this.localNodeDescriptors.compareTo(((BgpPrefixLSIdentifier) o).localNodeDescriptors); |
| 241 | + boolean tlvFound = false; | ||
| 241 | if (result != 0) { | 242 | if (result != 0) { |
| 242 | return result; | 243 | return result; |
| 243 | } else { | 244 | } else { |
| ... | @@ -249,20 +250,24 @@ public class BgpPrefixLSIdentifier implements Comparable<Object> { | ... | @@ -249,20 +250,24 @@ public class BgpPrefixLSIdentifier implements Comparable<Object> { |
| 249 | } else { | 250 | } else { |
| 250 | return -1; | 251 | return -1; |
| 251 | } | 252 | } |
| 252 | - } | 253 | + } |
| 253 | 254 | ||
| 254 | ListIterator<BgpValueType> listIterator = prefixDescriptor.listIterator(); | 255 | ListIterator<BgpValueType> listIterator = prefixDescriptor.listIterator(); |
| 255 | - ListIterator<BgpValueType> listIteratorOther = ((BgpPrefixLSIdentifier) o).prefixDescriptor.listIterator(); | ||
| 256 | while (listIterator.hasNext()) { | 256 | while (listIterator.hasNext()) { |
| 257 | - BgpValueType tlv = listIterator.next(); | 257 | + BgpValueType tlv1 = listIterator.next(); |
| 258 | - if (prefixDescriptor.contains(tlv) && ((BgpPrefixLSIdentifier) o).prefixDescriptor.contains(tlv)) { | 258 | + for (BgpValueType tlv : ((BgpPrefixLSIdentifier) o).prefixDescriptor) { |
| 259 | - int res = prefixDescriptor.get(prefixDescriptor.indexOf(tlv)).compareTo( | 259 | + if (tlv.getType() == tlv1.getType()) { |
| 260 | - ((BgpPrefixLSIdentifier) o).prefixDescriptor | 260 | + result = prefixDescriptor.get(prefixDescriptor.indexOf(tlv1)).compareTo( |
| 261 | - .get(((BgpPrefixLSIdentifier) o).prefixDescriptor.indexOf(tlv))); | 261 | + ((BgpPrefixLSIdentifier) o).prefixDescriptor |
| 262 | - if (res != 0) { | 262 | + .get(((BgpPrefixLSIdentifier) o).prefixDescriptor.indexOf(tlv))); |
| 263 | - return res; | 263 | + if (result != 0) { |
| 264 | + return result; | ||
| 265 | + } | ||
| 266 | + tlvFound = true; | ||
| 267 | + break; | ||
| 264 | } | 268 | } |
| 265 | - } else { | 269 | + } |
| 270 | + if (!tlvFound) { | ||
| 266 | return 1; | 271 | return 1; |
| 267 | } | 272 | } |
| 268 | } | 273 | } | ... | ... |
| ... | @@ -234,31 +234,42 @@ public class NodeDescriptors { | ... | @@ -234,31 +234,42 @@ public class NodeDescriptors { |
| 234 | .toString(); | 234 | .toString(); |
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | + /** | ||
| 238 | + * Compares this and o object. | ||
| 239 | + * | ||
| 240 | + * @param o object to be compared with this object | ||
| 241 | + * @return which object is greater | ||
| 242 | + */ | ||
| 237 | public int compareTo(Object o) { | 243 | public int compareTo(Object o) { |
| 238 | if (this.equals(o)) { | 244 | if (this.equals(o)) { |
| 239 | return 0; | 245 | return 0; |
| 240 | } | 246 | } |
| 241 | ListIterator<BgpValueType> listIterator = subTlvs.listIterator(); | 247 | ListIterator<BgpValueType> listIterator = subTlvs.listIterator(); |
| 242 | - ListIterator<BgpValueType> listIteratorOther = ((NodeDescriptors) o).subTlvs.listIterator(); | ||
| 243 | int countOtherSubTlv = ((NodeDescriptors) o).subTlvs.size(); | 248 | int countOtherSubTlv = ((NodeDescriptors) o).subTlvs.size(); |
| 244 | int countObjSubTlv = subTlvs.size(); | 249 | int countObjSubTlv = subTlvs.size(); |
| 250 | + boolean tlvFound = false; | ||
| 245 | if (countOtherSubTlv != countObjSubTlv) { | 251 | if (countOtherSubTlv != countObjSubTlv) { |
| 246 | - if (countOtherSubTlv > countObjSubTlv) { | 252 | + if (countOtherSubTlv > countObjSubTlv) { |
| 247 | - return 1; | 253 | + return 1; |
| 248 | - } else { | 254 | + } else { |
| 249 | - return -1; | 255 | + return -1; |
| 250 | - } | 256 | + } |
| 251 | } else { | 257 | } else { |
| 252 | while (listIterator.hasNext()) { | 258 | while (listIterator.hasNext()) { |
| 253 | - BgpValueType tlv = listIterator.next(); | 259 | + BgpValueType tlv1 = listIterator.next(); |
| 254 | log.debug("NodeDescriptor compare subtlv's"); | 260 | log.debug("NodeDescriptor compare subtlv's"); |
| 255 | - if (subTlvs.contains(tlv) && ((NodeDescriptors) o).subTlvs.contains(tlv)) { | 261 | + for (BgpValueType tlv : ((NodeDescriptors) o).subTlvs) { |
| 256 | - int result = subTlvs.get(subTlvs.indexOf(tlv)).compareTo( | 262 | + if (tlv.getType() == tlv1.getType()) { |
| 257 | - ((NodeDescriptors) o).subTlvs.get(((NodeDescriptors) o).subTlvs.indexOf(tlv))); | 263 | + int result = subTlvs.get(subTlvs.indexOf(tlv1)).compareTo( |
| 258 | - if (result != 0) { | 264 | + ((NodeDescriptors) o).subTlvs.get(((NodeDescriptors) o).subTlvs.indexOf(tlv))); |
| 259 | - return result; | 265 | + if (result != 0) { |
| 266 | + return result; | ||
| 267 | + } | ||
| 268 | + tlvFound = true; | ||
| 269 | + break; | ||
| 260 | } | 270 | } |
| 261 | - } else { | 271 | + } |
| 272 | + if (!tlvFound) { | ||
| 262 | return 1; | 273 | return 1; |
| 263 | } | 274 | } |
| 264 | } | 275 | } | ... | ... |
-
Please register or login to post a comment