*/
package org.opendaylight.protocol.pcep;
-import com.google.common.collect.Maps;
-import java.util.Map;
+import static com.google.common.base.Verify.verify;
+
+import java.util.Arrays;
public enum TerminationReason {
- UNKNOWN((short) 1),
- EXP_DEADTIMER((short) 2),
- MALFORMED_MSG((short) 3),
- TOO_MANY_UNKNWN_REQS((short) 4),
- TOO_MANY_UNKNOWN_MSGS((short) 5);
+ UNKNOWN(1),
+ EXP_DEADTIMER(2),
+ MALFORMED_MSG(3),
+ TOO_MANY_UNKNWN_REQS(4),
+ TOO_MANY_UNKNOWN_MSGS(5);
- private static final Map<Short, TerminationReason> VALUE_MAP;
+ private static final TerminationReason[] REASONS;
static {
- VALUE_MAP = Maps.newHashMap();
- for (final TerminationReason enumItem : TerminationReason.values()) {
- VALUE_MAP.put(enumItem.value, enumItem);
+ // We are not making many assumptions here
+ final TerminationReason[] reasons = TerminationReason.values();
+ verify(reasons.length > 0);
+
+ final short highest = Arrays.stream(reasons).map(TerminationReason::getShortValue).max(Short::compareTo).get();
+ final TerminationReason[] init = new TerminationReason[highest + 1];
+ for (TerminationReason reason : reasons) {
+ init[reason.getShortValue()] = reason;
}
+
+ REASONS = init;
}
private short value;
- TerminationReason(final short value) {
- this.value = value;
+ TerminationReason(final int value) {
+ this.value = (short) value;
}
/**
- * Gets termination reason for specific short value.
+ * Gets value of termination reason.
*
- * @param valueArg corresponding to Termination reason
- * @return corresponding TerminationReason item
+ * @return short value
*/
- public static TerminationReason forValue(final short valueArg) {
- return VALUE_MAP.get(valueArg);
+ public short getShortValue() {
+ return value;
}
/**
- * Gets value of termination reason.
+ * Gets termination reason for specific short value.
*
- * @return short value
+ * @param valueArg corresponding to Termination reason
+ * @return corresponding TerminationReason item
*/
- public short getShortValue() {
- return this.value;
+ public static TerminationReason forValue(final short valueArg) {
+ return valueArg < 0 || valueArg >= REASONS.length ? null : REASONS[valueArg];
}
}