[ONOS-2563]Optimize RFC 7047's code.
Change-Id: I000f2b802420e4f47ce320f6ed021049bd2fd83e
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/AbnormalSchemaException.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/AbnormalJsonNodeException.java
similarity index 70%
rename from ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/AbnormalSchemaException.java
rename to ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/AbnormalJsonNodeException.java
index 8a32ffd..e4b1054 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/AbnormalSchemaException.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/AbnormalJsonNodeException.java
@@ -16,25 +16,25 @@
package org.onosproject.ovsdb.rfc.error;
/**
- * AbnormalSchema exception is thrown when the received schema is invalid.
+ * AbnormalJsonNodeException exception is thrown when the received JsonNode is invalid.
*/
-public class AbnormalSchemaException extends RuntimeException {
+public class AbnormalJsonNodeException extends RuntimeException {
private static final long serialVersionUID = 8328377718334680368L;
/**
- * Constructs a AbnormalSchemaException object.
+ * Constructs a AbnormalJsonNodeException object.
* @param message error message
*/
- public AbnormalSchemaException(String message) {
+ public AbnormalJsonNodeException(String message) {
super(message);
}
/**
- * Constructs a AbnormalSchemaException object.
+ * Constructs a AbnormalJsonNodeException object.
* @param message error message
* @param cause Throwable
*/
- public AbnormalSchemaException(String message, Throwable cause) {
+ public AbnormalJsonNodeException(String message, Throwable cause) {
super(message, cause);
}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/ArgumentException.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/ArgumentException.java
deleted file mode 100644
index d7d69d1..0000000
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/ArgumentException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.error;
-
-/**
- * This exception is thrown when the argument is not supported.
- */
-public class ArgumentException extends RuntimeException {
- private static final long serialVersionUID = 4950089877540156797L;
-
- /**
- * Constructs a ArgumentException object.
- * @param message error message
- */
- public ArgumentException(String message) {
- super(message);
- }
-
- /**
- * Constructs a ArgumentException object.
- * @param message error message
- * @param cause Throwable
- */
- public ArgumentException(String message, Throwable cause) {
- super(message, cause);
- }
-}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/JsonParsingException.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/JsonParsingException.java
deleted file mode 100644
index e62a03f..0000000
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/JsonParsingException.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.error;
-
-/**
- * The JsonParsingException is thrown when JSON could not be successfully
- * parsed.
- */
-public class JsonParsingException extends RuntimeException {
- private static final long serialVersionUID = 1424752181911923235L;
-
- /**
- * Constructs a JsonParsingException object.
- * @param message error message
- */
- public JsonParsingException(String message) {
- super(message);
- }
-
- /**
- * Constructs a JsonParsingException object.
- * @param message error message
- * @param cause Throwable
- */
- public JsonParsingException(String message, Throwable cause) {
- super(message, cause);
- }
-
- /**
- * Constructs a JsonParsingException object.
- * @param cause Throwable
- */
- public JsonParsingException(Throwable cause) {
- super(cause);
- }
-
- /**
- * Constructs a JsonParsingException object.
- * @param message error message
- * @param cause Throwable
- * @param enableSuppression enable Suppression
- * @param writableStackTrace writable StackTrace
- */
- public JsonParsingException(String message, Throwable cause,
- boolean enableSuppression,
- boolean writableStackTrace) {
- super(message, cause, enableSuppression, writableStackTrace);
- }
-}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/TypedSchemaException.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/TypedSchemaException.java
deleted file mode 100644
index 59aea30..0000000
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/TypedSchemaException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.error;
-
-/**
- * This is a generic exception thrown by the Typed Schema utilities.
- */
-public class TypedSchemaException extends RuntimeException {
- private static final long serialVersionUID = -1452257990783176715L;
-
- /**
- * Constructs a TypedSchemaException object.
- * @param message error message
- */
- public TypedSchemaException(String message) {
- super(message);
- }
-
- /**
- * Constructs a TypedSchemaException object.
- * @param message error message
- * @param cause Throwable
- */
- public TypedSchemaException(String message, Throwable cause) {
- super(message, cause);
- }
-}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/UnsupportedEncodingException.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/UnsupportedEncodingException.java
deleted file mode 100644
index 6ba7fd5..0000000
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/UnsupportedEncodingException.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.onosproject.ovsdb.rfc.error;
-
-/**
- * This exception is thrown when the encoding does not meet UTF-8 in RFC7047.
- */
-public class UnsupportedEncodingException extends RuntimeException {
- private static final long serialVersionUID = -4865311369828520666L;
-
- /**
- * Constructs a UnsupportedEncodingException object.
- * @param message error message
- */
- public UnsupportedEncodingException(String message) {
- super(message);
- }
-}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/UnknownResultException.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/UnsupportedException.java
similarity index 70%
rename from ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/UnknownResultException.java
rename to ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/UnsupportedException.java
index ab30fb1..a34b8d4 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/UnknownResultException.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/UnsupportedException.java
@@ -16,26 +16,26 @@
package org.onosproject.ovsdb.rfc.error;
/**
- * This exception is thrown when a result does not meet any of the known formats
- * in RFC7047.
+ * This exception is thrown when the caller invoke the unsupported method or
+ * use the encoding is not supported.
*/
-public class UnknownResultException extends RuntimeException {
+public class UnsupportedException extends RuntimeException {
private static final long serialVersionUID = 1377011546616825375L;
/**
- * Constructs a UnknownResultException object.
+ * Constructs a UnsupportedException object.
* @param message error message
*/
- public UnknownResultException(String message) {
+ public UnsupportedException(String message) {
super(message);
}
/**
- * Constructs a UnknownResultException object.
+ * Constructs a UnsupportedException object.
* @param message error message
* @param cause Throwable
*/
- public UnknownResultException(String message, Throwable cause) {
+ public UnsupportedException(String message, Throwable cause) {
super(message, cause);
}
}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/VersionMismatchException.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/VersionMismatchException.java
index 68d63b9..10d278b 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/VersionMismatchException.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/error/VersionMismatchException.java
@@ -15,7 +15,6 @@
*/
package org.onosproject.ovsdb.rfc.error;
-import static com.google.common.base.MoreObjects.toStringHelper;
/**
* This exception is used when the a table or row is accessed though a typed
@@ -47,15 +46,9 @@
* @param fromVersion the initial version
* @return message
*/
- public static String createFromMessage(String actualVersion,
- String fromVersion) {
- String message = toStringHelper("VersionMismatchException")
- .addValue("The fromVersion should less than the actualVersion.\n"
- + "fromVersion: "
- + fromVersion
- + ".\n"
- + "actualVersion: " + actualVersion)
- .toString();
+ public static String createFromMessage(String actualVersion, String fromVersion) {
+ String message = "The fromVersion should less than the actualVersion.\n fromVersion: "
+ + fromVersion + ".\n" + "actualVersion: " + actualVersion;
return message;
}
@@ -66,13 +59,8 @@
* @return message
*/
public static String createToMessage(String actualVersion, String toVersion) {
- String message = toStringHelper("VersionMismatchException")
- .addValue("The toVersion should greater than the required version.\n"
- + "toVersion: "
- + toVersion
- + ".\n"
- + "Actual Version: " + actualVersion)
- .toString();
+ String message = "The toVersion should greater than the actualVersion.\n"
+ + "toVersion: " + toVersion + ".\n" + " actualVersion: " + actualVersion;
return message;
}
}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/UpdateNotification.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/UpdateNotification.java
index 74dd2a6..d539ff3 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/UpdateNotification.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/message/UpdateNotification.java
@@ -1,90 +1,90 @@
-/*
- * 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.message;
-
-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.UpdateNotificationConverter;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-
-/**
- * The "update" notification is sent by the server to the client to report
- * changes in tables that are being monitored following a "monitor" request. The
- * "params" of the result JsonNode.
- */
-@JsonDeserialize(converter = UpdateNotificationConverter.class)
-public final class UpdateNotification {
- private final Object context;
- private final JsonNode tbUpdatesJsonNode;
-
- /**
- * Constructs a UpdateNotification object.
- * @param context the "json-value" in "params" of the result JsonNode
- * @param tbUpdatesJsonNode the "table-updates" in "params" of the result JsonNode
- */
- public UpdateNotification(Object context, JsonNode tbUpdatesJsonNode) {
- checkNotNull(context, "context cannot be null");
- checkNotNull(tbUpdatesJsonNode, "tablebUpdates JsonNode cannot be null");
- this.context = context;
- this.tbUpdatesJsonNode = tbUpdatesJsonNode;
- }
-
- /**
- * Return context.
- * @return context
- */
- public Object context() {
- return context;
- }
-
- /**
- * Return tbUpdatesJsonNode.
- * @return tbUpdatesJsonNode
- */
- public JsonNode tbUpdatesJsonNode() {
- return tbUpdatesJsonNode;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(context, tbUpdatesJsonNode);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj instanceof UpdateNotification) {
- final UpdateNotification other = (UpdateNotification) obj;
- return Objects.equals(this.context, other.context)
- && Objects.equals(this.tbUpdatesJsonNode,
- other.tbUpdatesJsonNode);
- }
- return false;
- }
-
- @Override
- public String toString() {
- return toStringHelper(this).add("context", context)
- .add("tbUpdatesJsonNode", tbUpdatesJsonNode).toString();
- }
-}
+/*
+ * 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.message;
+
+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.UpdateNotificationConverter;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+
+/**
+ * The "update" notification is sent by the server to the client to report
+ * changes in tables that are being monitored following a "monitor" request. The
+ * "params" of the result JsonNode.
+ */
+@JsonDeserialize(converter = UpdateNotificationConverter.class)
+public final class UpdateNotification {
+ private final Object jsonValue;
+ private final JsonNode tbUpdatesJsonNode;
+
+ /**
+ * Constructs a UpdateNotification object.
+ * @param jsonValue the "json-value" in "params" of the result JsonNode
+ * @param tbUpdatesJsonNode the "table-updates" in "params" of the result JsonNode
+ */
+ public UpdateNotification(Object jsonValue, JsonNode tbUpdatesJsonNode) {
+ checkNotNull(jsonValue, "jsonValue cannot be null");
+ checkNotNull(tbUpdatesJsonNode, "tablebUpdates JsonNode cannot be null");
+ this.jsonValue = jsonValue;
+ this.tbUpdatesJsonNode = tbUpdatesJsonNode;
+ }
+
+ /**
+ * Return context.
+ * @return context
+ */
+ public Object jsonValue() {
+ return jsonValue;
+ }
+
+ /**
+ * Return tbUpdatesJsonNode.
+ * @return tbUpdatesJsonNode
+ */
+ public JsonNode tbUpdatesJsonNode() {
+ return tbUpdatesJsonNode;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(jsonValue, tbUpdatesJsonNode);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof UpdateNotification) {
+ final UpdateNotification other = (UpdateNotification) obj;
+ return Objects.equals(this.jsonValue, other.jsonValue)
+ && Objects.equals(this.tbUpdatesJsonNode,
+ other.tbUpdatesJsonNode);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("jsonValue", jsonValue)
+ .add("tbUpdatesJsonNode", tbUpdatesJsonNode).toString();
+ }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java
index d2cce63..615eaac 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Column.java
@@ -1,86 +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;
-
-import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-/**
- * Column is the basic element of the OpenVswitch database.
- */
-public final class Column {
- @JsonIgnore
- private final ColumnSchema schema;
- private final Object data;
-
- /**
- * Column constructor.
- * @param schema the column schema
- * @param obj the data of the column
- */
- public Column(ColumnSchema schema, Object obj) {
- checkNotNull(schema, "schema cannot be null");
- checkNotNull(obj, "data cannot be null");
- this.schema = schema;
- this.data = obj;
- }
-
- /**
- * Returns column data.
- * @return column data
- */
- public Object data() {
- return data;
- }
-
- /**
- * Returns ColumnSchema.
- * @return ColumnSchema
- */
- public ColumnSchema schema() {
- return schema;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(schema, 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.schema, other.schema)
- && Objects.equals(this.data, other.data);
- }
- return false;
- }
-
- @Override
- public String toString() {
- return toStringHelper(this).add("schema", schema).add("data", data)
- .toString();
- }
-}
+/*
+ * 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/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java
index 27a4f54..9ef5b48 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/notation/Row.java
@@ -1,136 +1,128 @@
-/*
- * 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.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
-import org.onosproject.ovsdb.rfc.schema.TableSchema;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.google.common.collect.Maps;
-
-/**
- * Row is the basic element of the OpenVswitch's table.
- */
-public final class Row {
- @JsonIgnore
- private TableSchema tableSchema;
- private Map<String, Column> columns;
-
- /**
- * Row constructor.
- */
- public Row() {
- this.columns = Maps.newHashMap();
- }
-
- /**
- * Row constructor.
- * @param tableSchema TableSchema entity
- */
- public Row(TableSchema tableSchema) {
- checkNotNull(tableSchema, "tableSchema cannot be null");
- this.tableSchema = tableSchema;
- this.columns = Maps.newHashMap();
- }
-
- /**
- * Row constructor.
- * @param tableSchema TableSchema entity
- * @param columns List of Column entity
- */
- public Row(TableSchema tableSchema, List<Column> columns) {
- checkNotNull(tableSchema, "tableSchema cannot be null");
- checkNotNull(columns, "columns cannot be null");
- this.tableSchema = tableSchema;
- this.columns = Maps.newHashMap();
- for (Column column : columns) {
- this.columns.put(column.schema().name(), column);
- }
- }
-
- /**
- * Returns tableSchema.
- * @return tableSchema
- */
- public TableSchema getTableSchema() {
- return tableSchema;
- }
-
- /**
- * Set tableSchema value.
- * @param tableSchema TableSchema entity
- */
- public void setTableSchema(TableSchema tableSchema) {
- this.tableSchema = tableSchema;
- }
-
- /**
- * Returns Column by ColumnSchema.
- * @param schema ColumnSchema entity
- * @return Column
- */
- public Column getColumn(ColumnSchema schema) {
- return (Column) columns.get(schema.name());
- }
-
- /**
- * 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(tableSchema, 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.tableSchema, other.tableSchema)
- && Objects.equals(this.columns, other.columns);
- }
- return false;
- }
-
- @Override
- public String toString() {
- return toStringHelper(this).add("tableSchema", tableSchema).add("columns", columns).toString();
- }
-}
+/*
+ * 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.Collection;
+import java.util.Map;
+import java.util.Objects;
+
+import com.google.common.collect.Maps;
+
+/**
+ * Row is the basic element of the OpenVswitch's table.
+ */
+public final class Row {
+ private String tableName;
+ private Map<String, Column> columns;
+
+ /**
+ * Row constructor.
+ */
+ public Row() {
+ this.columns = Maps.newHashMap();
+ }
+
+ /**
+ * Row constructor.
+ * @param tableName table name
+ */
+ public 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
+ */
+ public Row(String tableName, Map<String, Column> columns) {
+ checkNotNull(tableName, "table name cannot be null");
+ checkNotNull(columns, "columns cannot be null");
+ this.tableName = tableName;
+ 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 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/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Delete.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Delete.java
index 05fa9b8..8dcf1fc 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Delete.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Delete.java
@@ -1,77 +1,77 @@
-/*
- * 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.operations;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
-
-import org.onosproject.ovsdb.rfc.notation.Condition;
-import org.onosproject.ovsdb.rfc.schema.TableSchema;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * delete operation.Refer to RFC 7047 Section 5.2.
- */
-public final class Delete implements Operation {
-
- @JsonIgnore
- private final TableSchema tableSchema;
- private final String op;
- private final List<Condition> where;
-
- /**
- * Constructs a Delete object.
- * @param schema TableSchema entity
- * @param where the List of Condition entity
- */
- public Delete(TableSchema schema, List<Condition> where) {
- checkNotNull(schema, "TableSchema cannot be null");
- checkNotNull(where, "where is not null");
- this.tableSchema = schema;
- this.op = Operations.DELETE.op();
- this.where = where;
- }
-
- /**
- * Returns the where member of delete operation.
- * @return the where member of delete operation
- */
- public List<Condition> getWhere() {
- return where;
- }
-
- @Override
- public String getOp() {
- return op;
- }
-
- @Override
- public TableSchema getTableSchema() {
- return tableSchema;
- }
-
- /**
- * For the use of serialization.
- * @return the table member of update operation
- */
- @JsonProperty
- public String getTable() {
- return (tableSchema == null) ? null : tableSchema.name();
- }
-}
+/*
+ * 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.operations;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.List;
+
+import org.onosproject.ovsdb.rfc.notation.Condition;
+import org.onosproject.ovsdb.rfc.schema.TableSchema;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * delete operation.Refer to RFC 7047 Section 5.2.
+ */
+public final class Delete implements Operation {
+
+ @JsonIgnore
+ private final TableSchema tableSchema;
+ private final String op;
+ private final List<Condition> where;
+
+ /**
+ * Constructs a Delete object.
+ * @param schema TableSchema entity
+ * @param where the List of Condition entity
+ */
+ public Delete(TableSchema schema, List<Condition> where) {
+ checkNotNull(schema, "TableSchema cannot be null");
+ checkNotNull(where, "where is not null");
+ this.tableSchema = schema;
+ this.op = Operations.DELETE.op();
+ this.where = where;
+ }
+
+ /**
+ * Returns the where member of delete operation.
+ * @return the where member of delete operation
+ */
+ public List<Condition> getWhere() {
+ return where;
+ }
+
+ @Override
+ public String getOp() {
+ return op;
+ }
+
+ @Override
+ public TableSchema getTableSchema() {
+ return tableSchema;
+ }
+
+ /**
+ * For the use of serialization.
+ * @return the table member of update operation
+ */
+ @JsonProperty
+ public String getTable() {
+ return tableSchema.name();
+ }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Insert.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Insert.java
index 4186945..32e5ce0 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Insert.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Insert.java
@@ -1,111 +1,110 @@
-/*
- * 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.operations;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.onosproject.ovsdb.rfc.notation.Column;
-import org.onosproject.ovsdb.rfc.notation.Row;
-import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
-import org.onosproject.ovsdb.rfc.schema.TableSchema;
-import org.onosproject.ovsdb.rfc.utils.TransValueUtil;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.collect.Maps;
-
-/**
- * insert operation.Refer to RFC 7047 Section 5.2.
- */
-public final class Insert implements Operation {
-
- @JsonIgnore
- private final TableSchema tableSchema;
- private final String op;
- @JsonProperty("uuid-name")
- private final String uuidName;
- private final Map<String, Object> row;
-
- /**
- * Constructs a Insert object.
- * @param schema TableSchema entity
- * @param uuidName uuid-name
- * @param row Row entity
- */
- public Insert(TableSchema schema, String uuidName, Row row) {
- checkNotNull(schema, "TableSchema cannot be null");
- checkNotNull(uuidName, "uuid name cannot be null");
- checkNotNull(row, "row cannot be null");
- this.tableSchema = schema;
- this.op = Operations.INSERT.op();
- this.uuidName = uuidName;
- this.row = Maps.newHashMap();
- generateOperationRow(row);
- }
-
- /**
- * Row entity convert into the row format of insert operation. Refer to RFC
- * 7047 Section 5.2.
- * @param row Row entity
- */
- private void generateOperationRow(Row row) {
- Collection<Column> columns = row.getColumns();
- for (Column column : columns) {
- ColumnSchema columnSchema = column.schema();
- Object value = column.data();
- Object untypedValue = TransValueUtil.getFormatData(value);
- this.row.put(columnSchema.name(), untypedValue);
- }
- }
-
- /**
- * Returns the uuid-name member of insert operation.
- * @return the uuid-name member of insert operation
- */
- public String getUuidName() {
- return uuidName;
- }
-
- /**
- * Returns the row member of insert operation.
- * @return the row member of insert operation
- */
- public Map<String, Object> getRow() {
- return row;
- }
-
- @Override
- public String getOp() {
- return op;
- }
-
- @Override
- public TableSchema getTableSchema() {
- return tableSchema;
- }
-
- /**
- * For the use of serialization.
- * @return the table member of update operation
- */
- @JsonProperty
- public String getTable() {
- return (tableSchema == null) ? null : tableSchema.name();
- }
-}
+/*
+ * 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.operations;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.schema.TableSchema;
+import org.onosproject.ovsdb.rfc.utils.TransValueUtil;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.collect.Maps;
+
+/**
+ * insert operation.Refer to RFC 7047 Section 5.2.
+ */
+public final class Insert implements Operation {
+
+ @JsonIgnore
+ private final TableSchema tableSchema;
+ private final String op;
+ @JsonProperty("uuid-name")
+ private final String uuidName;
+ private final Map<String, Object> row;
+
+ /**
+ * Constructs a Insert object.
+ * @param schema TableSchema entity
+ * @param uuidName uuid-name
+ * @param row Row entity
+ */
+ public Insert(TableSchema schema, String uuidName, Row row) {
+ checkNotNull(schema, "TableSchema cannot be null");
+ checkNotNull(uuidName, "uuid name cannot be null");
+ checkNotNull(row, "row cannot be null");
+ this.tableSchema = schema;
+ this.op = Operations.INSERT.op();
+ this.uuidName = uuidName;
+ this.row = Maps.newHashMap();
+ generateOperationRow(row);
+ }
+
+ /**
+ * Row entity convert into the row format of insert operation. Refer to RFC
+ * 7047 Section 5.2.
+ * @param row Row entity
+ */
+ private void generateOperationRow(Row row) {
+ Collection<Column> columns = row.getColumns();
+ for (Column column : columns) {
+ String columnName = column.columnName();
+ Object value = column.data();
+ Object formatValue = TransValueUtil.getFormatData(value);
+ this.row.put(columnName, formatValue);
+ }
+ }
+
+ /**
+ * Returns the uuid-name member of insert operation.
+ * @return the uuid-name member of insert operation
+ */
+ public String getUuidName() {
+ return uuidName;
+ }
+
+ /**
+ * Returns the row member of insert operation.
+ * @return the row member of insert operation
+ */
+ public Map<String, Object> getRow() {
+ return row;
+ }
+
+ @Override
+ public String getOp() {
+ return op;
+ }
+
+ @Override
+ public TableSchema getTableSchema() {
+ return tableSchema;
+ }
+
+ /**
+ * For the use of serialization.
+ * @return the table member of update operation
+ */
+ @JsonProperty
+ public String getTable() {
+ return tableSchema.name();
+ }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Mutate.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Mutate.java
index 7b5e0f7..1a7023d 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Mutate.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Mutate.java
@@ -1,91 +1,91 @@
-/*
- * 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.operations;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
-
-import org.onosproject.ovsdb.rfc.notation.Condition;
-import org.onosproject.ovsdb.rfc.notation.Mutation;
-import org.onosproject.ovsdb.rfc.schema.TableSchema;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * mutate operation.Refer to RFC 7047 Section 5.2.
- */
-public final class Mutate implements Operation {
-
- @JsonIgnore
- private final TableSchema tableSchema;
- private final String op;
- private final List<Condition> where;
- private final List<Mutation> mutations;
-
- /**
- * Constructs a Mutate object.
- * @param schema TableSchema entity
- * @param where the List of Condition entity
- * @param mutations the List of Mutation entity
- */
- public Mutate(TableSchema schema, List<Condition> where,
- List<Mutation> mutations) {
- checkNotNull(schema, "TableSchema cannot be null");
- checkNotNull(mutations, "mutations cannot be null");
- checkNotNull(where, "where cannot be null");
- this.tableSchema = schema;
- this.op = Operations.MUTATE.op();
- this.where = where;
- this.mutations = mutations;
- }
-
- /**
- * Returns the mutations member of mutate operation.
- * @return the mutations member of mutate operation
- */
- public List<Mutation> getMutations() {
- return mutations;
- }
-
- /**
- * Returns the where member of mutate operation.
- * @return the where member of mutate operation
- */
- public List<Condition> getWhere() {
- return where;
- }
-
- @Override
- public String getOp() {
- return op;
- }
-
- @Override
- public TableSchema getTableSchema() {
- return tableSchema;
- }
-
- /**
- * For the use of serialization.
- * @return the table member of update operation
- */
- @JsonProperty
- public String getTable() {
- return (tableSchema == null) ? null : tableSchema.name();
- }
-}
+/*
+ * 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.operations;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.List;
+
+import org.onosproject.ovsdb.rfc.notation.Condition;
+import org.onosproject.ovsdb.rfc.notation.Mutation;
+import org.onosproject.ovsdb.rfc.schema.TableSchema;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * mutate operation.Refer to RFC 7047 Section 5.2.
+ */
+public final class Mutate implements Operation {
+
+ @JsonIgnore
+ private final TableSchema tableSchema;
+ private final String op;
+ private final List<Condition> where;
+ private final List<Mutation> mutations;
+
+ /**
+ * Constructs a Mutate object.
+ * @param schema TableSchema entity
+ * @param where the List of Condition entity
+ * @param mutations the List of Mutation entity
+ */
+ public Mutate(TableSchema schema, List<Condition> where,
+ List<Mutation> mutations) {
+ checkNotNull(schema, "TableSchema cannot be null");
+ checkNotNull(mutations, "mutations cannot be null");
+ checkNotNull(where, "where cannot be null");
+ this.tableSchema = schema;
+ this.op = Operations.MUTATE.op();
+ this.where = where;
+ this.mutations = mutations;
+ }
+
+ /**
+ * Returns the mutations member of mutate operation.
+ * @return the mutations member of mutate operation
+ */
+ public List<Mutation> getMutations() {
+ return mutations;
+ }
+
+ /**
+ * Returns the where member of mutate operation.
+ * @return the where member of mutate operation
+ */
+ public List<Condition> getWhere() {
+ return where;
+ }
+
+ @Override
+ public String getOp() {
+ return op;
+ }
+
+ @Override
+ public TableSchema getTableSchema() {
+ return tableSchema;
+ }
+
+ /**
+ * For the use of serialization.
+ * @return the table member of update operation
+ */
+ @JsonProperty
+ public String getTable() {
+ return tableSchema.name();
+ }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Select.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Select.java
index a8571c9..7c75710 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Select.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Select.java
@@ -1,89 +1,89 @@
-/*
- * 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.operations;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
-
-import org.onosproject.ovsdb.rfc.notation.Condition;
-import org.onosproject.ovsdb.rfc.schema.TableSchema;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * select operation.Refer to RFC 7047 Section 5.2.
- */
-public final class Select implements Operation {
-
- @JsonIgnore
- private final TableSchema tableSchema;
- private final String op;
- private final List<Condition> where;
- private final List<String> columns;
-
- /**
- * Constructs a Select object.
- * @param schema TableSchema entity
- * @param where the List of Condition entity
- * @param columns the List of column name
- */
- public Select(TableSchema schema, List<Condition> where, List<String> columns) {
- checkNotNull(schema, "TableSchema cannot be null");
- checkNotNull(where, "where cannot be null");
- checkNotNull(columns, "columns cannot be null");
- this.tableSchema = schema;
- this.op = Operations.SELECT.op();
- this.where = where;
- this.columns = columns;
- }
-
- /**
- * Returns the columns member of select operation.
- * @return the columns member of select operation
- */
- public List<String> getColumns() {
- return columns;
- }
-
- /**
- * Returns the where member of select operation.
- * @return the where member of select operation
- */
- public List<Condition> getWhere() {
- return where;
- }
-
- @Override
- public String getOp() {
- return op;
- }
-
- @Override
- public TableSchema getTableSchema() {
- return tableSchema;
- }
-
- /**
- * For the use of serialization.
- * @return the table member of update operation
- */
- @JsonProperty
- public String getTable() {
- return (tableSchema == null) ? null : tableSchema.name();
- }
-}
+/*
+ * 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.operations;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.List;
+
+import org.onosproject.ovsdb.rfc.notation.Condition;
+import org.onosproject.ovsdb.rfc.schema.TableSchema;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * select operation.Refer to RFC 7047 Section 5.2.
+ */
+public final class Select implements Operation {
+
+ @JsonIgnore
+ private final TableSchema tableSchema;
+ private final String op;
+ private final List<Condition> where;
+ private final List<String> columns;
+
+ /**
+ * Constructs a Select object.
+ * @param schema TableSchema entity
+ * @param where the List of Condition entity
+ * @param columns the List of column name
+ */
+ public Select(TableSchema schema, List<Condition> where, List<String> columns) {
+ checkNotNull(schema, "TableSchema cannot be null");
+ checkNotNull(where, "where cannot be null");
+ checkNotNull(columns, "columns cannot be null");
+ this.tableSchema = schema;
+ this.op = Operations.SELECT.op();
+ this.where = where;
+ this.columns = columns;
+ }
+
+ /**
+ * Returns the columns member of select operation.
+ * @return the columns member of select operation
+ */
+ public List<String> getColumns() {
+ return columns;
+ }
+
+ /**
+ * Returns the where member of select operation.
+ * @return the where member of select operation
+ */
+ public List<Condition> getWhere() {
+ return where;
+ }
+
+ @Override
+ public String getOp() {
+ return op;
+ }
+
+ @Override
+ public TableSchema getTableSchema() {
+ return tableSchema;
+ }
+
+ /**
+ * For the use of serialization.
+ * @return the table member of update operation
+ */
+ @JsonProperty
+ public String getTable() {
+ return tableSchema.name();
+ }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Update.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Update.java
index 839e834..8f21f9c 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Update.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/operations/Update.java
@@ -1,112 +1,111 @@
-/*
- * 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.operations;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import org.onosproject.ovsdb.rfc.notation.Column;
-import org.onosproject.ovsdb.rfc.notation.Condition;
-import org.onosproject.ovsdb.rfc.notation.Row;
-import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
-import org.onosproject.ovsdb.rfc.schema.TableSchema;
-import org.onosproject.ovsdb.rfc.utils.TransValueUtil;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.collect.Maps;
-
-/**
- * update operation.Refer to RFC 7047 Section 5.2.
- */
-public final class Update implements Operation {
-
- @JsonIgnore
- private final TableSchema tableSchema;
- private final String op;
- private final Map<String, Object> row;
- private final List<Condition> where;
-
- /**
- * Constructs a Update object.
- * @param schema TableSchema entity
- * @param row Row entity
- * @param where the List of Condition entity
- */
- public Update(TableSchema schema, Row row, List<Condition> where) {
- checkNotNull(schema, "TableSchema cannot be null");
- checkNotNull(row, "row cannot be null");
- checkNotNull(where, "where cannot be null");
- this.tableSchema = schema;
- this.op = Operations.UPDATE.op();
- this.row = Maps.newHashMap();
- this.where = where;
- generateOperationRow(row);
- }
-
- /**
- * Row entity convert into the row format of update operation. Refer to RFC
- * 7047 Section 5.2.
- * @param row Row entity
- */
- private void generateOperationRow(Row row) {
- Collection<Column> columns = row.getColumns();
- for (Column column : columns) {
- ColumnSchema columnSchema = column.schema();
- Object value = column.data();
- Object untypedValue = TransValueUtil.getFormatData(value);
- this.row.put(columnSchema.name(), untypedValue);
- }
- }
-
- /**
- * Returns the row member of update operation.
- * @return the row member of update operation
- */
- public Map<String, Object> getRow() {
- return row;
- }
-
- /**
- * Returns the where member of update operation.
- * @return the where member of update operation
- */
- public List<Condition> getWhere() {
- return where;
- }
-
- @Override
- public String getOp() {
- return op;
- }
-
- @Override
- public TableSchema getTableSchema() {
- return tableSchema;
- }
-
- /**
- * For the use of serialization.
- * @return the table member of update operation
- */
- @JsonProperty
- public String getTable() {
- return (tableSchema == null) ? null : tableSchema.name();
- }
-}
+/*
+ * 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.operations;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.Condition;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.schema.TableSchema;
+import org.onosproject.ovsdb.rfc.utils.TransValueUtil;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.collect.Maps;
+
+/**
+ * update operation.Refer to RFC 7047 Section 5.2.
+ */
+public final class Update implements Operation {
+
+ @JsonIgnore
+ private final TableSchema tableSchema;
+ private final String op;
+ private final Map<String, Object> row;
+ private final List<Condition> where;
+
+ /**
+ * Constructs a Update object.
+ * @param schema TableSchema entity
+ * @param row Row entity
+ * @param where the List of Condition entity
+ */
+ public Update(TableSchema schema, Row row, List<Condition> where) {
+ checkNotNull(schema, "TableSchema cannot be null");
+ checkNotNull(row, "row cannot be null");
+ checkNotNull(where, "where cannot be null");
+ this.tableSchema = schema;
+ this.op = Operations.UPDATE.op();
+ this.row = Maps.newHashMap();
+ this.where = where;
+ generateOperationRow(row);
+ }
+
+ /**
+ * Row entity convert into the row format of update operation. Refer to RFC
+ * 7047 Section 5.2.
+ * @param row Row entity
+ */
+ private void generateOperationRow(Row row) {
+ Collection<Column> columns = row.getColumns();
+ for (Column column : columns) {
+ String columnName = column.columnName();
+ Object value = column.data();
+ Object formatValue = TransValueUtil.getFormatData(value);
+ this.row.put(columnName, formatValue);
+ }
+ }
+
+ /**
+ * Returns the row member of update operation.
+ * @return the row member of update operation
+ */
+ public Map<String, Object> getRow() {
+ return row;
+ }
+
+ /**
+ * Returns the where member of update operation.
+ * @return the where member of update operation
+ */
+ public List<Condition> getWhere() {
+ return where;
+ }
+
+ @Override
+ public String getOp() {
+ return op;
+ }
+
+ @Override
+ public TableSchema getTableSchema() {
+ return tableSchema;
+ }
+
+ /**
+ * For the use of serialization.
+ * @return the table member of update operation
+ */
+ @JsonProperty
+ public String getTable() {
+ return tableSchema.name();
+ }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseTypeFactory.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseTypeFactory.java
index 0fd69a3..da60813 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseTypeFactory.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/BaseTypeFactory.java
@@ -17,8 +17,9 @@
import java.util.Set;
-import org.onosproject.ovsdb.rfc.error.TypedSchemaException;
+import org.onosproject.ovsdb.rfc.error.AbnormalJsonNodeException;
import org.onosproject.ovsdb.rfc.schema.type.UuidBaseType.RefType;
+import org.onosproject.ovsdb.rfc.utils.ObjectMapperUtil;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.collect.Sets;
@@ -29,27 +30,29 @@
public final class BaseTypeFactory {
/**
- * Constructs a BaseTypeFactory object.
- * This class should not be instantiated.
+ * Constructs a BaseTypeFactory object. This class should not be
+ * instantiated.
*/
private BaseTypeFactory() {
}
/**
* Create a BaseType from the JsonNode.
- * @param json the BaseType JsonNode
+ * @param baseTypeJson the BaseType JsonNode
* @param keyorval the key node or value node
* @return BaseType
*/
- public static BaseType getBaseTypeFromJson(JsonNode json, String keyorval) {
- if (json.isValueNode()) {
- String type = json.asText().trim();
+ public static BaseType getBaseTypeFromJson(JsonNode baseTypeJson, String keyorval) {
+ if (baseTypeJson.isValueNode()) {
+ String type = baseTypeJson.asText().trim();
return fromTypeStr(type);
} else {
- if (!json.has(keyorval)) {
- throw new TypedSchemaException("not a type");
+ if (!baseTypeJson.has(keyorval)) {
+ String message = "Abnormal BaseType JsonNode, it should contain 'key' or 'value' node but was not found"
+ + ObjectMapperUtil.convertToString(baseTypeJson);
+ throw new AbnormalJsonNodeException(message);
}
- return fromJsonNode(json.get(keyorval));
+ return fromJsonNode(baseTypeJson.get(keyorval));
}
}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java
index 0a81c0a..1af6974 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/schema/type/ColumnTypeFactory.java
@@ -15,7 +15,7 @@
*/
package org.onosproject.ovsdb.rfc.schema.type;
-import org.onosproject.ovsdb.rfc.error.TypedSchemaException;
+import org.onosproject.ovsdb.rfc.error.AbnormalJsonNodeException;
import org.onosproject.ovsdb.rfc.utils.ObjectMapperUtil;
import com.fasterxml.jackson.databind.JsonNode;
@@ -26,8 +26,8 @@
public final class ColumnTypeFactory {
/**
- * Constructs a ColumnTypeFactory object.
- * This class should not be instantiated.
+ * Constructs a ColumnTypeFactory object. This class should not be
+ * instantiated.
*/
private ColumnTypeFactory() {
}
@@ -54,20 +54,22 @@
}
/**
- * JsonNode like "flow_tables":{"type":{"key":{"maxInteger":254,"minInteger":0,"type":
+ * JsonNode like
+ * "flow_tables":{"type":{"key":{"maxInteger":254,"minInteger":0,"type":
* "integer"},"min":0,"value":{"type":"uuid","refTable":"Flow_Table"},"max":
* "unlimited"}}.
- * @param json the ColumnType JsonNode
+ * @param columnTypeJson the ColumnType JsonNode
* @return ColumnType
*/
- public static ColumnType getColumnTypeFromJson(JsonNode json) {
- if (!json.isObject() || !json.has(Type.VALUE.type())) {
- return createAtomicColumnType(json);
- } else if (!json.isValueNode() && json.has(Type.VALUE.type())) {
- return createKeyValuedColumnType(json);
+ public static ColumnType getColumnTypeFromJson(JsonNode columnTypeJson) {
+ if (!columnTypeJson.isObject() || !columnTypeJson.has(Type.VALUE.type())) {
+ return createAtomicColumnType(columnTypeJson);
+ } else if (!columnTypeJson.isValueNode() && columnTypeJson.has(Type.VALUE.type())) {
+ return createKeyValuedColumnType(columnTypeJson);
}
- throw new TypedSchemaException("could not find the right column type :"
- + ObjectMapperUtil.convertToString(json));
+ String message = "Abnormal ColumnType JsonNode, it should be AtomicColumnType or KeyValuedColumnType"
+ + ObjectMapperUtil.convertToString(columnTypeJson);
+ throw new AbnormalJsonNodeException(message);
}
/**
@@ -76,12 +78,11 @@
* @return AtomicColumnType entity
*/
private static AtomicColumnType createAtomicColumnType(JsonNode json) {
- BaseType baseType = BaseTypeFactory
- .getBaseTypeFromJson(json, Type.KEY.type());
+ BaseType baseType = BaseTypeFactory.getBaseTypeFromJson(json, Type.KEY.type());
int min = 1;
int max = 1;
JsonNode node = json.get("min");
- if (node != null) {
+ if (node != null && node.isNumber()) {
min = node.asInt();
}
node = json.get("max");
@@ -101,14 +102,12 @@
* @return KeyValuedColumnType entity
*/
private static KeyValuedColumnType createKeyValuedColumnType(JsonNode json) {
- BaseType keyType = BaseTypeFactory.getBaseTypeFromJson(json,
- Type.KEY.type());
- BaseType valueType = BaseTypeFactory
- .getBaseTypeFromJson(json, Type.VALUE.type());
+ BaseType keyType = BaseTypeFactory.getBaseTypeFromJson(json, Type.KEY.type());
+ BaseType valueType = BaseTypeFactory.getBaseTypeFromJson(json, Type.VALUE.type());
int min = 1;
int max = 1;
JsonNode node = json.get("min");
- if (node != null) {
+ if (node != null && node.isNumber()) {
min = node.asInt();
}
node = json.get("max");
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/AbstractOvsdbTableService.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/AbstractOvsdbTableService.java
index 0fd6214..a65ed12 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/AbstractOvsdbTableService.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/AbstractOvsdbTableService.java
@@ -1,327 +1,284 @@
-/*
- * 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.tableservice;
-
-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.error.ColumnSchemaNotFoundException;
-import org.onosproject.ovsdb.rfc.error.TableSchemaNotFoundException;
-import org.onosproject.ovsdb.rfc.error.TypedSchemaException;
-import org.onosproject.ovsdb.rfc.error.VersionMismatchException;
-import org.onosproject.ovsdb.rfc.notation.Column;
-import org.onosproject.ovsdb.rfc.notation.Row;
-import org.onosproject.ovsdb.rfc.notation.UUID;
-import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
-import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
-import org.onosproject.ovsdb.rfc.schema.TableSchema;
-import org.onosproject.ovsdb.rfc.table.OvsdbTable;
-import org.onosproject.ovsdb.rfc.table.VersionNum;
-import org.onosproject.ovsdb.rfc.utils.VersionUtil;
-
-/**
- * Representation of conversion between Ovsdb table and Row.
- */
-public abstract class AbstractOvsdbTableService implements OvsdbTableService {
-
- private final DatabaseSchema dbSchema;
- private final Row row;
- private final TableDescription tableDesc;
-
- /**
- * Constructs a AbstractOvsdbTableService object.
- * @param dbSchema DatabaseSchema entity
- * @param row Row entity
- * @param table table name
- * @param formVersion the initial version
- */
- public AbstractOvsdbTableService(DatabaseSchema dbSchema, Row row,
- OvsdbTable table, VersionNum formVersion) {
- checkNotNull(dbSchema, "database schema cannot be null");
- checkNotNull(row, "row cannot be null");
- checkNotNull(table, "table cannot be null");
- checkNotNull(formVersion, "the initial version cannot be null");
- this.dbSchema = dbSchema;
- this.row = row;
- TableDescription tableDesc = new TableDescription(table, formVersion);
- this.tableDesc = tableDesc;
- row.setTableSchema(dbSchema.getTableSchema(table.tableName()));
- }
-
- /**
- * Check whether the parameter of dbSchema is valid and check whether the
- * table is existent in Database Schema.
- */
- private boolean isValid() {
- if (dbSchema == null) {
- return false;
- }
- if (!dbSchema.name().equalsIgnoreCase(tableDesc.database())) {
- return false;
- }
- checkTableSchemaVersion();
- return true;
- }
-
- /**
- * Check the table version.
- */
- private void checkTableSchemaVersion() {
- String fromVersion = tableDesc.fromVersion();
- String untilVersion = tableDesc.untilVersion();
- String schemaVersion = dbSchema.version();
- checkVersion(schemaVersion, fromVersion, untilVersion);
- }
-
- /**
- * Check the column version.
- * @param columnDesc ColumnDescription entity
- */
- private void checkColumnSchemaVersion(ColumnDescription columnDesc) {
- String fromVersion = columnDesc.fromVersion();
- String untilVersion = columnDesc.untilVersion();
- String schemaVersion = dbSchema.version();
- checkVersion(schemaVersion, fromVersion, untilVersion);
- }
-
- /**
- * Check whether the DatabaseSchema version between the initial version and
- * the end of the version.
- * @param schemaVersion DatabaseSchema version
- * @param fromVersion The initial version
- * @param untilVersion The end of the version
- * @throws VersionMismatchException this is a version mismatch exception
- */
- private void checkVersion(String schemaVersion, String fromVersion,
- String untilVersion) {
- VersionUtil.versionMatch(fromVersion);
- VersionUtil.versionMatch(untilVersion);
- if (!fromVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) {
- if (VersionUtil.versionCompare(schemaVersion, fromVersion) < 0) {
- String message = VersionMismatchException
- .createFromMessage(schemaVersion, fromVersion);
- throw new VersionMismatchException(message);
- }
- }
- if (!untilVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) {
- if (VersionUtil.versionCompare(untilVersion, schemaVersion) < 0) {
- String message = VersionMismatchException
- .createToMessage(schemaVersion, untilVersion);
- throw new VersionMismatchException(message);
- }
- }
- }
-
- /**
- * Returns TableSchema from dbSchema by table name.
- * @return TableSchema
- */
- private TableSchema getTableSchema() {
- String tableName = tableDesc.name();
- return dbSchema.getTableSchema(tableName);
- }
-
- /**
- * Returns ColumnSchema from TableSchema by column name.
- * @param tableSchema TableSchema entity
- * @param columnName column name
- * @return ColumnSchema
- */
- private ColumnSchema getColumnSchema(TableSchema tableSchema,
- String columnName) {
- return tableSchema.getColumnSchema(columnName);
- }
-
- @Override
- public Column getColumnHandler(ColumnDescription columnDesc) {
- if (!isValid()) {
- return null;
- }
- String columnName = columnDesc.name();
- checkColumnSchemaVersion(columnDesc);
- if (columnName == null) {
- throw new TypedSchemaException("Error processing GetColumn : "
- + tableDesc.name() + "." + columnDesc.method());
- }
- TableSchema tableSchema = getTableSchema();
- if (tableSchema == null) {
- String message = TableSchemaNotFoundException
- .createMessage(tableDesc.name(), dbSchema.name());
- throw new TableSchemaNotFoundException(message);
- }
- ColumnSchema columnSchema = getColumnSchema(tableSchema, columnName);
- if (columnSchema == null) {
- String message = ColumnSchemaNotFoundException
- .createMessage(columnName, tableSchema.name());
- throw new ColumnSchemaNotFoundException(message);
- }
- if (row == null) {
- return new Column(columnSchema, null);
- }
- return row.getColumn(columnSchema);
- }
-
- @Override
- public Object getDataHandler(ColumnDescription columnDesc) {
- if (!isValid()) {
- return null;
- }
- String columnName = columnDesc.name();
- checkColumnSchemaVersion(columnDesc);
- if (columnName == null) {
- throw new TypedSchemaException("Error processing GetColumn : "
- + tableDesc.name() + "." + columnDesc.method());
- }
- TableSchema tableSchema = getTableSchema();
- if (tableSchema == null) {
- String message = TableSchemaNotFoundException
- .createMessage(tableDesc.name(), dbSchema.name());
- throw new TableSchemaNotFoundException(message);
- }
- ColumnSchema columnSchema = getColumnSchema(tableSchema, columnName);
- if (columnSchema == null) {
- String message = ColumnSchemaNotFoundException
- .createMessage(columnName, tableSchema.name());
- throw new ColumnSchemaNotFoundException(message);
- }
- if (row == null || row.getColumn(columnSchema) == null) {
- return null;
- }
- return row.getColumn(columnSchema).data();
- }
-
- @Override
- public void setDataHandler(ColumnDescription columnDesc, Object obj) {
- if (!isValid()) {
- return;
- }
- String columnName = columnDesc.name();
- checkColumnSchemaVersion(columnDesc);
- if (columnName == null) {
- throw new TypedSchemaException("Unable to locate Column Name for "
- + tableDesc.name() + "." + columnDesc.method());
- }
- TableSchema tableSchema = getTableSchema();
- ColumnSchema columnSchema = getColumnSchema(tableSchema, columnName);
- Column column = new Column(columnSchema, obj);
- row.addColumn(columnName, column);
- }
-
- @Override
- public Object getTbSchema() {
- if (!isValid()) {
- return null;
- }
- if (dbSchema == null) {
- return null;
- }
- return getTableSchema();
- }
-
- @Override
- public UUID getUuid() {
- if (!isValid()) {
- return null;
- }
- ColumnDescription columnDesc = new ColumnDescription("_uuid",
- "getTbUuid");
- return (UUID) getDataHandler(columnDesc);
- }
-
- @Override
- public Column getUuidColumn() {
- if (!isValid()) {
- return null;
- }
- ColumnDescription columnDesc = new ColumnDescription("_uuid",
- "getTbUuidColumn");
- return (Column) getColumnHandler(columnDesc);
- }
-
- @Override
- public UUID getVersion() {
- if (!isValid()) {
- return null;
- }
- ColumnDescription columnDesc = new ColumnDescription("_version",
- "getTbVersion");
- return (UUID) getDataHandler(columnDesc);
- }
-
- @Override
- public Column getVersionColumn() {
- if (!isValid()) {
- return null;
- }
- ColumnDescription columnDesc = new ColumnDescription("_version",
- "getTbVersionColumn");
- return (Column) getColumnHandler(columnDesc);
- }
-
- /**
- * Get DatabaseSchema entity.
- * @return DatabaseSchema entity
- */
- public DatabaseSchema dbSchema() {
- return dbSchema;
- }
-
- /**
- * Get Row entity.
- * @return Row entity
- */
- public Row getRow() {
- if (!isValid()) {
- return null;
- }
- return this.row;
- }
-
- /**
- * Get TableDescription entity.
- * @return TableDescription entity
- */
- public TableDescription tableDesc() {
- return tableDesc;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(row);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj instanceof AbstractOvsdbTableService) {
- final AbstractOvsdbTableService other = (AbstractOvsdbTableService) obj;
- return Objects.equals(this.row, other.row);
- }
- return false;
- }
-
- @Override
- public String toString() {
- TableSchema schema = (TableSchema) getTbSchema();
- String tableName = schema.name();
- return toStringHelper(this).add("tableName", tableName).add("row", row)
- .toString();
- }
-}
+/*
+ * 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.tableservice;
+
+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.error.ColumnSchemaNotFoundException;
+import org.onosproject.ovsdb.rfc.error.TableSchemaNotFoundException;
+import org.onosproject.ovsdb.rfc.error.VersionMismatchException;
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.notation.UUID;
+import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
+import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
+import org.onosproject.ovsdb.rfc.schema.TableSchema;
+import org.onosproject.ovsdb.rfc.table.OvsdbTable;
+import org.onosproject.ovsdb.rfc.table.VersionNum;
+import org.onosproject.ovsdb.rfc.utils.VersionUtil;
+
+/**
+ * Representation of conversion between Ovsdb table and Row.
+ */
+public abstract class AbstractOvsdbTableService implements OvsdbTableService {
+
+ private final DatabaseSchema dbSchema;
+ private final Row row;
+ private final TableDescription tableDesc;
+
+ /**
+ * Constructs a AbstractOvsdbTableService object.
+ * @param dbSchema DatabaseSchema entity
+ * @param row Row entity
+ * @param table table name
+ * @param formVersion the initial version
+ */
+ public AbstractOvsdbTableService(DatabaseSchema dbSchema, Row row, OvsdbTable table,
+ VersionNum formVersion) {
+ checkNotNull(dbSchema, "database schema cannot be null");
+ checkNotNull(row, "row cannot be null");
+ checkNotNull(table, "table cannot be null");
+ checkNotNull(formVersion, "the initial version cannot be null");
+ this.dbSchema = dbSchema;
+ row.setTableName(table.tableName());
+ this.row = row;
+ TableDescription tableDesc = new TableDescription(table, formVersion);
+ this.tableDesc = tableDesc;
+ }
+
+ /**
+ * Check whether the parameter of dbSchema is valid and check whether the
+ * table is existent in Database Schema.
+ */
+ private boolean isValid() {
+ if (dbSchema == null) {
+ return false;
+ }
+ if (!dbSchema.name().equalsIgnoreCase(tableDesc.database())) {
+ return false;
+ }
+ checkTableSchemaVersion();
+ return true;
+ }
+
+ /**
+ * Check the table version.
+ */
+ private void checkTableSchemaVersion() {
+ String fromVersion = tableDesc.fromVersion();
+ String untilVersion = tableDesc.untilVersion();
+ String schemaVersion = dbSchema.version();
+ checkVersion(schemaVersion, fromVersion, untilVersion);
+ }
+
+ /**
+ * Check the column version.
+ * @param columnDesc ColumnDescription entity
+ */
+ private void checkColumnSchemaVersion(ColumnDescription columnDesc) {
+ String fromVersion = columnDesc.fromVersion();
+ String untilVersion = columnDesc.untilVersion();
+ String schemaVersion = dbSchema.version();
+ checkVersion(schemaVersion, fromVersion, untilVersion);
+ }
+
+ /**
+ * Check whether the DatabaseSchema version between the initial version and
+ * the end of the version.
+ * @param schemaVersion DatabaseSchema version
+ * @param fromVersion The initial version
+ * @param untilVersion The end of the version
+ * @throws VersionMismatchException this is a version mismatch exception
+ */
+ private void checkVersion(String schemaVersion, String fromVersion, String untilVersion) {
+ VersionUtil.versionMatch(fromVersion);
+ VersionUtil.versionMatch(untilVersion);
+ if (!fromVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) {
+ if (VersionUtil.versionCompare(schemaVersion, fromVersion) < 0) {
+ String message = VersionMismatchException.createFromMessage(schemaVersion,
+ fromVersion);
+ throw new VersionMismatchException(message);
+ }
+ }
+ if (!untilVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) {
+ if (VersionUtil.versionCompare(untilVersion, schemaVersion) < 0) {
+ String message = VersionMismatchException.createToMessage(schemaVersion,
+ untilVersion);
+ throw new VersionMismatchException(message);
+ }
+ }
+ }
+
+ /**
+ * Returns TableSchema from dbSchema by table name.
+ * @return TableSchema
+ */
+ private TableSchema getTableSchema() {
+ String tableName = tableDesc.name();
+ return dbSchema.getTableSchema(tableName);
+ }
+
+ /**
+ * Returns ColumnSchema from TableSchema by column name.
+ * @param columnName column name
+ * @return ColumnSchema
+ */
+ private ColumnSchema getColumnSchema(String columnName) {
+ TableSchema tableSchema = getTableSchema();
+ if (tableSchema == null) {
+ String message = TableSchemaNotFoundException.createMessage(tableDesc.name(),
+ dbSchema.name());
+ throw new TableSchemaNotFoundException(message);
+ }
+ ColumnSchema columnSchema = tableSchema.getColumnSchema(columnName);
+ if (columnSchema == null) {
+ String message = ColumnSchemaNotFoundException.createMessage(columnName,
+ tableSchema.name());
+ throw new ColumnSchemaNotFoundException(message);
+ }
+ return columnSchema;
+ }
+
+ @Override
+ public Column getColumnHandler(ColumnDescription columnDesc) {
+ if (!isValid()) {
+ return null;
+ }
+ String columnName = columnDesc.name();
+ checkColumnSchemaVersion(columnDesc);
+ ColumnSchema columnSchema = getColumnSchema(columnName);
+ if (row == null) {
+ return null;
+ }
+ return row.getColumn(columnSchema.name());
+ }
+
+ @Override
+ public Object getDataHandler(ColumnDescription columnDesc) {
+ if (!isValid()) {
+ return null;
+ }
+ String columnName = columnDesc.name();
+ checkColumnSchemaVersion(columnDesc);
+ ColumnSchema columnSchema = getColumnSchema(columnName);
+ if (row == null || row.getColumn(columnSchema.name()) == null) {
+ return null;
+ }
+ return row.getColumn(columnSchema.name()).data();
+ }
+
+ @Override
+ public void setDataHandler(ColumnDescription columnDesc, Object obj) {
+ if (!isValid()) {
+ return;
+ }
+ String columnName = columnDesc.name();
+ checkColumnSchemaVersion(columnDesc);
+ ColumnSchema columnSchema = getColumnSchema(columnName);
+ Column column = new Column(columnSchema.name(), obj);
+ row.addColumn(columnName, column);
+ }
+
+ @Override
+ public UUID getTableUuid() {
+ if (!isValid()) {
+ return null;
+ }
+ ColumnDescription columnDesc = new ColumnDescription("_uuid", "getTableUuid");
+ return (UUID) getDataHandler(columnDesc);
+ }
+
+ @Override
+ public Column getTableUuidColumn() {
+ if (!isValid()) {
+ return null;
+ }
+ ColumnDescription columnDesc = new ColumnDescription("_uuid", "getTableUuidColumn");
+ return (Column) getColumnHandler(columnDesc);
+ }
+
+ @Override
+ public UUID getTableVersion() {
+ if (!isValid()) {
+ return null;
+ }
+ ColumnDescription columnDesc = new ColumnDescription("_version", "getTableVersion");
+ return (UUID) getDataHandler(columnDesc);
+ }
+
+ @Override
+ public Column getTableVersionColumn() {
+ if (!isValid()) {
+ return null;
+ }
+ ColumnDescription columnDesc = new ColumnDescription("_version", "getTableVersionColumn");
+ return (Column) getColumnHandler(columnDesc);
+ }
+
+ /**
+ * Get DatabaseSchema entity.
+ * @return DatabaseSchema entity
+ */
+ public DatabaseSchema dbSchema() {
+ return dbSchema;
+ }
+
+ /**
+ * Get Row entity.
+ * @return Row entity
+ */
+ public Row getRow() {
+ if (!isValid()) {
+ return null;
+ }
+ return this.row;
+ }
+
+ /**
+ * Get TableDescription entity.
+ * @return TableDescription entity
+ */
+ public TableDescription tableDesc() {
+ return tableDesc;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(row);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof AbstractOvsdbTableService) {
+ final AbstractOvsdbTableService other = (AbstractOvsdbTableService) obj;
+ return Objects.equals(this.row, other.row);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ TableSchema schema = (TableSchema) getTableSchema();
+ String tableName = schema.name();
+ return toStringHelper(this).add("tableName", tableName).add("row", row).toString();
+ }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/OvsdbTableService.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/OvsdbTableService.java
index 3af4c22..1ce2870 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/OvsdbTableService.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/tableservice/OvsdbTableService.java
@@ -1,76 +1,70 @@
-/*
- * 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.tableservice;
-
-import org.onosproject.ovsdb.rfc.notation.Column;
-import org.onosproject.ovsdb.rfc.notation.UUID;
-
-/**
- * Representation of conversion between Ovsdb table and Row.
- */
-public interface OvsdbTableService {
-
- /**
- * Get Column from row.
- * @param columndesc Column description
- * @return Column
- */
- public Column getColumnHandler(ColumnDescription columndesc);
-
- /**
- * Get Data from row.
- * @param columndesc Column description
- * @return Object column data
- */
- public Object getDataHandler(ColumnDescription columndesc);
-
- /**
- * Set column data of row.
- * @param columndesc Column description
- * @param obj column data
- */
- public void setDataHandler(ColumnDescription columndesc, Object obj);
-
- /**
- * Returns the TableSchema from row.
- * @return Object TableSchema
- */
- public Object getTbSchema();
-
- /**
- * Returns UUID which column name is _uuid.
- * @return UUID
- */
- public UUID getUuid();
-
- /**
- * Returns UUID Column which column name is _uuid.
- * @return UUID Column
- */
- public Column getUuidColumn();
-
- /**
- * Returns UUID which column name is _version.
- * @return UUID
- */
- public UUID getVersion();
-
- /**
- * Returns UUID Column which column name is _version.
- * @return UUID Column
- */
- public Column getVersionColumn();
-}
+/*
+ * 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.tableservice;
+
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.UUID;
+
+/**
+ * Representation of conversion between Ovsdb table and Row.
+ */
+public interface OvsdbTableService {
+
+ /**
+ * Get Column from row.
+ * @param columndesc Column description
+ * @return Column
+ */
+ public Column getColumnHandler(ColumnDescription columndesc);
+
+ /**
+ * Get Data from row.
+ * @param columndesc Column description
+ * @return Object column data
+ */
+ public Object getDataHandler(ColumnDescription columndesc);
+
+ /**
+ * Set column data of row.
+ * @param columndesc Column description
+ * @param obj column data
+ */
+ public void setDataHandler(ColumnDescription columndesc, Object obj);
+
+ /**
+ * Returns UUID which column name is _uuid.
+ * @return UUID
+ */
+ public UUID getTableUuid();
+
+ /**
+ * Returns UUID Column which column name is _uuid.
+ * @return UUID Column
+ */
+ public Column getTableUuidColumn();
+
+ /**
+ * Returns UUID which column name is _version.
+ * @return UUID
+ */
+ public UUID getTableVersion();
+
+ /**
+ * Returns UUID Column which column name is _version.
+ * @return UUID Column
+ */
+ public Column getTableVersionColumn();
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java
index 8ccecbe..7283d8e 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/FromJsonUtil.java
@@ -1,345 +1,320 @@
-/*
- * 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.utils;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.onosproject.ovsdb.rfc.error.AbnormalSchemaException;
-import org.onosproject.ovsdb.rfc.error.JsonParsingException;
-import org.onosproject.ovsdb.rfc.error.UnknownResultException;
-import org.onosproject.ovsdb.rfc.jsonrpc.Callback;
-import org.onosproject.ovsdb.rfc.jsonrpc.JsonRpcResponse;
-import org.onosproject.ovsdb.rfc.message.OperationResult;
-import org.onosproject.ovsdb.rfc.message.RowUpdate;
-import org.onosproject.ovsdb.rfc.message.TableUpdate;
-import org.onosproject.ovsdb.rfc.message.TableUpdates;
-import org.onosproject.ovsdb.rfc.message.UpdateNotification;
-import org.onosproject.ovsdb.rfc.notation.Column;
-import org.onosproject.ovsdb.rfc.notation.Row;
-import org.onosproject.ovsdb.rfc.notation.UUID;
-import org.onosproject.ovsdb.rfc.operations.Operation;
-import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
-import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
-import org.onosproject.ovsdb.rfc.schema.TableSchema;
-import org.onosproject.ovsdb.rfc.schema.type.ColumnTypeFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * JsonNode utility class. convert JsonNode into Object.
- */
-public final class FromJsonUtil {
-
- private static final Logger log = LoggerFactory
- .getLogger(FromJsonUtil.class);
-
- /**
- * Constructs a FromJsonUtil object. Utility classes should not have a
- * public or default constructor, otherwise IDE will compile unsuccessfully. This
- * class should not be instantiated.
- */
- private FromJsonUtil() {
- }
-
- /**
- * convert JsonNode into DatabaseSchema.
- * @param dbName database name
- * @param json the JsonNode of get_schema result
- * @return DatabaseSchema
- * @throws JsonParsingException this is a JsonNode parse exception
- */
- public static DatabaseSchema jsonNodeToDbSchema(String dbName, JsonNode json) {
- if (!json.isObject() || !json.has("tables")) {
- throw new JsonParsingException(
- "bad DatabaseSchema root, expected \"tables\" as child but was not found");
- }
- if (!json.isObject() || !json.has("version")) {
- throw new JsonParsingException(
- "bad DatabaseSchema root, expected \"version\" as child but was not found");
- }
-
- String dbVersion = json.get("version").asText();
-
- Map<String, TableSchema> tables = new HashMap<>();
- for (Iterator<Map.Entry<String, JsonNode>> iter = json.get("tables")
- .fields(); iter.hasNext();) {
- Map.Entry<String, JsonNode> table = iter.next();
- tables.put(table.getKey(),
- jsonNodeToTableSchema(table.getKey(), table.getValue()));
- }
-
- return new DatabaseSchema(dbName, dbVersion, tables);
- }
-
- /**
- * convert JsonNode into TableSchema.
- * @param tableName table name
- * @param json table JsonNode
- * @return TableSchema
- * @throws AbnormalSchemaException this is an abnormal schema exception
- */
- private static TableSchema jsonNodeToTableSchema(String tableName,
- JsonNode json) {
-
- if (!json.isObject() || !json.has("columns")) {
- throw new AbnormalSchemaException(
- "bad tableschema root, expected \"columns\" as child");
- }
-
- Map<String, ColumnSchema> columns = new HashMap<>();
- for (Iterator<Map.Entry<String, JsonNode>> iter = json.get("columns")
- .fields(); iter.hasNext();) {
- Map.Entry<String, JsonNode> column = iter.next();
- columns.put(column.getKey(),
- jsonNodeToColumnSchema(column.getKey(),
- column.getValue()));
- }
-
- return new TableSchema(tableName, columns);
- }
-
- /**
- * convert JsonNode into ColumnSchema.
- * @param name column name
- * @param json JsonNode
- * @return ColumnSchema
- * @throws AbnormalSchemaException this is an abnormal schema exception
- */
- private static ColumnSchema jsonNodeToColumnSchema(String name,
- JsonNode json) {
- if (!json.isObject() || !json.has("type")) {
- throw new AbnormalSchemaException(
- "bad column schema root, expected \"type\" as child");
- }
-
- return new ColumnSchema(name,
- ColumnTypeFactory.getColumnTypeFromJson(json
- .get("type")));
- }
-
- /**
- * convert JsonNode into the returnType of methods in OvsdbRPC class.
- * @param resultJsonNode the result JsonNode
- * @param methodName the method name of methods in OvsdbRPC class
- * @param objectMapper ObjectMapper entity
- * @return Object
- * @throws UnknownResultException this is an unknown result exception
- */
- private static Object convertResultType(JsonNode resultJsonNode,
- String methodName,
- ObjectMapper objectMapper) {
- switch (methodName) {
- case "getSchema":
- case "monitor":
- return resultJsonNode;
- case "echo":
- case "listDbs":
- return objectMapper
- .convertValue(resultJsonNode, objectMapper.getTypeFactory()
- .constructParametricType(List.class, String.class));
- case "transact":
- return objectMapper
- .convertValue(resultJsonNode,
- objectMapper
- .getTypeFactory()
- .constructParametricType(List.class,
- JsonNode.class));
- default:
- throw new UnknownResultException("Don't know how to handle this");
- }
- }
-
- /**
- * convert JsonNode into the returnType of methods in OvsdbRPC class.
- * @param jsonNode the result JsonNode
- * @param methodName the method name of methods in OvsdbRPC class
- * @return Object
- */
- public static Object jsonResultParser(JsonNode jsonNode, String methodName) {
- ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper();
- JsonNode error = jsonNode.get("error");
- if (error != null && !error.isNull()) {
- log.error("Error : {}", error.toString());
- }
- JsonNode resultJsonNode = jsonNode.get("result");
- Object result = convertResultType(resultJsonNode, methodName,
- objectMapper);
- return result;
- }
-
- /**
- * When monitor the ovsdb tables, if a table update, ovs send update
- * notification, then call callback function.
- * @param jsonNode the result JsonNode
- * @param callback the callback function
- * @throws UnknownResultException this is an unknown result exception
- */
- public static void jsonCallbackRequestParser(JsonNode jsonNode,
- Callback callback) {
- ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper();
- JsonNode params = jsonNode.get("params");
- Object param = null;
- String methodName = jsonNode.get("method").asText();
- switch (methodName) {
- case "update":
- param = objectMapper.convertValue(params, UpdateNotification.class);
- callback.update((UpdateNotification) param);
- break;
- default:
- throw new UnknownResultException("Cannot handle this method: "
- + methodName);
- }
- }
-
- /**
- * Ovs send echo request to keep the heart, need we return echo result.
- * @param jsonNode the result JsonNode
- * @return JsonRpcResponse String
- */
- public static String getEchoRequestStr(JsonNode jsonNode) {
- ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper();
- String str = null;
- if (jsonNode.get("method").asText().equals("echo")) {
- JsonRpcResponse response = new JsonRpcResponse(jsonNode.get("id")
- .asText());
- try {
- str = objectMapper.writeValueAsString(response);
- } catch (JsonProcessingException e) {
- log.error("JsonProcessingException while converting JsonNode into string ", e);
- }
- }
- return str;
- }
-
- /**
- * Convert the List of Operation result into List of OperationResult .
- * @param input the List of JsonNode
- * @param operations the List of Operation
- * @return the List of OperationResult
- */
- public static List<OperationResult> jsonNodeToOperationResult(List<JsonNode> input,
- List<Operation> operations) {
- ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(false);
- List<OperationResult> operationResults = new ArrayList<OperationResult>();
- for (int i = 0; i < input.size(); i++) {
- JsonNode jsonNode = input.get(i);
- Operation operation = operations.get(i);
- if (jsonNode != null && jsonNode.size() > 0) {
- if (i >= operations.size() || operation.getOp() != "select") {
- OperationResult or = objectMapper.convertValue(jsonNode,
- OperationResult.class);
- operationResults.add(or);
- } else {
- List<Row> rows = createRows(operation.getTableSchema(), jsonNode);
- OperationResult or = new OperationResult(rows);
- operationResults.add(or);
- }
- }
- }
- return operationResults;
- }
-
- /**
- * Convert Operation JsonNode into Rows.
- * @param tableSchema TableSchema entity
- * @param rowsNode JsonNode
- * @return ArrayList<Row> the List of Row
- */
- private static ArrayList<Row> createRows(TableSchema tableSchema,
- JsonNode rowsNode) {
- ArrayList<Row> rows = Lists.newArrayList();
- for (JsonNode rowNode : rowsNode.get("rows")) {
- rows.add(createRow(tableSchema, rowNode));
- }
- return rows;
- }
-
- /**
- * convert the params of Update Notification into TableUpdates.
- * @param updatesJson the params of Update Notification
- * @param dbSchema DatabaseSchema entity
- * @return TableUpdates
- */
- public static TableUpdates jsonNodeToTableUpdates(JsonNode updatesJson,
- DatabaseSchema dbSchema) {
- Map<String, TableUpdate> tableUpdateMap = Maps.newHashMap();
- for (Iterator<Map.Entry<String, JsonNode>> itr = updatesJson.fields(); itr
- .hasNext();) {
- Map.Entry<String, JsonNode> entry = itr.next();
- TableSchema tableSchema = dbSchema.getTableSchema(entry.getKey());
- TableUpdate tableUpdate = jsonNodeToTableUpdate(tableSchema,
- entry.getValue());
- tableUpdateMap.put(entry.getKey(), tableUpdate);
- }
- return TableUpdates.tableUpdates(tableUpdateMap);
- }
-
- /**
- * convert the params of Update Notification into TableUpdate.
- * @param tableSchema TableSchema entity
- * @param value the table-update in params of Update Notification
- * @return TableUpdate
- */
- public static TableUpdate jsonNodeToTableUpdate(TableSchema tableSchema,
- JsonNode value) {
- Map<UUID, RowUpdate> rows = Maps.newHashMap();
- Iterator<Entry<String, JsonNode>> fields = value.fields();
- while (fields.hasNext()) {
- Map.Entry<String, JsonNode> idOldNew = fields.next();
- String uuidStr = idOldNew.getKey();
- UUID uuid = UUID.uuid(uuidStr);
- JsonNode newR = idOldNew.getValue().get("new");
- JsonNode oldR = idOldNew.getValue().get("old");
- Row newRow = newR != null ? createRow(tableSchema, newR) : null;
- Row oldRow = oldR != null ? createRow(tableSchema, oldR) : null;
- RowUpdate rowUpdate = new RowUpdate(uuid, oldRow, newRow);
- rows.put(uuid, rowUpdate);
- }
- return TableUpdate.tableUpdate(rows);
- }
-
- /**
- * Convert Operation JsonNode into Row.
- * @param tableSchema TableSchema entity
- * @param rowNode JsonNode
- * @return Row
- */
- private static Row createRow(TableSchema tableSchema, JsonNode rowNode) {
- List<Column> columns = Lists.newArrayList();
- for (Iterator<Map.Entry<String, JsonNode>> iter = rowNode.fields(); iter
- .hasNext();) {
- Map.Entry<String, JsonNode> next = iter.next();
- ColumnSchema schema = tableSchema.getColumnSchema(next.getKey());
- if (schema != null) {
- Object o = TransValueUtil.getValueFromJson(next.getValue(), schema.type());
- columns.add(new Column(schema, o));
- }
- }
- return new Row(tableSchema, columns);
- }
-
-}
+/*
+ * 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.utils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.onosproject.ovsdb.rfc.error.AbnormalJsonNodeException;
+import org.onosproject.ovsdb.rfc.error.UnsupportedException;
+import org.onosproject.ovsdb.rfc.jsonrpc.Callback;
+import org.onosproject.ovsdb.rfc.jsonrpc.JsonRpcResponse;
+import org.onosproject.ovsdb.rfc.message.OperationResult;
+import org.onosproject.ovsdb.rfc.message.RowUpdate;
+import org.onosproject.ovsdb.rfc.message.TableUpdate;
+import org.onosproject.ovsdb.rfc.message.TableUpdates;
+import org.onosproject.ovsdb.rfc.message.UpdateNotification;
+import org.onosproject.ovsdb.rfc.notation.Column;
+import org.onosproject.ovsdb.rfc.notation.Row;
+import org.onosproject.ovsdb.rfc.notation.UUID;
+import org.onosproject.ovsdb.rfc.operations.Operation;
+import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
+import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
+import org.onosproject.ovsdb.rfc.schema.TableSchema;
+import org.onosproject.ovsdb.rfc.schema.type.ColumnTypeFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+/**
+ * JsonNode utility class. convert JsonNode into Object.
+ */
+public final class FromJsonUtil {
+
+ private static final Logger log = LoggerFactory.getLogger(FromJsonUtil.class);
+
+ /**
+ * Constructs a FromJsonUtil object. Utility classes should not have a
+ * public or default constructor, otherwise IDE will compile unsuccessfully.
+ * This class should not be instantiated.
+ */
+ private FromJsonUtil() {
+ }
+
+ /**
+ * Verify whether the jsonNode is normal.
+ * @param jsonNode JsonNode
+ * @param nodeStr the node name of JsonNode
+ */
+ private static void validateJsonNode(JsonNode jsonNode, String nodeStr) {
+ if (!jsonNode.isObject() || !jsonNode.has(nodeStr)) {
+ String message = "Abnormal DatabaseSchema JsonNode, it should contain " + nodeStr
+ + " node but was not found";
+ throw new AbnormalJsonNodeException(message);
+ }
+ }
+
+ /**
+ * convert JsonNode into DatabaseSchema.
+ * @param dbName database name
+ * @param dbJson the JsonNode of get_schema result
+ * @return DatabaseSchema
+ * @throws AbnormalJsonNodeException this is an abnormal JsonNode exception
+ */
+ public static DatabaseSchema jsonNodeToDbSchema(String dbName, JsonNode dbJson) {
+ validateJsonNode(dbJson, "tables");
+ validateJsonNode(dbJson, "version");
+ String dbVersion = dbJson.get("version").asText();
+ Map<String, TableSchema> tables = new HashMap<>();
+ Iterator<Map.Entry<String, JsonNode>> tablesIter = dbJson.get("tables").fields();
+ while (tablesIter.hasNext()) {
+ Map.Entry<String, JsonNode> table = tablesIter.next();
+ tables.put(table.getKey(), jsonNodeToTableSchema(table.getKey(), table.getValue()));
+ }
+ return new DatabaseSchema(dbName, dbVersion, tables);
+ }
+
+ /**
+ * convert JsonNode into TableSchema.
+ * @param tableName table name
+ * @param tableJson table JsonNode
+ * @return TableSchema
+ * @throws AbnormalJsonNodeException this is an abnormal JsonNode exception
+ */
+ private static TableSchema jsonNodeToTableSchema(String tableName, JsonNode tableJson) {
+ validateJsonNode(tableJson, "columns");
+ Map<String, ColumnSchema> columns = new HashMap<>();
+ Iterator<Map.Entry<String, JsonNode>> columnsIter = tableJson.get("columns").fields();
+ while (columnsIter.hasNext()) {
+ Map.Entry<String, JsonNode> column = columnsIter.next();
+ columns.put(column.getKey(), jsonNodeToColumnSchema(column.getKey(), column.getValue()));
+ }
+ return new TableSchema(tableName, columns);
+ }
+
+ /**
+ * convert JsonNode into ColumnSchema.
+ * @param name column name
+ * @param columnJson column JsonNode
+ * @return ColumnSchema
+ * @throws AbnormalJsonNodeException this is an abnormal JsonNode exception
+ */
+ private static ColumnSchema jsonNodeToColumnSchema(String name, JsonNode columnJson) {
+ validateJsonNode(columnJson, "type");
+ return new ColumnSchema(name, ColumnTypeFactory.getColumnTypeFromJson(columnJson
+ .get("type")));
+ }
+
+ /**
+ * convert JsonNode into the returnType of methods in OvsdbRPC class.
+ * @param resultJsonNode the result JsonNode
+ * @param methodName the method name of methods in OvsdbRPC class
+ * @param objectMapper ObjectMapper entity
+ * @return Object
+ * @throws UnsupportedException this is an unsupported exception
+ */
+ private static Object convertResultType(JsonNode resultJsonNode, String methodName,
+ ObjectMapper objectMapper) {
+ switch (methodName) {
+ case "getSchema":
+ case "monitor":
+ return resultJsonNode;
+ case "echo":
+ case "listDbs":
+ return objectMapper.convertValue(resultJsonNode, objectMapper.getTypeFactory()
+ .constructParametricType(List.class, String.class));
+ case "transact":
+ return objectMapper.convertValue(resultJsonNode, objectMapper.getTypeFactory()
+ .constructParametricType(List.class, JsonNode.class));
+ default:
+ throw new UnsupportedException("does not support this rpc method" + methodName);
+ }
+ }
+
+ /**
+ * convert JsonNode into the returnType of methods in OvsdbRPC class.
+ * @param jsonNode the result JsonNode
+ * @param methodName the method name of methods in OvsdbRPC class
+ * @return Object
+ */
+ public static Object jsonResultParser(JsonNode jsonNode, String methodName) {
+ ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper();
+ JsonNode error = jsonNode.get("error");
+ if (error != null && !error.isNull()) {
+ log.error("jsonRpcResponse error : {}", error.toString());
+ }
+ JsonNode resultJsonNode = jsonNode.get("result");
+ Object result = convertResultType(resultJsonNode, methodName, objectMapper);
+ return result;
+ }
+
+ /**
+ * When monitor the ovsdb tables, if a table update, ovs send update
+ * notification, then call callback function.
+ * @param jsonNode the result JsonNode
+ * @param callback the callback function
+ * @throws UnsupportedException this is an unsupported exception
+ */
+ public static void jsonCallbackRequestParser(JsonNode jsonNode, Callback callback) {
+ ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper();
+ JsonNode params = jsonNode.get("params");
+ Object param = null;
+ String methodName = jsonNode.get("method").asText();
+ switch (methodName) {
+ case "update":
+ param = objectMapper.convertValue(params, UpdateNotification.class);
+ callback.update((UpdateNotification) param);
+ break;
+ default:
+ throw new UnsupportedException("does not support this callback method: " + methodName);
+ }
+ }
+
+ /**
+ * Ovs send echo request to keep the heart, need we return echo result.
+ * @param jsonNode the result JsonNode
+ * @return JsonRpcResponse String
+ */
+ public static String getEchoRequestStr(JsonNode jsonNode) {
+ ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper();
+ String str = null;
+ if (jsonNode.get("method").asText().equals("echo")) {
+ JsonRpcResponse response = new JsonRpcResponse(jsonNode.get("id").asText());
+ try {
+ str = objectMapper.writeValueAsString(response);
+ } catch (JsonProcessingException e) {
+ log.error("JsonProcessingException while converting JsonNode into string: ", e);
+ }
+ }
+ return str;
+ }
+
+ /**
+ * Convert the List of Operation result into List of OperationResult .
+ * @param input the List of JsonNode
+ * @param operations the List of Operation
+ * @return the List of OperationResult
+ */
+ public static List<OperationResult> jsonNodeToOperationResult(List<JsonNode> input,
+ List<Operation> operations) {
+ ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(false);
+ List<OperationResult> operationResults = new ArrayList<OperationResult>();
+ for (int i = 0; i < input.size(); i++) {
+ JsonNode jsonNode = input.get(i);
+ Operation operation = operations.get(i);
+ if (jsonNode != null && jsonNode.size() > 0) {
+ if (i >= operations.size() || operation.getOp() != "select") {
+ OperationResult or = objectMapper.convertValue(jsonNode, OperationResult.class);
+ operationResults.add(or);
+ } else {
+ List<Row> rows = createRows(operation.getTableSchema(), jsonNode);
+ OperationResult or = new OperationResult(rows);
+ operationResults.add(or);
+ }
+ }
+ }
+ return operationResults;
+ }
+
+ /**
+ * Convert Operation JsonNode into Rows.
+ * @param tableSchema TableSchema entity
+ * @param rowsNode JsonNode
+ * @return ArrayList<Row> the List of Row
+ */
+ private static ArrayList<Row> createRows(TableSchema tableSchema, JsonNode rowsNode) {
+ validateJsonNode(rowsNode, "rows");
+ ArrayList<Row> rows = Lists.newArrayList();
+ for (JsonNode rowNode : rowsNode.get("rows")) {
+ rows.add(createRow(tableSchema, rowNode));
+ }
+ return rows;
+ }
+
+ /**
+ * convert the params of Update Notification into TableUpdates.
+ * @param updatesJson the params of Update Notification
+ * @param dbSchema DatabaseSchema entity
+ * @return TableUpdates
+ */
+ public static TableUpdates jsonNodeToTableUpdates(JsonNode updatesJson, DatabaseSchema dbSchema) {
+ Map<String, TableUpdate> tableUpdateMap = Maps.newHashMap();
+ Iterator<Map.Entry<String, JsonNode>> tableUpdatesItr = updatesJson.fields();
+ while (tableUpdatesItr.hasNext()) {
+ Map.Entry<String, JsonNode> entry = tableUpdatesItr.next();
+ TableSchema tableSchema = dbSchema.getTableSchema(entry.getKey());
+ TableUpdate tableUpdate = jsonNodeToTableUpdate(tableSchema, entry.getValue());
+ tableUpdateMap.put(entry.getKey(), tableUpdate);
+ }
+ return TableUpdates.tableUpdates(tableUpdateMap);
+ }
+
+ /**
+ * convert the params of Update Notification into TableUpdate.
+ * @param tableSchema TableSchema entity
+ * @param updateJson the table-update in params of Update Notification
+ * @return TableUpdate
+ */
+ public static TableUpdate jsonNodeToTableUpdate(TableSchema tableSchema, JsonNode updateJson) {
+ Map<UUID, RowUpdate> rows = Maps.newHashMap();
+ Iterator<Map.Entry<String, JsonNode>> tableUpdateItr = updateJson.fields();
+ while (tableUpdateItr.hasNext()) {
+ Map.Entry<String, JsonNode> oldNewRow = tableUpdateItr.next();
+ String uuidStr = oldNewRow.getKey();
+ UUID uuid = UUID.uuid(uuidStr);
+ JsonNode newR = oldNewRow.getValue().get("new");
+ JsonNode oldR = oldNewRow.getValue().get("old");
+ Row newRow = newR != null ? createRow(tableSchema, newR) : null;
+ Row oldRow = oldR != null ? createRow(tableSchema, oldR) : null;
+ RowUpdate rowUpdate = new RowUpdate(uuid, oldRow, newRow);
+ rows.put(uuid, rowUpdate);
+ }
+ return TableUpdate.tableUpdate(rows);
+ }
+
+ /**
+ * Convert Operation JsonNode into Row.
+ * @param tableSchema TableSchema entity
+ * @param rowNode JsonNode
+ * @return Row
+ */
+ private static Row createRow(TableSchema tableSchema, JsonNode rowNode) {
+ if (tableSchema == null) {
+ return null;
+ }
+ Map<String, Column> columns = Maps.newHashMap();
+ Iterator<Map.Entry<String, JsonNode>> rowIter = rowNode.fields();
+ while (rowIter.hasNext()) {
+ Map.Entry<String, JsonNode> next = rowIter.next();
+ ColumnSchema columnSchema = tableSchema.getColumnSchema(next.getKey());
+ if (columnSchema != null) {
+ String columnName = columnSchema.name();
+ Object obj = TransValueUtil.getValueFromJson(next.getValue(), columnSchema.type());
+ columns.put(columnName, new Column(columnName, obj));
+ }
+ }
+ return new Row(tableSchema.name(), columns);
+ }
+
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java
index bf1938d..8436fde 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/JsonRpcReaderUtil.java
@@ -1,172 +1,165 @@
-/*
- * 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.utils;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufInputStream;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Stack;
-
-import org.onosproject.ovsdb.rfc.error.UnsupportedEncodingException;
-import org.onosproject.ovsdb.rfc.jsonrpc.JsonReadContext;
-
-import com.fasterxml.jackson.core.JsonEncoding;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.io.IOContext;
-import com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper;
-import com.fasterxml.jackson.core.util.BufferRecycler;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.MappingJsonFactory;
-
-/**
- * Decoder utility class.
- */
-public final class JsonRpcReaderUtil {
-
- /**
- * Constructs a JsonRpcReaderUtil object. Utility classes should not have a
- * public or default constructor, otherwise IDE will compile unsuccessfully.
- * This class should not be instantiated.
- */
- private JsonRpcReaderUtil() {
- }
-
- /**
- * Decode the bytes to Json object.
- * @param in input of bytes
- * @param out ouput of Json object list
- * @param jrContext context for the last decoding process
- * @throws IOException IOException
- * @throws JsonParseException JsonParseException
- */
- public static void readToJsonNode(ByteBuf in, List<Object> out,
- JsonReadContext jrContext)
- throws JsonParseException, IOException {
- int lastReadBytes = jrContext.getLastReadBytes();
- if (lastReadBytes == 0) {
- if (in.readableBytes() < 4) {
- return;
- }
- checkEncoding(in);
- }
-
- int i = lastReadBytes + in.readerIndex();
- Stack<Byte> bufStack = jrContext.getBufStack();
- for (; i < in.writerIndex(); i++) {
- byte b = in.getByte(i);
- switch (b) {
- case '{':
- if (!isDoubleQuote(bufStack)) {
- bufStack.push(b);
- jrContext.setStartMatch(true);
- }
- break;
- case '}':
- if (!isDoubleQuote(bufStack)) {
- bufStack.pop();
- }
- break;
- case '"':
- if (in.getByte(i - 1) != '\\') {
- if (!bufStack.isEmpty() && bufStack.peek() != '"') {
- bufStack.push(b);
- } else {
- bufStack.pop();
- }
- }
- break;
- default:
- break;
- }
-
- if (jrContext.isStartMatch() && bufStack.isEmpty()) {
- ByteBuf buf = in.readSlice(i - in.readerIndex() + 1);
- JsonParser jf = new MappingJsonFactory()
- .createParser(new ByteBufInputStream(buf));
- JsonNode jsonNode = jf.readValueAsTree();
- out.add(jsonNode);
- lastReadBytes = 0;
- jrContext.setLastReadBytes(lastReadBytes);
- break;
- }
- }
-
- if (i >= in.writerIndex()) {
- lastReadBytes = in.readableBytes();
- jrContext.setLastReadBytes(lastReadBytes);
- }
- }
-
- /**
- * Filter the invalid characters before decoding.
- * @param in input of bytes
- * @param lastReadBytes the bytes for last decoding incomplete record
- */
- private static void fliterCharaters(ByteBuf in) {
- while (in.isReadable()) {
- int ch = in.getByte(in.readerIndex());
- if ((ch != ' ') && (ch != '\n') && (ch != '\t') && (ch != '\r')) {
- break;
- } else {
- in.readByte();
- }
- }
- }
-
- /**
- * Check whether the peek of the stack element is double quote.
- * @param jrContext context for the last decoding process
- * @return boolean
- */
- private static boolean isDoubleQuote(Stack<Byte> bufStack) {
- if (!bufStack.isEmpty() && bufStack.peek() == '"') {
- return true;
- }
- return false;
- }
-
- /**
- * Check whether the encoding is valid.
- * @param in input of bytes
- * @throws IOException this is an IO exception
- * @throws UnsupportedEncodingException this is an unsupported encode
- * exception
- */
- private static void checkEncoding(ByteBuf in) throws IOException {
- int inputStart = 0;
- int inputLength = 4;
- fliterCharaters(in);
- byte[] buff = new byte[4];
- in.getBytes(in.readerIndex(), buff);
- ByteSourceJsonBootstrapper strapper = new ByteSourceJsonBootstrapper(
- new IOContext(
- new BufferRecycler(),
- null,
- false),
- buff,
- inputStart,
- inputLength);
- JsonEncoding jsonEncoding = strapper.detectEncoding();
- if (!JsonEncoding.UTF8.equals(jsonEncoding)) {
- throw new UnsupportedEncodingException(
- "Only UTF-8 encoding is supported.");
- }
- }
-
-}
+/*
+ * 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.utils;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufInputStream;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Stack;
+
+import org.onosproject.ovsdb.rfc.error.UnsupportedException;
+import org.onosproject.ovsdb.rfc.jsonrpc.JsonReadContext;
+
+import com.fasterxml.jackson.core.JsonEncoding;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.io.IOContext;
+import com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper;
+import com.fasterxml.jackson.core.util.BufferRecycler;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.MappingJsonFactory;
+
+/**
+ * Decoder utility class.
+ */
+public final class JsonRpcReaderUtil {
+
+ /**
+ * Constructs a JsonRpcReaderUtil object. Utility classes should not have a
+ * public or default constructor, otherwise IDE will compile unsuccessfully.
+ * This class should not be instantiated.
+ */
+ private JsonRpcReaderUtil() {
+ }
+
+ /**
+ * Decode the bytes to Json object.
+ * @param in input of bytes
+ * @param out ouput of Json object list
+ * @param jrContext context for the last decoding process
+ * @throws IOException IOException
+ * @throws JsonParseException JsonParseException
+ */
+ public static void readToJsonNode(ByteBuf in, List<Object> out, JsonReadContext jrContext)
+ throws JsonParseException, IOException {
+ int lastReadBytes = jrContext.getLastReadBytes();
+ if (lastReadBytes == 0) {
+ if (in.readableBytes() < 4) {
+ return;
+ }
+ checkEncoding(in);
+ }
+
+ int i = lastReadBytes + in.readerIndex();
+ Stack<Byte> bufStack = jrContext.getBufStack();
+ for (; i < in.writerIndex(); i++) {
+ byte b = in.getByte(i);
+ switch (b) {
+ case '{':
+ if (!isDoubleQuote(bufStack)) {
+ bufStack.push(b);
+ jrContext.setStartMatch(true);
+ }
+ break;
+ case '}':
+ if (!isDoubleQuote(bufStack)) {
+ bufStack.pop();
+ }
+ break;
+ case '"':
+ if (in.getByte(i - 1) != '\\') {
+ if (!bufStack.isEmpty() && bufStack.peek() != '"') {
+ bufStack.push(b);
+ } else {
+ bufStack.pop();
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (jrContext.isStartMatch() && bufStack.isEmpty()) {
+ ByteBuf buf = in.readSlice(i - in.readerIndex() + 1);
+ JsonParser jf = new MappingJsonFactory().createParser(new ByteBufInputStream(buf));
+ JsonNode jsonNode = jf.readValueAsTree();
+ out.add(jsonNode);
+ lastReadBytes = 0;
+ jrContext.setLastReadBytes(lastReadBytes);
+ break;
+ }
+ }
+
+ if (i >= in.writerIndex()) {
+ lastReadBytes = in.readableBytes();
+ jrContext.setLastReadBytes(lastReadBytes);
+ }
+ }
+
+ /**
+ * Filter the invalid characters before decoding.
+ * @param in input of bytes
+ * @param lastReadBytes the bytes for last decoding incomplete record
+ */
+ private static void fliterCharaters(ByteBuf in) {
+ while (in.isReadable()) {
+ int ch = in.getByte(in.readerIndex());
+ if ((ch != ' ') && (ch != '\n') && (ch != '\t') && (ch != '\r')) {
+ break;
+ } else {
+ in.readByte();
+ }
+ }
+ }
+
+ /**
+ * Check whether the peek of the stack element is double quote.
+ * @param jrContext context for the last decoding process
+ * @return boolean
+ */
+ private static boolean isDoubleQuote(Stack<Byte> bufStack) {
+ if (!bufStack.isEmpty() && bufStack.peek() == '"') {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Check whether the encoding is valid.
+ * @param in input of bytes
+ * @throws IOException this is an IO exception
+ * @throws UnsupportedException this is an unsupported exception
+ */
+ private static void checkEncoding(ByteBuf in) throws IOException {
+ int inputStart = 0;
+ int inputLength = 4;
+ fliterCharaters(in);
+ byte[] buff = new byte[4];
+ in.getBytes(in.readerIndex(), buff);
+ ByteSourceJsonBootstrapper strapper = new ByteSourceJsonBootstrapper(new IOContext(new BufferRecycler(),
+ null,
+ false),
+ buff, inputStart,
+ inputLength);
+ JsonEncoding jsonEncoding = strapper.detectEncoding();
+ if (!JsonEncoding.UTF8.equals(jsonEncoding)) {
+ throw new UnsupportedException("Only UTF-8 encoding is supported.");
+ }
+ }
+
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ParamUtil.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ParamUtil.java
index d11356e..8fbbf42 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ParamUtil.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/ParamUtil.java
@@ -1,98 +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.utils;
-
-import java.util.List;
-import java.util.Set;
-
-import org.onosproject.ovsdb.rfc.message.MonitorRequest;
-import org.onosproject.ovsdb.rfc.message.MonitorSelect;
-import org.onosproject.ovsdb.rfc.operations.Operation;
-import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
-import org.onosproject.ovsdb.rfc.schema.TableSchema;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * Params utility class. Params of the request object, refer to RFC7047's Section
- * 4.1.
- */
-public final class ParamUtil {
-
- /**
- * Constructs a ParamUtil object. Utility classes should not have a
- * public or default constructor, otherwise IDE will compile unsuccessfully. This
- * class should not be instantiated.
- */
- private ParamUtil() {
- }
-
- /**
- * Returns MonitorRequest, refer to RFC7047's Section 4.1.5.
- * @param tableSchema entity
- * @return MonitorRequest
- */
- private static MonitorRequest getAllColumnsMonitorRequest(TableSchema tableSchema) {
- String tableName = tableSchema.name();
- Set<String> columns = tableSchema.getColumnNames();
- MonitorSelect select = new MonitorSelect(true, true, true, true);
- MonitorRequest monitorRequest = new MonitorRequest(tableName, columns,
- select);
- return monitorRequest;
- }
-
- /**
- * Returns params of monitor method, refer to RFC7047's Section 4.1.5.
- * @param monotorId json-value, refer to RFC7047's Section 4.1.5.
- * @param dbSchema DatabaseSchema entity
- * @return List of Object, the params of monitor request
- */
- public static List<Object> getMonitorParams(String monotorId,
- DatabaseSchema dbSchema) {
- Set<String> tables = dbSchema.getTableNames();
- List<MonitorRequest> monitorRequests = Lists.newArrayList();
- for (String tableName : tables) {
- TableSchema tableSchema = dbSchema.getTableSchema(tableName);
- monitorRequests.add(getAllColumnsMonitorRequest(tableSchema));
- }
- ImmutableMap<String, MonitorRequest> reqMap = Maps
- .uniqueIndex(monitorRequests,
- new Function<MonitorRequest, String>() {
- @Override
- public String apply(MonitorRequest input) {
- return input.getTableName();
- }
- });
- return Lists.<Object>newArrayList(dbSchema.name(), monotorId,
- reqMap);
- }
-
- /**
- * Returns params of transact method, refer to RFC7047's Section 4.1.3.
- * @param dbSchema DatabaseSchema entity
- * @param operations operation*, refer to RFC7047's Section 4.1.3.
- * @return List of Object, the params of transact request
- */
- public static List<Object> getTransactParams(DatabaseSchema dbSchema,
- List<Operation> operations) {
- List<Object> lists = Lists.newArrayList((Object) dbSchema.name());
- lists.addAll(operations);
- return lists;
- }
-}
+/*
+ * 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.utils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.onosproject.ovsdb.rfc.message.MonitorRequest;
+import org.onosproject.ovsdb.rfc.message.MonitorSelect;
+import org.onosproject.ovsdb.rfc.operations.Operation;
+import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
+import org.onosproject.ovsdb.rfc.schema.TableSchema;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+/**
+ * Params utility class. Params of the request object, refer to RFC7047's
+ * Section 4.1.
+ */
+public final class ParamUtil {
+
+ /**
+ * Constructs a ParamUtil object. Utility classes should not have a public
+ * or default constructor, otherwise IDE will compile unsuccessfully. This
+ * class should not be instantiated.
+ */
+ private ParamUtil() {
+ }
+
+ /**
+ * Returns MonitorRequest, refer to RFC7047's Section 4.1.5.
+ * @param tableSchema entity
+ * @return MonitorRequest
+ */
+ private static MonitorRequest getAllColumnsMonitorRequest(TableSchema tableSchema) {
+ String tableName = tableSchema.name();
+ Set<String> columns = tableSchema.getColumnNames();
+ MonitorSelect select = new MonitorSelect(true, true, true, true);
+ MonitorRequest monitorRequest = new MonitorRequest(tableName, columns, select);
+ return monitorRequest;
+ }
+
+ /**
+ * Returns params of monitor method, refer to RFC7047's Section 4.1.5.
+ * @param monotorId json-value, refer to RFC7047's Section 4.1.5.
+ * @param dbSchema DatabaseSchema entity
+ * @return List of Object, the params of monitor request
+ */
+ public static List<Object> getMonitorParams(String monotorId, DatabaseSchema dbSchema) {
+ Set<String> tables = dbSchema.getTableNames();
+ Map<String, MonitorRequest> mrMap = Maps.newHashMap();
+ for (String tableName : tables) {
+ TableSchema tableSchema = dbSchema.getTableSchema(tableName);
+ MonitorRequest monitorRequest = getAllColumnsMonitorRequest(tableSchema);
+ mrMap.put(tableName, monitorRequest);
+ }
+ return Lists.newArrayList(dbSchema.name(), monotorId, mrMap);
+ }
+
+ /**
+ * Returns params of transact method, refer to RFC7047's Section 4.1.3.
+ * @param dbSchema DatabaseSchema entity
+ * @param operations operation*, refer to RFC7047's Section 4.1.3.
+ * @return List of Object, the params of transact request
+ */
+ public static List<Object> getTransactParams(DatabaseSchema dbSchema, List<Operation> operations) {
+ return Lists.newArrayList(dbSchema.name(), operations);
+ }
+}
diff --git a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/TransValueUtil.java b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/TransValueUtil.java
index 694fa8b..49fbd37 100644
--- a/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/TransValueUtil.java
+++ b/ovsdb/rfc/src/main/java/org/onosproject/ovsdb/rfc/utils/TransValueUtil.java
@@ -87,33 +87,29 @@
* @param atoType AtomicColumnType entity
* @return Object OvsdbSet or the value of JsonNode
*/
- private static Object getValueFromAtoType(JsonNode json,
- AtomicColumnType atoType) {
+ private static Object getValueFromAtoType(JsonNode json, AtomicColumnType atoType) {
BaseType baseType = atoType.baseType();
// If "min" or "max" is not specified, If "min" is not 1 or "max" is not
- // 1,
- // or both, and "value" is not specified, the type is a set of scalar
- // type "key".
- // Refer to RFC 7047, Section 3.2 <type>.
+ // 1, or both, and "value" is not specified, the type is a set of scalar
+ // type "key". Refer to RFC 7047, Section 3.2 <type>.
if (atoType.min() != atoType.max()) {
Set set = Sets.newHashSet();
if (json.isArray()) {
if (json.size() == 2) {
- if (json.get(0).isTextual()
- && "set".equals(json.get(0).asText())) {
+ if (json.get(0).isTextual() && "set".equals(json.get(0).asText())) {
for (JsonNode node : json.get(1)) {
- set.add(TransValueUtil.transToValue(node, baseType));
+ set.add(transToValue(node, baseType));
}
} else {
- set.add(TransValueUtil.transToValue(json, baseType));
+ set.add(transToValue(json, baseType));
}
}
} else {
- set.add(TransValueUtil.transToValue(json, baseType));
+ set.add(transToValue(json, baseType));
}
return OvsdbSet.ovsdbSet(set);
} else {
- return TransValueUtil.transToValue(json, baseType);
+ return transToValue(json, baseType);
}
}
@@ -123,19 +119,15 @@
* @param kvType KeyValuedColumnType entity
* @return Object OvsdbMap
*/
- private static Object getValueFromKvType(JsonNode json,
- KeyValuedColumnType kvType) {
+ private static Object getValueFromKvType(JsonNode json, KeyValuedColumnType kvType) {
if (json.isArray()) {
if (json.size() == 2) {
- if (json.get(0).isTextual()
- && "map".equals(json.get(0).asText())) {
+ if (json.get(0).isTextual() && "map".equals(json.get(0).asText())) {
Map map = Maps.newHashMap();
for (JsonNode pairNode : json.get(1)) {
if (pairNode.isArray() && json.size() == 2) {
- Object key = TransValueUtil.transToValue(pairNode
- .get(0), kvType.keyType());
- Object value = TransValueUtil.transToValue(pairNode
- .get(1), kvType.valueType());
+ Object key = transToValue(pairNode.get(0), kvType.keyType());
+ Object value = transToValue(pairNode.get(1), kvType.valueType());
map.put(key, value);
}
}
@@ -166,14 +158,13 @@
if (valueNode.isArray()) {
if (valueNode.size() == 2) {
if (valueNode.get(0).isTextual()
- && "uuid".equals(valueNode.get(0).asText())
- || "named-uuid".equals(valueNode.get(0).asText())) {
+ && ("uuid".equals(valueNode.get(0).asText()) || "named-uuid"
+ .equals(valueNode.get(0).asText()))) {
return UUID.uuid(valueNode.get(1).asText());
}
}
} else {
- return new RefTableRow(((UuidBaseType) baseType).getRefTable(),
- valueNode);
+ return new RefTableRow(((UuidBaseType) baseType).getRefTable(), valueNode);
}
}
return null;