X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-mapping-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fmapping%2Fapi%2FHandlingPriority.java;h=c08db906df51a00b5dc39d53bb30be252381b3ca;hp=176cf2d28c02d54dbaeedc39abe23357e27d8324;hb=84248dac9ed8aa37e996e39429c8aa8ece473eaf;hpb=91d7c1ee52322acad08e9f81228ac36b3aa684f5 diff --git a/opendaylight/netconf/netconf-mapping-api/src/main/java/org/opendaylight/controller/netconf/mapping/api/HandlingPriority.java b/opendaylight/netconf/netconf-mapping-api/src/main/java/org/opendaylight/controller/netconf/mapping/api/HandlingPriority.java index 176cf2d28c..c08db906df 100644 --- a/opendaylight/netconf/netconf-mapping-api/src/main/java/org/opendaylight/controller/netconf/mapping/api/HandlingPriority.java +++ b/opendaylight/netconf/netconf-mapping-api/src/main/java/org/opendaylight/controller/netconf/mapping/api/HandlingPriority.java @@ -9,8 +9,9 @@ package org.opendaylight.controller.netconf.mapping.api; import com.google.common.base.Optional; +import com.google.common.base.Preconditions; -public class HandlingPriority implements Comparable { +public final class HandlingPriority implements Comparable { public static final HandlingPriority CANNOT_HANDLE = new HandlingPriority(); public static final HandlingPriority HANDLE_WITH_DEFAULT_PRIORITY = new HandlingPriority(Integer.MIN_VALUE); @@ -33,39 +34,59 @@ public class HandlingPriority implements Comparable { * @return priority number or Optional.absent otherwise */ public Optional getPriority() { - return Optional.of(priority).or(Optional. absent()); + return Optional.fromNullable(priority); + } + + public HandlingPriority increasePriority(int priorityIncrease) { + Preconditions.checkState(priority!=null, "Unable to increase priority for %s", this); + Preconditions.checkArgument(priorityIncrease > 0, "Negative increase"); + Preconditions.checkArgument(Long.valueOf(priority) + priorityIncrease < Integer.MAX_VALUE, + "Resulting priority cannot be higher than %s", Integer.MAX_VALUE); + return getHandlingPriority(priority + priorityIncrease); + } + + public boolean isCannotHandle() { + return this.equals(CANNOT_HANDLE); } @Override public int compareTo(HandlingPriority o) { - if (this == o) + if (this == o){ return 0; - if (this == CANNOT_HANDLE) + } + if (this.equals(CANNOT_HANDLE)){ return -1; - if (o == CANNOT_HANDLE) + } + if (o.equals(CANNOT_HANDLE)){ return 1; + } - if (priority > o.priority) + if (priority > o.priority){ return 1; - if (priority == o.priority) + } + if (priority.equals(o.priority)){ return 0; - if (priority < o.priority) + } + if (priority < o.priority){ return -1; - + } throw new IllegalStateException("Unexpected state"); } @Override public boolean equals(Object o) { - if (this == o) + if (this == o){ return true; - if (!(o instanceof HandlingPriority)) + } + if (!(o instanceof HandlingPriority)){ return false; + } HandlingPriority that = (HandlingPriority) o; - if (priority != null ? !priority.equals(that.priority) : that.priority != null) + if (priority != null ? !priority.equals(that.priority) : that.priority != null){ return false; + } return true; }