Speed up enumeration lookups 31/17531/8
authorRobert Varga <rovarga@cisco.com>
Wed, 1 Apr 2015 11:17:56 +0000 (13:17 +0200)
committerRobert Varga <rovarga@cisco.com>
Thu, 2 Apr 2015 08:21:34 +0000 (10:21 +0200)
All enumeration types have a static values() method, which returns an
array of possible values. Use that instead of cascading ifs to get the
appropriate enum value.

Change-Id: Ic91cd04ac3e64e7d8263e6535e354f7ef2d713cf
Signed-off-by: Robert Varga <rovarga@cisco.com>
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java

index a7effbcf3792346b6521fec14b599dc1bfa0194b..667b64ce18839386f0c9ce44375bd7f88649588a 100644 (file)
@@ -73,15 +73,14 @@ public class TransactionProxy extends AbstractDOMStoreTransaction<TransactionIde
         WRITE_ONLY,
         READ_WRITE;
 
-        public static TransactionType fromInt(int type) {
-            if(type == WRITE_ONLY.ordinal()) {
-                return WRITE_ONLY;
-            } else if(type == READ_WRITE.ordinal()) {
-                return READ_WRITE;
-            } else if(type == READ_ONLY.ordinal()) {
-                return READ_ONLY;
-            } else {
-                throw new IllegalArgumentException("In TransactionType enum value" + type);
+        // Cache all values
+        private static final TransactionType[] VALUES = values();
+
+        public static TransactionType fromInt(final int type) {
+            try {
+                return VALUES[type];
+            } catch (IndexOutOfBoundsException e) {
+                throw new IllegalArgumentException("In TransactionType enum value " + type, e);
             }
         }
     }