InsertOperation cleanup to get rid of Generic HashMaps to proper Row inserting using... 23/2323/1
authorMadhu Venugopal <mavenugo@gmail.com>
Fri, 1 Nov 2013 22:07:19 +0000 (18:07 -0400)
committerMadhu Venugopal <mavenugo@gmail.com>
Fri, 1 Nov 2013 22:07:19 +0000 (18:07 -0400)
In addition, Set & Map serializers are taken care as well.

Change-Id: I0e3d34b6ae30e7b4f5f7da876b465f0dfd93479c
Signed-off-by: Madhu Venugopal <mavenugo@gmail.com>
22 files changed:
ovsdb/pom.xml
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/InsertOperation.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBMap.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBSet.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBMapSerializer.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBSetSerializer.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Bridge.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Capability.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Controller.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Interface.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Manager.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Mirror.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/NetFlow.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Open_vSwitch.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Port.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Qos.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Queue.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SFlow.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SSL.java
ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java
ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConnectionService.java
ovsdb/src/test/java/org/opendaylight/ovsdb/lib/message/OVSDBNettyFactoryTest.java

index 22b5e4ced4430ec7d7dbaddfd0a5b734bec9207b..2a0900c0c6536a77f5af11ac63619cd78d6dc769 100755 (executable)
@@ -43,7 +43,7 @@
                             javax.net.ssl,
                             *
                         </Import-Package>
-                        <Embed-Dependency>jsonrpc4j,httpclient,commons-codec,httpcore-nio,javax.servlet-api,jackson-annotations,jackson-core,jackson-databind,portlet-api,commons-collections;type=!pom;inline=false</Embed-Dependency>
+                        <Embed-Dependency>httpclient,commons-codec,httpcore-nio,javax.servlet-api,jackson-annotations,jackson-core,jackson-databind,portlet-api,commons-collections;type=!pom;inline=false</Embed-Dependency>
                         <Embed-Transitive>
                             true
                         </Embed-Transitive>
              </plugin>
         </plugins>
     </build>
-    <repositories>
-        <repository>
-            <id>jsonrpc4j-webdav-maven-repo</id>
-            <name>jsonrpc4j maven repository</name>
-            <url>http://jsonrpc4j.googlecode.com/svn/maven/repo/</url>
-            <layout>default</layout>
-        </repository>
-    </repositories>
     <dependencies>
         <dependency>
           <groupId>org.opendaylight.controller</groupId>
           <version>1.0</version>
         </dependency>
     </dependencies>
-</project>
\ No newline at end of file
+</project>
index 481a90e3286087019c301794fcbe2f4f5c7c03e9..bb3071f840572c80522c03bf8d9f22a83417496f 100644 (file)
@@ -2,13 +2,15 @@ package org.opendaylight.ovsdb.lib.message.operations;
 
 import java.util.Map;
 
+import org.opendaylight.ovsdb.lib.table.internal.Table;
+
 import com.fasterxml.jackson.annotation.JsonProperty;
 // TODO Madhu : This is not complete. Getting it in to enable other committers to make progress
 public class InsertOperation extends Operation {
     String table;
     @JsonProperty("uuid-name")
     public String uuidName;
-    public Map<String, Object> row;
+    public Table<?> row;
 
     public InsertOperation() {
         super();
@@ -16,7 +18,7 @@ public class InsertOperation extends Operation {
     }
 
     public InsertOperation(String table, String uuidName,
-            Map<String, Object> row) {
+            Table<?> row) {
         this();
         this.table = table;
         this.uuidName = uuidName;
@@ -39,11 +41,11 @@ public class InsertOperation extends Operation {
         this.uuidName = uuidName;
     }
 
-    public Map<String, Object> getRow() {
+    public Table<?> getRow() {
         return row;
     }
 
-    public void setRow(Map<String, Object> row) {
+    public void setRow(Table<?> row) {
         this.row = row;
     }
 
index 6ae8cda958d9f95d2ad85d57980f28b117be21f6..6fcca29b4939adcf74190ac35b8ada55c24a1a9b 100644 (file)
@@ -1,23 +1,25 @@
 package org.opendaylight.ovsdb.lib.notation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.google.common.collect.ForwardingMap;
 import com.google.common.collect.Maps;
 
+import org.opendaylight.ovsdb.lib.notation.json.ConditionSerializer;
 import org.opendaylight.ovsdb.lib.notation.json.Converter;
+import org.opendaylight.ovsdb.lib.notation.json.OvsDBMapSerializer;
 
 import java.util.HashMap;
 import java.util.Map;
 
-//@JsonTypeIdResolver(OVSDBTypesIDResolver.class)
-//@JsonTypeInfo(use = JsonTypeInfo.Id.CUSTOM, include = JsonTypeInfo.As.WRAPPER_ARRAY)
 @JsonDeserialize(converter = Converter.MapConverter.class)
+@JsonSerialize(using = OvsDBMapSerializer.class)
 public class OvsDBMap<K, V> extends ForwardingMap<K, V> {
 
     HashMap<K, V> target = Maps.newHashMap();
 
     @Override
-    protected Map<K, V> delegate() {
+    public Map<K, V> delegate() {
         return target;
     }
 }
index 9a2c7cabf9b51908d13628981d4b6396331888ac..78d27e574ad2475c478f7a15f1b98cbd105227d0 100644 (file)
@@ -1,25 +1,23 @@
 package org.opendaylight.ovsdb.lib.notation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.google.common.collect.ForwardingSet;
 import com.google.common.collect.Sets;
 
 import org.opendaylight.ovsdb.lib.notation.json.Converter;
+import org.opendaylight.ovsdb.lib.notation.json.OvsDBSetSerializer;
 
 import java.util.Set;
 
-/*This class exists just to aid in specifying annotations at type level*/
-
-//@JsonTypeIdResolver(OVSDBTypesIDResolver.class)
-//@JsonTypeInfo(use = JsonTypeInfo.Id.CUSTOM, include = JsonTypeInfo.As.WRAPPER_ARRAY)
-//@JsonDeserialize(converter = ObjectToSetConverter.class)
 @JsonDeserialize(converter = Converter.SetConverter.class)
+@JsonSerialize(using = OvsDBSetSerializer.class)
 public class OvsDBSet<T> extends ForwardingSet<T> {
 
     Set<T> target = Sets.newHashSet();
 
     @Override
-    protected Set<T> delegate() {
+    public Set<T> delegate() {
         return target;
     }
 }
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBMapSerializer.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBMapSerializer.java
new file mode 100644 (file)
index 0000000..2b638dc
--- /dev/null
@@ -0,0 +1,30 @@
+package org.opendaylight.ovsdb.lib.notation.json;
+
+import java.io.IOException;
+import java.util.Map;
+import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+public class OvsDBMapSerializer extends JsonSerializer<OvsDBMap<?,?>> {
+    @Override
+    public void serialize(OvsDBMap<?,?> map, JsonGenerator generator,
+        SerializerProvider provider) throws IOException,
+            JsonProcessingException {
+        generator.writeStartArray();
+        generator.writeString("map");
+        generator.writeStartArray();
+        Map<?,?> javaMap = map.delegate();
+        for (Object t : javaMap.keySet()) {
+            generator.writeStartArray();
+            generator.writeObject(t);
+            generator.writeObject(javaMap.get(t));
+            generator.writeEndArray();
+        }
+        generator.writeEndArray();
+        generator.writeEndArray();
+    }
+}
\ No newline at end of file
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBSetSerializer.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBSetSerializer.java
new file mode 100644 (file)
index 0000000..b70876e
--- /dev/null
@@ -0,0 +1,29 @@
+package org.opendaylight.ovsdb.lib.notation.json;
+
+import java.io.IOException;
+import java.util.Set;
+
+import org.opendaylight.ovsdb.lib.notation.Condition;
+import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+public class OvsDBSetSerializer extends JsonSerializer<OvsDBSet<?>> {
+    @Override
+    public void serialize(OvsDBSet<?> set, JsonGenerator generator,
+        SerializerProvider provider) throws IOException,
+            JsonProcessingException {
+        generator.writeStartArray();
+        generator.writeString("set");
+        generator.writeStartArray();
+        Set<?> javaSet = set.delegate();
+        for (Object t : javaSet) {
+            generator.writeObject(t);
+        }
+        generator.writeEndArray();
+        generator.writeEndArray();
+    }
+}
\ No newline at end of file
index 09916de19a625613bd834047858f4d8aed598e48..eed47518b5b3880d8ba1262ef9e8638d86b197b9 100644 (file)
@@ -5,6 +5,8 @@ import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Bridge extends Table<Bridge> {
     public static final Name<Bridge> NAME = new Name<Bridge>("Bridge"){};
     public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column<Bridge>{controller, fail_mode, name, ports}
@@ -24,6 +26,7 @@ public class Bridge extends Table<Bridge> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Bridge> getTableName() {
         return NAME;
     }
index b097fd6f3a3cbe620f822f070e0c76006a3e1cad..782ba8231e449abbcd0d3455eb007db36e3c031c 100644 (file)
@@ -3,6 +3,8 @@ package org.opendaylight.ovsdb.lib.table;
 import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Capability extends Table<Capability> {
 
     public static final Name<Capability> NAME = new Name<Capability>("Capability") {};
@@ -18,6 +20,7 @@ public class Capability extends Table<Capability> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Capability> getTableName() {
         return NAME;
     }
index 278ffd306c83002d977e8f5ef9fd34b4b00fdc4b..31f6e203f6510a03388a1b439913297341371ee0 100644 (file)
@@ -2,6 +2,8 @@ package org.opendaylight.ovsdb.lib.table;
 
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Controller  extends Table<Controller> {
 
     public static final Name<Controller> NAME = new Name<Controller>("Controller") {};
@@ -16,6 +18,7 @@ public class Controller  extends Table<Controller> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Controller> getTableName() {
         return NAME;
     }
index 9174de74c9d74f2bbde19924fe01d48343362d62..7dbf8850e9f2e4d8d91d925bc5368da65e544111 100644 (file)
@@ -4,6 +4,8 @@ import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
 import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Interface extends Table<Interface> {
 
     public static Name<Interface> NAME = new Name<Interface>("Interface") {};
@@ -91,6 +93,7 @@ public class Interface extends Table<Interface> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Interface> getTableName() {
         return NAME;
     }
index 478cfa36bba9c1ab062e06a5c8a76757241efb06..16c35a93dccb310e5f2715faa64a1230008ea413 100644 (file)
@@ -2,6 +2,8 @@ package org.opendaylight.ovsdb.lib.table;
 
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Manager  extends Table<Manager> {
 
     public static final Name<Manager> NAME = new Name<Manager>("Manager") {};
@@ -16,6 +18,7 @@ public class Manager  extends Table<Manager> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Manager> getTableName() {
         return NAME;
     }
index ed7323ece4e94c64be637cab6aae924fb4694dea..0d43c9920d6d622a2ef38b02259d78ee7a38adeb 100644 (file)
@@ -5,6 +5,8 @@ import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Mirror  extends Table<Mirror> {
 
     public static final Name<Mirror> NAME = new Name<Mirror>("Mirror") {};
@@ -82,6 +84,7 @@ public class Mirror  extends Table<Mirror> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Mirror> getTableName() {
         return NAME;
     }
index b7665a80b981fe223a7c408d5b38e2d4aceb2fb1..9b3d4888b0424c202121867457fc27a231af7080 100644 (file)
@@ -3,6 +3,8 @@ package org.opendaylight.ovsdb.lib.table;
 import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class NetFlow  extends Table<NetFlow> {
 
     public static final Name<NetFlow> NAME = new Name<NetFlow>("NetFlow") {};
@@ -17,6 +19,7 @@ public class NetFlow  extends Table<NetFlow> {
     }
 
     @Override
+    @JsonIgnore
     public Name<NetFlow> getTableName() {
         return NAME;
     }
index 9a04facc0defd3200cfc57a2a1da6eeb43999ca3..446e9393437b494761531bfaeda3723dd3d37ca3 100644 (file)
@@ -5,6 +5,8 @@ import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Open_vSwitch extends Table<Open_vSwitch> {
 
     public static final Name<Open_vSwitch> NAME = new Name<Open_vSwitch>("Open_vSwitch"){};
@@ -28,6 +30,7 @@ public class Open_vSwitch extends Table<Open_vSwitch> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Open_vSwitch> getTableName() {
         return NAME;
     }
index b27df2a09f28987dc9a8699caf586f8b1cf0b36b..5241175b76a8158a41456e9bbf94d1673c38b699 100644 (file)
@@ -7,6 +7,8 @@ import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Port extends Table<Port> {
 
     public static final Name<Port> NAME = new Name<Port>("Port") {};
@@ -88,6 +90,7 @@ public class Port extends Table<Port> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Port> getTableName() {
         return NAME;
     }
index d16fa6dfc9c509fc9feb4e89f0c8747d433b81c1..98996c347f2e8f3ef62ab30867267963f86e3b60 100644 (file)
@@ -7,6 +7,8 @@ import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Qos extends Table<Qos> {
 
     public static final Name<Qos> NAME = new Name<Qos>("QoS") {};
@@ -52,6 +54,7 @@ public class Qos extends Table<Qos> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Qos> getTableName() {
         return NAME;
     }
index 67bc7abca0963b24a83555bd39b8ee2272ac13e8..0e63d622a7ace685b3ae327f5c27b954805bbd53 100644 (file)
@@ -7,6 +7,8 @@ import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class Queue extends Table<Queue> {
 
     public static final Name<Queue> NAME = new Name<Queue>("Queue") {};
@@ -43,6 +45,7 @@ public class Queue extends Table<Queue> {
     }
 
     @Override
+    @JsonIgnore
     public Name<Queue> getTableName() {
         return NAME;
     }
index 6bb7f31da968945fb169ee8afb367d44b71be365..116ad540c61aed12845d65f931cb1d53feb5d0b8 100644 (file)
@@ -4,6 +4,8 @@ import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
 import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class SFlow  extends Table<SFlow> {
 
     public static final Name<SFlow> NAME = new Name<SFlow>("sFlow") {};
@@ -23,6 +25,7 @@ public class SFlow  extends Table<SFlow> {
     }
 
     @Override
+    @JsonIgnore
     public Name<SFlow> getTableName() {
         return NAME;
     }
index 8b168959a1f6550c24d074f0d5091b6173868dad..1c0ee155c84f7d65d7d9f36fd8d408154b25f0c0 100644 (file)
@@ -5,6 +5,8 @@ import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 import org.opendaylight.ovsdb.lib.table.internal.Table.Name;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 public class SSL  extends Table<SSL> {
 
     public static final Name<SSL> NAME = new Name<SSL>("SSL") {};
@@ -46,6 +48,7 @@ public class SSL  extends Table<SSL> {
     }
 
     @Override
+    @JsonIgnore
     public Name<SSL> getTableName() {
         return NAME;
     }
index 260d2f1f103f0437ee2bf23add19168c290c814d..2e34af7577e06d3f506d3b4fad45291a9902cd1b 100755 (executable)
@@ -17,6 +17,7 @@ import org.opendaylight.ovsdb.lib.notation.Condition;
 import org.opendaylight.ovsdb.lib.notation.Function;
 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.notation.UUID;
 import org.opendaylight.ovsdb.lib.table.Bridge;
 import org.opendaylight.ovsdb.lib.table.Interface;
@@ -153,27 +154,31 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService,
                 addSwitchRequest = new MutateOperation(Open_vSwitch.NAME.getName(), where, mutations);
             }
             else{
-                Map<String, Object> vswitchRow = new HashMap<String, Object>();
+                Open_vSwitch ovsTableRow = new Open_vSwitch();
+                OvsDBSet<UUID> bridges = new OvsDBSet<UUID>();
                 UUID bridgeUuidPair = new UUID(newBridge);
-                vswitchRow.put("bridges", bridgeUuidPair);
-                addSwitchRequest = new InsertOperation(Open_vSwitch.NAME.getName(), newSwitch, vswitchRow);
+                bridges.add(bridgeUuidPair);
+                ovsTableRow.setBridges(bridges);
+                addSwitchRequest = new InsertOperation(Open_vSwitch.NAME.getName(), newSwitch, ovsTableRow);
             }
 
-            Map<String, Object> bridgeRow = new HashMap<String, Object>();
-            bridgeRow.put("name", bridgeIdentifier);
-            UUID ports = new UUID(newPort);
-            bridgeRow.put("ports", ports);
+            Bridge bridgeRow = new Bridge();
+            OvsDBSet<UUID> ports = new OvsDBSet<UUID>();
+            UUID port = new UUID(newPort);
+            ports.add(port);
+            bridgeRow.setPorts(ports);
             InsertOperation addBridgeRequest = new InsertOperation(Bridge.NAME.getName(), newBridge, bridgeRow);
 
-            Map<String, Object> portRow = new HashMap<String, Object>();
-            portRow.put("name", bridgeIdentifier);
-            UUID interfaces = new UUID(newInterface);
-            portRow.put("interfaces", interfaces);
+            Port portRow = new Port();
+            OvsDBSet<UUID> interfaces = new OvsDBSet<UUID>();
+            UUID interfaceid = new UUID(newInterface);
+            interfaces.add(interfaceid);
+            portRow.setInterfaces(interfaces);
             InsertOperation addPortRequest = new InsertOperation(Port.NAME.getName(), newPort, portRow);
 
-            Map<String, Object> interfaceRow = new HashMap<String, Object>();
-            interfaceRow.put("name", bridgeIdentifier);
-            interfaceRow.put("type", "internal");
+            Interface interfaceRow = new Interface();
+            interfaceRow.setName(bridgeIdentifier);
+            interfaceRow.setType("internal");
             InsertOperation addIntfRequest = new InsertOperation(Interface.NAME.getName(), newInterface, interfaceRow);
 
             TransactBuilder transaction = new TransactBuilder();
index 59249a2b7cc50d3d224743cff7c55e3a6da758c8..7fc0342866d831e22b5bab921df27571b32bd35f 100755 (executable)
@@ -29,6 +29,7 @@ import org.opendaylight.ovsdb.lib.table.internal.Tables;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -160,6 +161,7 @@ public class ConnectionService implements IPluginInConnectionService, IConnectio
 
             ObjectMapper objectMapper = new ObjectMapper();
             objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+            objectMapper.setSerializationInclusion(Include.NON_NULL);
 
             JsonRpcEndpoint factory = new JsonRpcEndpoint(objectMapper, channel);
             JsonRpcServiceBinderHandler binderHandler = new JsonRpcServiceBinderHandler(factory);
index f5ff58e92f4b6454053abc2a5071c236eea9dd36..fef7dcc3ba43e9f08e91e72012a6b4bacef61674 100644 (file)
@@ -18,6 +18,7 @@ import org.opendaylight.ovsdb.lib.notation.Condition;
 import org.opendaylight.ovsdb.lib.notation.Function;
 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.notation.UUID;
 import org.opendaylight.ovsdb.lib.table.Bridge;
 import org.opendaylight.ovsdb.lib.table.Interface;
@@ -112,27 +113,31 @@ public class OVSDBNettyFactoryTest {
             addSwitchRequest = new MutateOperation(Open_vSwitch.NAME.getName(), where, mutations);
         }
         else{
-            Map<String, Object> vswitchRow = new HashMap<String, Object>();
+            Open_vSwitch ovsTableRow = new Open_vSwitch();
+            OvsDBSet<UUID> bridges = new OvsDBSet<UUID>();
             UUID bridgeUuidPair = new UUID(newBridge);
-            vswitchRow.put("bridges", bridgeUuidPair);
-            addSwitchRequest = new InsertOperation(Open_vSwitch.NAME.getName(), newSwitch, vswitchRow);
+            bridges.add(bridgeUuidPair);
+            ovsTableRow.setBridges(bridges);
+            addSwitchRequest = new InsertOperation(Open_vSwitch.NAME.getName(), newSwitch, ovsTableRow);
         }
 
-        Map<String, Object> bridgeRow = new HashMap<String, Object>();
-        bridgeRow.put("name", bridgeIdentifier);
-        UUID ports = new UUID(newPort);
-        bridgeRow.put("ports", ports);
+        Bridge bridgeRow = new Bridge();
+        OvsDBSet<UUID> ports = new OvsDBSet<UUID>();
+        UUID port = new UUID(newPort);
+        ports.add(port);
+        bridgeRow.setPorts(ports);
         InsertOperation addBridgeRequest = new InsertOperation(Bridge.NAME.getName(), newBridge, bridgeRow);
 
-        Map<String, Object> portRow = new HashMap<String, Object>();
-        portRow.put("name", bridgeIdentifier);
-        UUID interfaces = new UUID(newInterface);
-        portRow.put("interfaces", interfaces);
+        Port portRow = new Port();
+        OvsDBSet<UUID> interfaces = new OvsDBSet<UUID>();
+        UUID interfaceid = new UUID(newInterface);
+        interfaces.add(interfaceid);
+        portRow.setInterfaces(interfaces);
         InsertOperation addPortRequest = new InsertOperation(Port.NAME.getName(), newPort, portRow);
 
-        Map<String, Object> interfaceRow = new HashMap<String, Object>();
-        interfaceRow.put("name", bridgeIdentifier);
-        interfaceRow.put("type", "internal");
+        Interface interfaceRow = new Interface();
+        interfaceRow.setName(bridgeIdentifier);
+        interfaceRow.setType("internal");
         InsertOperation addIntfRequest = new InsertOperation(Interface.NAME.getName(), newInterface, interfaceRow);
 
         TransactBuilder transaction = new TransactBuilder();