From fb3dba57b2774415866de240911849c6e6db3bbd Mon Sep 17 00:00:00 2001 From: Madhu Venugopal Date: Fri, 1 Nov 2013 18:07:19 -0400 Subject: [PATCH] InsertOperation cleanup to get rid of Generic HashMaps to proper Row inserting using Table classes. In addition, Set & Map serializers are taken care as well. Change-Id: I0e3d34b6ae30e7b4f5f7da876b465f0dfd93479c Signed-off-by: Madhu Venugopal --- ovsdb/pom.xml | 12 ++----- .../message/operations/InsertOperation.java | 10 +++--- .../ovsdb/lib/notation/OvsDBMap.java | 8 +++-- .../ovsdb/lib/notation/OvsDBSet.java | 10 +++--- .../lib/notation/json/OvsDBMapSerializer.java | 30 +++++++++++++++++ .../lib/notation/json/OvsDBSetSerializer.java | 29 ++++++++++++++++ .../opendaylight/ovsdb/lib/table/Bridge.java | 3 ++ .../ovsdb/lib/table/Capability.java | 3 ++ .../ovsdb/lib/table/Controller.java | 3 ++ .../ovsdb/lib/table/Interface.java | 3 ++ .../opendaylight/ovsdb/lib/table/Manager.java | 3 ++ .../opendaylight/ovsdb/lib/table/Mirror.java | 3 ++ .../opendaylight/ovsdb/lib/table/NetFlow.java | 3 ++ .../ovsdb/lib/table/Open_vSwitch.java | 3 ++ .../opendaylight/ovsdb/lib/table/Port.java | 3 ++ .../org/opendaylight/ovsdb/lib/table/Qos.java | 3 ++ .../opendaylight/ovsdb/lib/table/Queue.java | 3 ++ .../opendaylight/ovsdb/lib/table/SFlow.java | 3 ++ .../org/opendaylight/ovsdb/lib/table/SSL.java | 3 ++ .../ovsdb/plugin/ConfigurationService.java | 33 +++++++++++-------- .../ovsdb/plugin/ConnectionService.java | 2 ++ .../lib/message/OVSDBNettyFactoryTest.java | 33 +++++++++++-------- 22 files changed, 155 insertions(+), 51 deletions(-) create mode 100644 ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBMapSerializer.java create mode 100644 ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBSetSerializer.java diff --git a/ovsdb/pom.xml b/ovsdb/pom.xml index 22b5e4ced4..2a0900c0c6 100755 --- a/ovsdb/pom.xml +++ b/ovsdb/pom.xml @@ -43,7 +43,7 @@ javax.net.ssl, * - jsonrpc4j,httpclient,commons-codec,httpcore-nio,javax.servlet-api,jackson-annotations,jackson-core,jackson-databind,portlet-api,commons-collections;type=!pom;inline=false + httpclient,commons-codec,httpcore-nio,javax.servlet-api,jackson-annotations,jackson-core,jackson-databind,portlet-api,commons-collections;type=!pom;inline=false true @@ -64,14 +64,6 @@ - - - jsonrpc4j-webdav-maven-repo - jsonrpc4j maven repository - http://jsonrpc4j.googlecode.com/svn/maven/repo/ - default - - org.opendaylight.controller @@ -146,4 +138,4 @@ 1.0 - \ No newline at end of file + diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/InsertOperation.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/InsertOperation.java index 481a90e328..bb3071f840 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/InsertOperation.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/InsertOperation.java @@ -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 row; + public Table row; public InsertOperation() { super(); @@ -16,7 +18,7 @@ public class InsertOperation extends Operation { } public InsertOperation(String table, String uuidName, - Map row) { + Table row) { this(); this.table = table; this.uuidName = uuidName; @@ -39,11 +41,11 @@ public class InsertOperation extends Operation { this.uuidName = uuidName; } - public Map getRow() { + public Table getRow() { return row; } - public void setRow(Map row) { + public void setRow(Table row) { this.row = row; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBMap.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBMap.java index 6ae8cda958..6fcca29b49 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBMap.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBMap.java @@ -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 extends ForwardingMap { HashMap target = Maps.newHashMap(); @Override - protected Map delegate() { + public Map delegate() { return target; } } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBSet.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBSet.java index 9a2c7cabf9..78d27e574a 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBSet.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/OvsDBSet.java @@ -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 extends ForwardingSet { Set target = Sets.newHashSet(); @Override - protected Set delegate() { + public Set 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 index 0000000000..2b638dcb33 --- /dev/null +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBMapSerializer.java @@ -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> { + @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 index 0000000000..b70876e0b3 --- /dev/null +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/json/OvsDBSetSerializer.java @@ -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> { + @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 diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Bridge.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Bridge.java index 09916de19a..eed47518b5 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Bridge.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Bridge.java @@ -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 { public static final Name NAME = new Name("Bridge"){}; public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column{controller, fail_mode, name, ports} @@ -24,6 +26,7 @@ public class Bridge extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Capability.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Capability.java index b097fd6f3a..782ba8231e 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Capability.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Capability.java @@ -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 { public static final Name NAME = new Name("Capability") {}; @@ -18,6 +20,7 @@ public class Capability extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Controller.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Controller.java index 278ffd306c..31f6e203f6 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Controller.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Controller.java @@ -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 { public static final Name NAME = new Name("Controller") {}; @@ -16,6 +18,7 @@ public class Controller extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Interface.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Interface.java index 9174de74c9..7dbf8850e9 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Interface.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Interface.java @@ -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 { public static Name NAME = new Name("Interface") {}; @@ -91,6 +93,7 @@ public class Interface extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Manager.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Manager.java index 478cfa36bb..16c35a93dc 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Manager.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Manager.java @@ -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 { public static final Name NAME = new Name("Manager") {}; @@ -16,6 +18,7 @@ public class Manager extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Mirror.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Mirror.java index ed7323ece4..0d43c9920d 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Mirror.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Mirror.java @@ -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 { public static final Name NAME = new Name("Mirror") {}; @@ -82,6 +84,7 @@ public class Mirror extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/NetFlow.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/NetFlow.java index b7665a80b9..9b3d4888b0 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/NetFlow.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/NetFlow.java @@ -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 { public static final Name NAME = new Name("NetFlow") {}; @@ -17,6 +19,7 @@ public class NetFlow extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Open_vSwitch.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Open_vSwitch.java index 9a04facc0d..446e939343 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Open_vSwitch.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Open_vSwitch.java @@ -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 { public static final Name NAME = new Name("Open_vSwitch"){}; @@ -28,6 +30,7 @@ public class Open_vSwitch extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Port.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Port.java index b27df2a09f..5241175b76 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Port.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Port.java @@ -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 { public static final Name NAME = new Name("Port") {}; @@ -88,6 +90,7 @@ public class Port extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Qos.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Qos.java index d16fa6dfc9..98996c347f 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Qos.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Qos.java @@ -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 { public static final Name NAME = new Name("QoS") {}; @@ -52,6 +54,7 @@ public class Qos extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Queue.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Queue.java index 67bc7abca0..0e63d622a7 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Queue.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/Queue.java @@ -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 { public static final Name NAME = new Name("Queue") {}; @@ -43,6 +45,7 @@ public class Queue extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SFlow.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SFlow.java index 6bb7f31da9..116ad540c6 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SFlow.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SFlow.java @@ -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 { public static final Name NAME = new Name("sFlow") {}; @@ -23,6 +25,7 @@ public class SFlow extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SSL.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SSL.java index 8b168959a1..1c0ee155c8 100644 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SSL.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/table/SSL.java @@ -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 { public static final Name NAME = new Name("SSL") {}; @@ -46,6 +48,7 @@ public class SSL extends Table { } @Override + @JsonIgnore public Name getTableName() { return NAME; } diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java index 260d2f1f10..2e34af7577 100755 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java @@ -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 vswitchRow = new HashMap(); + Open_vSwitch ovsTableRow = new Open_vSwitch(); + OvsDBSet bridges = new OvsDBSet(); 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 bridgeRow = new HashMap(); - bridgeRow.put("name", bridgeIdentifier); - UUID ports = new UUID(newPort); - bridgeRow.put("ports", ports); + Bridge bridgeRow = new Bridge(); + OvsDBSet ports = new OvsDBSet(); + UUID port = new UUID(newPort); + ports.add(port); + bridgeRow.setPorts(ports); InsertOperation addBridgeRequest = new InsertOperation(Bridge.NAME.getName(), newBridge, bridgeRow); - Map portRow = new HashMap(); - portRow.put("name", bridgeIdentifier); - UUID interfaces = new UUID(newInterface); - portRow.put("interfaces", interfaces); + Port portRow = new Port(); + OvsDBSet interfaces = new OvsDBSet(); + UUID interfaceid = new UUID(newInterface); + interfaces.add(interfaceid); + portRow.setInterfaces(interfaces); InsertOperation addPortRequest = new InsertOperation(Port.NAME.getName(), newPort, portRow); - Map interfaceRow = new HashMap(); - 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(); diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConnectionService.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConnectionService.java index 59249a2b7c..7fc0342866 100755 --- a/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConnectionService.java +++ b/ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConnectionService.java @@ -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); diff --git a/ovsdb/src/test/java/org/opendaylight/ovsdb/lib/message/OVSDBNettyFactoryTest.java b/ovsdb/src/test/java/org/opendaylight/ovsdb/lib/message/OVSDBNettyFactoryTest.java index f5ff58e92f..fef7dcc3ba 100644 --- a/ovsdb/src/test/java/org/opendaylight/ovsdb/lib/message/OVSDBNettyFactoryTest.java +++ b/ovsdb/src/test/java/org/opendaylight/ovsdb/lib/message/OVSDBNettyFactoryTest.java @@ -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 vswitchRow = new HashMap(); + Open_vSwitch ovsTableRow = new Open_vSwitch(); + OvsDBSet bridges = new OvsDBSet(); 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 bridgeRow = new HashMap(); - bridgeRow.put("name", bridgeIdentifier); - UUID ports = new UUID(newPort); - bridgeRow.put("ports", ports); + Bridge bridgeRow = new Bridge(); + OvsDBSet ports = new OvsDBSet(); + UUID port = new UUID(newPort); + ports.add(port); + bridgeRow.setPorts(ports); InsertOperation addBridgeRequest = new InsertOperation(Bridge.NAME.getName(), newBridge, bridgeRow); - Map portRow = new HashMap(); - portRow.put("name", bridgeIdentifier); - UUID interfaces = new UUID(newInterface); - portRow.put("interfaces", interfaces); + Port portRow = new Port(); + OvsDBSet interfaces = new OvsDBSet(); + UUID interfaceid = new UUID(newInterface); + interfaces.add(interfaceid); + portRow.setInterfaces(interfaces); InsertOperation addPortRequest = new InsertOperation(Port.NAME.getName(), newPort, portRow); - Map interfaceRow = new HashMap(); - 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(); -- 2.36.6