aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation')
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java81
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java123
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java124
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbMap.java83
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbSet.java85
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/RefTableRow.java84
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java159
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/UUID.java84
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/ConditionSerializer.java41
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/MutationSerializer.java41
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbMapSerializer.java49
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbSetSerializer.java46
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDConverter.java32
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDSerializer.java43
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UpdateNotificationConverter.java46
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/package-info.java20
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/package-info.java20
17 files changed, 1161 insertions, 0 deletions
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java
new file mode 100644
index 00000000..60f49442
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Objects;
+
+/**
+ * Column is the basic element of the OpenVswitch database.
+ */
+public final class Column {
+ private final String columnName;
+ private final Object data;
+
+ /**
+ * Column constructor.
+ * @param columnName the column name
+ * @param obj the data of the column
+ */
+ public Column(String columnName, Object obj) {
+ checkNotNull(columnName, "columnName cannot be null");
+ checkNotNull(obj, "data cannot be null");
+ this.columnName = columnName;
+ this.data = obj;
+ }
+
+ /**
+ * Returns column data.
+ * @return column data
+ */
+ public Object data() {
+ return data;
+ }
+
+ /**
+ * Returns columnName.
+ * @return columnName
+ */
+ public String columnName() {
+ return columnName;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(columnName, data);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof Column) {
+ final Column other = (Column) obj;
+ return Objects.equals(this.columnName, other.columnName)
+ && Objects.equals(this.data, other.data);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("columnName", columnName)
+ .add("data", data).toString();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java
new file mode 100644
index 00000000..cbf35424
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Condition.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Objects;
+
+import org.onosproject.ovsdb.rfc.notation.json.ConditionSerializer;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+/**
+ * Condition is a 3-element JSON array of the form [column, function, value]
+ * that represents a test on a column value.
+ */
+@JsonSerialize(using = ConditionSerializer.class)
+public final class Condition {
+ /**
+ * Function of Notation. Refer to RFC 7047 Section 5.1.
+ */
+ public enum Function {
+ LESS_THAN("<"), LESS_THAN_OR_EQUALS("<="), EQUALS("=="),
+ NOT_EQUALS("!="), GREATER_THAN(">"), GREATER_THAN_OR_EQUALS(">="),
+ INCLUDES("includes"), EXCLUDES("excludes");
+
+ private final String function;
+
+ private Function(String function) {
+ this.function = function;
+ }
+
+ /**
+ * Returns the function for Function.
+ * @return the function
+ */
+ public String function() {
+ return function;
+ }
+ }
+
+ private final String column;
+ private final Function function;
+ private final Object value;
+
+ /**
+ * Constructs a Condition object.
+ * @param column the column name
+ * @param function Function
+ * @param value column data
+ */
+ public Condition(String column, Function function, Object value) {
+ checkNotNull(column, "column cannot be null");
+ checkNotNull(function, "function cannot be null");
+ checkNotNull(value, "value cannot be null");
+ this.column = column;
+ this.function = function;
+ this.value = value;
+ }
+
+ /**
+ * Returns column name.
+ * @return column name
+ */
+ public String getColumn() {
+ return column;
+ }
+
+ /**
+ * Returns Function.
+ * @return Function
+ */
+ public Function getFunction() {
+ return function;
+ }
+
+ /**
+ * Returns column data.
+ * @return column data
+ */
+ public Object getValue() {
+ return value;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(column, function, value);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof Condition) {
+ final Condition other = (Condition) obj;
+ return Objects.equals(this.column, other.column)
+ && Objects.equals(this.function, other.function)
+ && Objects.equals(this.value, other.value);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("column", column)
+ .add("function", function).add("value", value).toString();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java
new file mode 100644
index 00000000..5b5293c2
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Mutation.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Objects;
+
+import org.onosproject.ovsdb.rfc.notation.json.MutationSerializer;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+/**
+ * Mutation is s 3-element JSON array of the form [column, mutator, value] that
+ * represents a change to a column value.
+ */
+@JsonSerialize(using = MutationSerializer.class)
+public final class Mutation {
+ /**
+ * Mutator must be "+=", "-=", "*=", "/=", or (integer only) "%=". The value
+ * of column is changed to the sum, difference, product, quotient, or
+ * remainder, respectively, of column and value.
+ */
+ public enum Mutator {
+ SUM("+="), DIFFERENCE("-="), PRODUCT("*="), QUOTIENT("/="),
+ REMAINDER("%="), INSERT("insert"), DELETE("delete");
+
+ private final String mutator;
+
+ private Mutator(String mutator) {
+ this.mutator = mutator;
+ }
+
+ /**
+ * Returns the mutator for Mutator.
+ * @return the mutator
+ */
+ public String mutator() {
+ return mutator;
+ }
+ }
+
+ private final String column;
+ private final Mutator mutator;
+ private final Object value;
+
+ /**
+ * Mutation constructor.
+ * @param column the column name
+ * @param mutator Mutator
+ * @param value column data
+ */
+ public Mutation(String column, Mutator mutator, Object value) {
+ checkNotNull(column, "column cannot be null");
+ checkNotNull(mutator, "mutator cannot be null");
+ checkNotNull(value, "value cannot be null");
+ this.column = column;
+ this.mutator = mutator;
+ this.value = value;
+ }
+
+ /**
+ * Returns column name.
+ * @return column name
+ */
+ public String getColumn() {
+ return column;
+ }
+
+ /**
+ * Returns Mutator.
+ * @return Mutator
+ */
+ public Mutator getMutator() {
+ return mutator;
+ }
+
+ /**
+ * Returns column data.
+ * @return column data
+ */
+ public Object getValue() {
+ return value;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(column, mutator, value);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof Mutation) {
+ final Mutation other = (Mutation) obj;
+ return Objects.equals(this.column, other.column)
+ && Objects.equals(this.mutator, other.mutator)
+ && Objects.equals(this.value, other.value);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("column", column)
+ .add("mutator", mutator).add("value", value).toString();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbMap.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbMap.java
new file mode 100644
index 00000000..a62ab0db
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbMap.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Map;
+import java.util.Objects;
+
+import org.onosproject.ovsdb.rfc.notation.json.OvsdbMapSerializer;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+/**
+ * OvsdbMap is a 2-element JSON array that represents a database map value.
+ */
+@JsonSerialize(using = OvsdbMapSerializer.class)
+public final class OvsdbMap {
+
+ private final Map map;
+
+ /**
+ * OvsdbMap constructor.
+ * @param map java.util.Map
+ */
+ private OvsdbMap(Map map) {
+ checkNotNull(map, "map cannot be null");
+ this.map = map;
+ }
+
+ /**
+ * Returns map.
+ * @return map
+ */
+ public Map map() {
+ return map;
+ }
+
+ /**
+ * convert Map into OvsdbMap.
+ * @param map java.util.Map
+ * @return OvsdbMap
+ */
+ public static OvsdbMap ovsdbMap(Map map) {
+ return new OvsdbMap(map);
+ }
+
+ @Override
+ public int hashCode() {
+ return map.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof OvsdbMap) {
+ final OvsdbMap other = (OvsdbMap) obj;
+ return Objects.equals(this.map, other.map);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("map", map).toString();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbSet.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbSet.java
new file mode 100644
index 00000000..21f0b72b
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/OvsdbSet.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Objects;
+import java.util.Set;
+
+import org.onosproject.ovsdb.rfc.notation.json.OvsdbSetSerializer;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+/**
+ * OvsdbSet is either an atom, representing a set with exactly one element, or
+ * a 2-element JSON array that represents a database set value.
+ *
+ */
+@JsonSerialize(using = OvsdbSetSerializer.class)
+public final class OvsdbSet {
+
+ private final Set set;
+
+ /**
+ * OvsdbSet constructor.
+ * @param set java.util.Set
+ */
+ private OvsdbSet(Set set) {
+ checkNotNull(set, "set cannot be null");
+ this.set = set;
+ }
+
+ /**
+ * Returns set.
+ * @return set
+ */
+ public Set set() {
+ return set;
+ }
+
+ /**
+ * convert Set into OvsdbSet.
+ * @param set java.util.Set
+ * @return OvsdbSet
+ */
+ public static OvsdbSet ovsdbSet(Set set) {
+ return new OvsdbSet(set);
+ }
+
+ @Override
+ public int hashCode() {
+ return set.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof OvsdbSet) {
+ final OvsdbSet other = (OvsdbSet) obj;
+ return Objects.equals(this.set, other.set);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("set", set).toString();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/RefTableRow.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/RefTableRow.java
new file mode 100644
index 00000000..1b22a426
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/RefTableRow.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Objects;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * The RefTable type that can be expanded to Row. Refer to RFC 7047 Section 3.2.
+ */
+public final class RefTableRow {
+
+ private final String refTable;
+ private final JsonNode jsonNode;
+
+ /**
+ * RefTableRow constructor.
+ * @param refTable the refTable value of JsonNode
+ * @param jsonNode JsonNode
+ */
+ public RefTableRow(String refTable, JsonNode jsonNode) {
+ checkNotNull(refTable, "refTable cannot be null");
+ checkNotNull(jsonNode, "jsonNode cannot be null");
+ this.refTable = refTable;
+ this.jsonNode = jsonNode;
+ }
+
+ /**
+ * Returns JsonNode.
+ * @return JsonNode
+ */
+ public JsonNode jsonNode() {
+ return jsonNode;
+ }
+
+ /**
+ * Returns refTable.
+ * @return refTable
+ */
+ public String refTable() {
+ return refTable;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(refTable, jsonNode);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof RefTableRow) {
+ final RefTableRow other = (RefTableRow) obj;
+ return Objects.equals(this.refTable, other.refTable)
+ && Objects.equals(this.jsonNode, other.jsonNode);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("refTable", refTable)
+ .add("jsonNode", jsonNode).toString();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java
new file mode 100644
index 00000000..09088766
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation;
+
+import com.google.common.collect.Maps;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Objects;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Row is the basic element of the OpenVswitch's table.
+ */
+public final class Row {
+ private String tableName;
+ private UUID uuid;
+ private Map<String, Column> columns;
+
+ /**
+ * Row constructor.
+ */
+ public Row() {
+ this.columns = Maps.newHashMap();
+ }
+
+ /**
+ * Row constructor.
+ *
+ * @param tableName table name
+ * @deprecated in Emu Release
+ */
+ @Deprecated
+ private Row(String tableName) {
+ checkNotNull(tableName, "tableName cannot be null");
+ this.tableName = tableName;
+ this.columns = Maps.newHashMap();
+ }
+
+ /**
+ * Row constructor.
+ *
+ * @param tableName table name
+ * @param columns Map of Column entity
+ * @param uuid UUID of the row
+ */
+ public Row(String tableName, UUID uuid, Map<String, Column> columns) {
+ checkNotNull(tableName, "table name cannot be null");
+ checkNotNull(uuid, "uuid cannot be null");
+ checkNotNull(columns, "columns cannot be null");
+ this.tableName = tableName;
+ this.uuid = uuid;
+ this.columns = columns;
+ }
+
+ /**
+ * Returns tableName.
+ *
+ * @return tableName
+ */
+ public String tableName() {
+ return tableName;
+ }
+
+ /**
+ * Set tableName value.
+ *
+ * @param tableName table name
+ */
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
+
+ /**
+ * Returns uuid.
+ *
+ * @return uuid
+ */
+ public UUID uuid() {
+ return uuid;
+ }
+
+ /**
+ * Sets uuid value.
+ *
+ * @param uuid new uuid
+ */
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+ /**
+ * Returns Column by ColumnSchema.
+ *
+ * @param columnName column name
+ * @return Column
+ */
+ public Column getColumn(String columnName) {
+ return columns.get(columnName);
+ }
+
+ /**
+ * Returns Collection of Column.
+ *
+ * @return Collection of Column
+ */
+ public Collection<Column> getColumns() {
+ return columns.values();
+ }
+
+ /**
+ * add Column.
+ *
+ * @param columnName column name
+ * @param data Column entity
+ */
+ public void addColumn(String columnName, Column data) {
+ this.columns.put(columnName, data);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(tableName, columns);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof Row) {
+ final Row other = (Row) obj;
+ return Objects.equals(this.tableName, other.tableName)
+ && Objects.equals(this.columns, other.columns);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("tableName", tableName)
+ .add("columns", columns).toString();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/UUID.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/UUID.java
new file mode 100644
index 00000000..0177eea3
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/UUID.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Objects;
+
+import org.onosproject.ovsdb.rfc.notation.json.UUIDConverter;
+import org.onosproject.ovsdb.rfc.notation.json.UUIDSerializer;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+/**
+ * Handles both uuid and named-uuid.
+ */
+@JsonSerialize(using = UUIDSerializer.class)
+@JsonDeserialize(converter = UUIDConverter.class)
+public final class UUID {
+ private final String value;
+
+ /**
+ * UUID constructor.
+ * @param value UUID value
+ */
+ private UUID(String value) {
+ checkNotNull(value, "value cannot be null");
+ this.value = value;
+ }
+
+ /**
+ * Get UUID.
+ * @param value UUID value
+ * @return UUID
+ */
+ public static UUID uuid(String value) {
+ return new UUID(value);
+ }
+
+ /**
+ * Returns value.
+ * @return value
+ */
+ public String value() {
+ return value;
+ }
+
+ @Override
+ public int hashCode() {
+ return value.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof UUID) {
+ final UUID other = (UUID) obj;
+ return Objects.equals(this.value, other.value);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("value", value).toString();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/ConditionSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/ConditionSerializer.java
new file mode 100644
index 00000000..551a66a4
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/ConditionSerializer.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation.json;
+
+import java.io.IOException;
+
+import org.onosproject.ovsdb.rfc.notation.Condition;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+/**
+ * Condition Serializer.
+ */
+public class ConditionSerializer extends JsonSerializer<Condition> {
+ @Override
+ public void serialize(Condition condition, JsonGenerator generator,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ generator.writeStartArray();
+ generator.writeString(condition.getColumn());
+ generator.writeString(condition.getFunction().function());
+ generator.writeObject(condition.getValue());
+ generator.writeEndArray();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/MutationSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/MutationSerializer.java
new file mode 100644
index 00000000..a18b9e72
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/MutationSerializer.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation.json;
+
+import java.io.IOException;
+
+import org.onosproject.ovsdb.rfc.notation.Mutation;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+/**
+ * Mutation Serializer.
+ */
+public class MutationSerializer extends JsonSerializer<Mutation> {
+ @Override
+ public void serialize(Mutation condition, JsonGenerator generator,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ generator.writeStartArray();
+ generator.writeString(condition.getColumn());
+ generator.writeString(condition.getMutator().mutator());
+ generator.writeObject(condition.getValue());
+ generator.writeEndArray();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbMapSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbMapSerializer.java
new file mode 100644
index 00000000..60fd3349
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbMapSerializer.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation.json;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.onosproject.ovsdb.rfc.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;
+
+/**
+ * OvsdbMap Serializer.
+ */
+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.map();
+ for (Object key : javaMap.keySet()) {
+ generator.writeStartArray();
+ generator.writeObject(key);
+ generator.writeObject(javaMap.get(key));
+ generator.writeEndArray();
+ }
+ generator.writeEndArray();
+ generator.writeEndArray();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbSetSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbSetSerializer.java
new file mode 100644
index 00000000..509b2c53
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/OvsdbSetSerializer.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation.json;
+
+import java.io.IOException;
+import java.util.Set;
+
+import org.onosproject.ovsdb.rfc.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;
+
+/**
+ * OvsdbSet Serializer.
+ */
+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.set();
+ for (Object key : javaSet) {
+ generator.writeObject(key);
+ }
+ generator.writeEndArray();
+ generator.writeEndArray();
+ }
+} \ No newline at end of file
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDConverter.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDConverter.java
new file mode 100644
index 00000000..66a86633
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDConverter.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation.json;
+
+import org.onosproject.ovsdb.rfc.notation.UUID;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.util.StdConverter;
+
+/**
+ * UUIDConverter Converter.
+ */
+public class UUIDConverter extends StdConverter<JsonNode, UUID> {
+
+ @Override
+ public UUID convert(JsonNode json) {
+ return UUID.uuid(json.get(1).asText());
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDSerializer.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDSerializer.java
new file mode 100644
index 00000000..8fb5c49c
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UUIDSerializer.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation.json;
+
+import java.io.IOException;
+
+import org.onosproject.ovsdb.rfc.notation.UUID;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+/**
+ * UUID Serializer.
+ */
+public class UUIDSerializer extends JsonSerializer<UUID> {
+ @Override
+ public void serialize(UUID value, JsonGenerator generator,
+ SerializerProvider provider) throws IOException {
+ generator.writeStartArray();
+ String reg = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$";
+ if (value.value().matches(reg)) {
+ generator.writeString("uuid");
+ } else {
+ generator.writeString("named-uuid");
+ }
+ generator.writeString(value.value());
+ generator.writeEndArray();
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UpdateNotificationConverter.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UpdateNotificationConverter.java
new file mode 100644
index 00000000..2bb1b633
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/UpdateNotificationConverter.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ovsdb.rfc.notation.json;
+
+import org.onosproject.ovsdb.rfc.message.UpdateNotification;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.util.StdConverter;
+
+/**
+ * UpdateNotificationDeser Converter.
+ */
+public class UpdateNotificationConverter
+ extends StdConverter<JsonNode, UpdateNotification> {
+
+ @Override
+ public UpdateNotification convert(JsonNode value) {
+ return deserialize(value);
+ }
+
+ /**
+ * JsonNode convert into UpdateNotification.
+ * @param node the "params" node of UpdateNotification JsonNode
+ */
+ private UpdateNotification deserialize(JsonNode node) {
+ if (node.isArray()) {
+ if (node.size() == 2) {
+ return new UpdateNotification(node.get(0).asText(), node.get(1));
+ }
+ }
+ return null;
+ }
+}
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/package-info.java
new file mode 100644
index 00000000..eb2e7c66
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/json/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * OVSDB JSON utilities.
+ */
+package org.onosproject.ovsdb.rfc.notation.json;
diff --git a/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/package-info.java b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/package-info.java
new file mode 100644
index 00000000..1900dfef
--- /dev/null
+++ b/framework/src/onos/protocols/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * OVSDB primitives.
+ */
+package org.onosproject.ovsdb.rfc.notation;