Fixed Enum processing in BaseType 74/8274/1
authorMadhu Venugopal <mavenugo@gmail.com>
Tue, 24 Jun 2014 04:05:00 +0000 (21:05 -0700)
committerMadhu Venugopal <mavenugo@gmail.com>
Tue, 24 Jun 2014 04:05:00 +0000 (21:05 -0700)
There is an incorrect assumption that all Enum types will be a Set/Array.
Thanks to the minimal IT written for hardware_vtep, this assumption is caught for an enum type for "encapsulation_type" field :
"type": { "key": { "enum": "vxlan_over_ipv4", "type": "string" } }

The incorrect assumption caused null pointer exception on the IT run.
Caused by: java.lang.NullPointerException: null
at org.opendaylight.ovsdb.lib.schema.BaseType$StringBaseType.populateEnum(BaseType.java:307)

This fix addresses that problem.

Change-Id: I1cf1a278b6963765cf90268b616de7d721d2ef30
Signed-off-by: Madhu Venugopal <mavenugo@gmail.com>
library/src/main/java/org/opendaylight/ovsdb/lib/schema/BaseType.java

index c742394c9e2b054d98c0279ace10fae7093034a7..52c2f1a26812c155a5c78a6d5849436ce879a6f3 100644 (file)
@@ -303,9 +303,14 @@ public abstract class BaseType<E extends BaseType<E>> {
         private void populateEnum(StringBaseType baseType, JsonNode node) {
             if (node.has("enum")) {
                 Set<String> s = Sets.newHashSet();
-                JsonNode anEnum = node.get("enum").get(1);
-                for (JsonNode n : anEnum) {
-                    s.add(n.asText());
+                JsonNode enumVal = node.get("enum");
+                if (enumVal.isArray()) {
+                    JsonNode anEnum = enumVal.get(1);
+                    for (JsonNode n : anEnum) {
+                        s.add(n.asText());
+                    }
+                } else if (enumVal.isTextual()) {
+                    s.add(enumVal.asText());
                 }
                 baseType.setEnums(s);
             }