Added safety check for a case in which getSchema may not report a "hidden" Column... 91/7991/1
authorMadhu Venugopal <mavenugo@gmail.com>
Fri, 13 Jun 2014 13:53:15 +0000 (06:53 -0700)
committerMadhu Venugopal <mavenugo@gmail.com>
Fri, 13 Jun 2014 13:53:15 +0000 (06:53 -0700)
Change-Id: I21e5e9c48985ff4a79b6beecbc88891d1c83a831
Signed-off-by: Madhu Venugopal <mavenugo@gmail.com>
library/src/main/java/org/opendaylight/ovsdb/lib/schema/TableSchema.java

index 6b040301dac05d6c5eaba0faad473d3fbb551bdf..cf08c237e2453a2ce0b3ddd519d633f8ab98b85d 100644 (file)
@@ -99,7 +99,9 @@ public abstract class TableSchema<E extends TableSchema<E>> {
         //todo exception handling
 
         ColumnSchema columnSchema = columns.get(column);
-        columnSchema.validateType(type);
+        if (columnSchema != null) {
+            columnSchema.validateType(type);
+        }
         return columnSchema;
     }
 
@@ -143,8 +145,16 @@ public abstract class TableSchema<E extends TableSchema<E>> {
         for (Iterator<Map.Entry<String, JsonNode>> iter = rowNode.fields(); iter.hasNext();) {
             Map.Entry<String, JsonNode> next = iter.next();
             ColumnSchema<E, Object> schema = column(next.getKey(), Object.class);
-            Object o = schema.valueFromJson(next.getValue());
-            columns.add(new Column<>(schema, o));
+            /*
+             * Ideally the ColumnSchema shouldn't be null at this stage. But there can be cases in which
+             * the OVSDB manager Schema implementation might decide to include some "hidden" columns that
+             * are NOT reported in getSchema, but decide to report it in unfiltered monitor.
+             * Hence adding some safety checks around that.
+             */
+            if (schema != null) {
+                Object o = schema.valueFromJson(next.getValue());
+                columns.add(new Column<>(schema, o));
+            }
         }
         return new Row<>(columns);
     }