Resolved the Serialization and Deserialization issues for MultiValued Columns with...
[ovsdb.git] / library / src / main / java / org / opendaylight / ovsdb / lib / operations / Mutate.java
index 18805aa9271e4ce1a51e6f4cbf24a9eb310ef9d9..6e9c20789c9520f3684b92f915d1412bdaadf03c 100644 (file)
  */
 package org.opendaylight.ovsdb.lib.operations;
 
-import com.google.common.collect.Lists;
+import java.util.List;
+import java.util.Set;
+
 import org.opendaylight.ovsdb.lib.notation.Condition;
 import org.opendaylight.ovsdb.lib.notation.Mutation;
 import org.opendaylight.ovsdb.lib.notation.Mutator;
+import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
 import org.opendaylight.ovsdb.lib.schema.TableSchema;
 
-import java.util.List;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
 
 public class Mutate<E extends TableSchema<E>> extends Operation<E> implements ConditionalOperation {
 
@@ -36,7 +40,14 @@ public class Mutate<E extends TableSchema<E>> extends Operation<E> implements Co
 
     public <T extends TableSchema<T>, D> Mutate<E> addMutation(ColumnSchema<T, D> columnSchema, Mutator mutator, D value) {
         columnSchema.validate(value);
-        mutations.add(new Mutation(columnSchema.getName(), mutator, value));
+        Object untypedValue = null;
+        if (columnSchema.getType().isMultiValued()) {
+            Preconditions.checkArgument((value instanceof Set),"expected a set for multivalued item") ;
+            untypedValue = OvsDBSet.fromSet((Set) value);
+        } else {
+            untypedValue = value;
+        }
+        mutations.add(new Mutation(columnSchema.getName(), mutator, untypedValue));
         return this;
     }