| package net.onrc.onos.core.registry; |
| |
| import org.codehaus.jackson.annotate.JsonProperty; |
| |
| public class ControllerRegistryEntry implements Comparable<ControllerRegistryEntry> { |
| // |
| // TODO: Refactor the implementation and decide whether controllerId |
| // is needed. If "yes", we might need to consider it inside the |
| // compareTo(), equals() and hashCode() implementations. |
| // |
| private final String controllerId; |
| private final int sequenceNumber; |
| |
| public ControllerRegistryEntry(String controllerId, int sequenceNumber) { |
| this.controllerId = controllerId; |
| this.sequenceNumber = sequenceNumber; |
| } |
| |
| @JsonProperty("controllerId") |
| public String getControllerId() { |
| return controllerId; |
| } |
| |
| /** |
| * Compares this object with the specified object for order. |
| * NOTE: the test is based on ControllerRegistryEntry sequence numbers, |
| * and doesn't include the controllerId. |
| * |
| * @param o the object to be compared. |
| * @return a negative integer, zero, or a positive integer as this object |
| * is less than, equal to, or greater than the specified object. |
| */ |
| @Override |
| public int compareTo(ControllerRegistryEntry o) { |
| return this.sequenceNumber - o.sequenceNumber; |
| } |
| |
| /** |
| * Test whether some other object is "equal to" this one. |
| * NOTE: the test is based on ControllerRegistryEntry sequence numbers, |
| * and doesn't include the controllerId. |
| * |
| * @param obj the reference object with which to compare. |
| * @return true if this object is the same as the obj argument; false |
| * otherwise. |
| */ |
| @Override |
| public boolean equals(Object obj) { |
| if (obj instanceof ControllerRegistryEntry) { |
| ControllerRegistryEntry other = (ControllerRegistryEntry) obj; |
| return this.sequenceNumber == other.sequenceNumber; |
| } |
| return false; |
| } |
| |
| /** |
| * Get the hash code for the object. |
| * NOTE: the computation is based on ControllerRegistryEntry sequence |
| * numbers, and doesn't include the controller ID. |
| * |
| * @return a hash code value for this object. |
| */ |
| @Override |
| public int hashCode() { |
| return Integer.valueOf(this.sequenceNumber).hashCode(); |
| } |
| } |