lishuai
Committed by Gerrit Code Review

[ONOS-2563]Optimize RFC 7047's code.

Change-Id: I000f2b802420e4f47ce320f6ed021049bd2fd83e
Showing 23 changed files with 272 additions and 559 deletions
...@@ -16,25 +16,25 @@ ...@@ -16,25 +16,25 @@
16 package org.onosproject.ovsdb.rfc.error; 16 package org.onosproject.ovsdb.rfc.error;
17 17
18 /** 18 /**
19 - * AbnormalSchema exception is thrown when the received schema is invalid. 19 + * AbnormalJsonNodeException exception is thrown when the received JsonNode is invalid.
20 */ 20 */
21 -public class AbnormalSchemaException extends RuntimeException { 21 +public class AbnormalJsonNodeException extends RuntimeException {
22 private static final long serialVersionUID = 8328377718334680368L; 22 private static final long serialVersionUID = 8328377718334680368L;
23 23
24 /** 24 /**
25 - * Constructs a AbnormalSchemaException object. 25 + * Constructs a AbnormalJsonNodeException object.
26 * @param message error message 26 * @param message error message
27 */ 27 */
28 - public AbnormalSchemaException(String message) { 28 + public AbnormalJsonNodeException(String message) {
29 super(message); 29 super(message);
30 } 30 }
31 31
32 /** 32 /**
33 - * Constructs a AbnormalSchemaException object. 33 + * Constructs a AbnormalJsonNodeException object.
34 * @param message error message 34 * @param message error message
35 * @param cause Throwable 35 * @param cause Throwable
36 */ 36 */
37 - public AbnormalSchemaException(String message, Throwable cause) { 37 + public AbnormalJsonNodeException(String message, Throwable cause) {
38 super(message, cause); 38 super(message, cause);
39 } 39 }
40 40
......
1 -/*
2 - * Copyright 2015 Open Networking Laboratory
3 - *
4 - * Licensed under the Apache License, Version 2.0 (the "License");
5 - * you may not use this file except in compliance with the License.
6 - * You may obtain a copy of the License at
7 - *
8 - * http://www.apache.org/licenses/LICENSE-2.0
9 - *
10 - * Unless required by applicable law or agreed to in writing, software
11 - * distributed under the License is distributed on an "AS IS" BASIS,
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 - * See the License for the specific language governing permissions and
14 - * limitations under the License.
15 - */
16 -package org.onosproject.ovsdb.rfc.error;
17 -
18 -/**
19 - * This exception is thrown when the argument is not supported.
20 - */
21 -public class ArgumentException extends RuntimeException {
22 - private static final long serialVersionUID = 4950089877540156797L;
23 -
24 - /**
25 - * Constructs a ArgumentException object.
26 - * @param message error message
27 - */
28 - public ArgumentException(String message) {
29 - super(message);
30 - }
31 -
32 - /**
33 - * Constructs a ArgumentException object.
34 - * @param message error message
35 - * @param cause Throwable
36 - */
37 - public ArgumentException(String message, Throwable cause) {
38 - super(message, cause);
39 - }
40 -}
1 -/*
2 - * Copyright 2015 Open Networking Laboratory
3 - *
4 - * Licensed under the Apache License, Version 2.0 (the "License");
5 - * you may not use this file except in compliance with the License.
6 - * You may obtain a copy of the License at
7 - *
8 - * http://www.apache.org/licenses/LICENSE-2.0
9 - *
10 - * Unless required by applicable law or agreed to in writing, software
11 - * distributed under the License is distributed on an "AS IS" BASIS,
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 - * See the License for the specific language governing permissions and
14 - * limitations under the License.
15 - */
16 -package org.onosproject.ovsdb.rfc.error;
17 -
18 -/**
19 - * The JsonParsingException is thrown when JSON could not be successfully
20 - * parsed.
21 - */
22 -public class JsonParsingException extends RuntimeException {
23 - private static final long serialVersionUID = 1424752181911923235L;
24 -
25 - /**
26 - * Constructs a JsonParsingException object.
27 - * @param message error message
28 - */
29 - public JsonParsingException(String message) {
30 - super(message);
31 - }
32 -
33 - /**
34 - * Constructs a JsonParsingException object.
35 - * @param message error message
36 - * @param cause Throwable
37 - */
38 - public JsonParsingException(String message, Throwable cause) {
39 - super(message, cause);
40 - }
41 -
42 - /**
43 - * Constructs a JsonParsingException object.
44 - * @param cause Throwable
45 - */
46 - public JsonParsingException(Throwable cause) {
47 - super(cause);
48 - }
49 -
50 - /**
51 - * Constructs a JsonParsingException object.
52 - * @param message error message
53 - * @param cause Throwable
54 - * @param enableSuppression enable Suppression
55 - * @param writableStackTrace writable StackTrace
56 - */
57 - public JsonParsingException(String message, Throwable cause,
58 - boolean enableSuppression,
59 - boolean writableStackTrace) {
60 - super(message, cause, enableSuppression, writableStackTrace);
61 - }
62 -}
1 -/*
2 - * Copyright 2015 Open Networking Laboratory
3 - *
4 - * Licensed under the Apache License, Version 2.0 (the "License");
5 - * you may not use this file except in compliance with the License.
6 - * You may obtain a copy of the License at
7 - *
8 - * http://www.apache.org/licenses/LICENSE-2.0
9 - *
10 - * Unless required by applicable law or agreed to in writing, software
11 - * distributed under the License is distributed on an "AS IS" BASIS,
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 - * See the License for the specific language governing permissions and
14 - * limitations under the License.
15 - */
16 -package org.onosproject.ovsdb.rfc.error;
17 -
18 -/**
19 - * This is a generic exception thrown by the Typed Schema utilities.
20 - */
21 -public class TypedSchemaException extends RuntimeException {
22 - private static final long serialVersionUID = -1452257990783176715L;
23 -
24 - /**
25 - * Constructs a TypedSchemaException object.
26 - * @param message error message
27 - */
28 - public TypedSchemaException(String message) {
29 - super(message);
30 - }
31 -
32 - /**
33 - * Constructs a TypedSchemaException object.
34 - * @param message error message
35 - * @param cause Throwable
36 - */
37 - public TypedSchemaException(String message, Throwable cause) {
38 - super(message, cause);
39 - }
40 -}
1 -package org.onosproject.ovsdb.rfc.error;
2 -
3 -/**
4 - * This exception is thrown when the encoding does not meet UTF-8 in RFC7047.
5 - */
6 -public class UnsupportedEncodingException extends RuntimeException {
7 - private static final long serialVersionUID = -4865311369828520666L;
8 -
9 - /**
10 - * Constructs a UnsupportedEncodingException object.
11 - * @param message error message
12 - */
13 - public UnsupportedEncodingException(String message) {
14 - super(message);
15 - }
16 -}
...@@ -16,26 +16,26 @@ ...@@ -16,26 +16,26 @@
16 package org.onosproject.ovsdb.rfc.error; 16 package org.onosproject.ovsdb.rfc.error;
17 17
18 /** 18 /**
19 - * This exception is thrown when a result does not meet any of the known formats 19 + * This exception is thrown when the caller invoke the unsupported method or
20 - * in RFC7047. 20 + * use the encoding is not supported.
21 */ 21 */
22 -public class UnknownResultException extends RuntimeException { 22 +public class UnsupportedException extends RuntimeException {
23 private static final long serialVersionUID = 1377011546616825375L; 23 private static final long serialVersionUID = 1377011546616825375L;
24 24
25 /** 25 /**
26 - * Constructs a UnknownResultException object. 26 + * Constructs a UnsupportedException object.
27 * @param message error message 27 * @param message error message
28 */ 28 */
29 - public UnknownResultException(String message) { 29 + public UnsupportedException(String message) {
30 super(message); 30 super(message);
31 } 31 }
32 32
33 /** 33 /**
34 - * Constructs a UnknownResultException object. 34 + * Constructs a UnsupportedException object.
35 * @param message error message 35 * @param message error message
36 * @param cause Throwable 36 * @param cause Throwable
37 */ 37 */
38 - public UnknownResultException(String message, Throwable cause) { 38 + public UnsupportedException(String message, Throwable cause) {
39 super(message, cause); 39 super(message, cause);
40 } 40 }
41 } 41 }
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
15 */ 15 */
16 package org.onosproject.ovsdb.rfc.error; 16 package org.onosproject.ovsdb.rfc.error;
17 17
18 -import static com.google.common.base.MoreObjects.toStringHelper;
19 18
20 /** 19 /**
21 * This exception is used when the a table or row is accessed though a typed 20 * This exception is used when the a table or row is accessed though a typed
...@@ -47,15 +46,9 @@ public class VersionMismatchException extends RuntimeException { ...@@ -47,15 +46,9 @@ public class VersionMismatchException extends RuntimeException {
47 * @param fromVersion the initial version 46 * @param fromVersion the initial version
48 * @return message 47 * @return message
49 */ 48 */
50 - public static String createFromMessage(String actualVersion, 49 + public static String createFromMessage(String actualVersion, String fromVersion) {
51 - String fromVersion) { 50 + String message = "The fromVersion should less than the actualVersion.\n fromVersion: "
52 - String message = toStringHelper("VersionMismatchException") 51 + + fromVersion + ".\n" + "actualVersion: " + actualVersion;
53 - .addValue("The fromVersion should less than the actualVersion.\n"
54 - + "fromVersion: "
55 - + fromVersion
56 - + ".\n"
57 - + "actualVersion: " + actualVersion)
58 - .toString();
59 return message; 52 return message;
60 } 53 }
61 54
...@@ -66,13 +59,8 @@ public class VersionMismatchException extends RuntimeException { ...@@ -66,13 +59,8 @@ public class VersionMismatchException extends RuntimeException {
66 * @return message 59 * @return message
67 */ 60 */
68 public static String createToMessage(String actualVersion, String toVersion) { 61 public static String createToMessage(String actualVersion, String toVersion) {
69 - String message = toStringHelper("VersionMismatchException") 62 + String message = "The toVersion should greater than the actualVersion.\n"
70 - .addValue("The toVersion should greater than the required version.\n" 63 + + "toVersion: " + toVersion + ".\n" + " actualVersion: " + actualVersion;
71 - + "toVersion: "
72 - + toVersion
73 - + ".\n"
74 - + "Actual Version: " + actualVersion)
75 - .toString();
76 return message; 64 return message;
77 } 65 }
78 } 66 }
......
...@@ -32,18 +32,18 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; ...@@ -32,18 +32,18 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
32 */ 32 */
33 @JsonDeserialize(converter = UpdateNotificationConverter.class) 33 @JsonDeserialize(converter = UpdateNotificationConverter.class)
34 public final class UpdateNotification { 34 public final class UpdateNotification {
35 - private final Object context; 35 + private final Object jsonValue;
36 private final JsonNode tbUpdatesJsonNode; 36 private final JsonNode tbUpdatesJsonNode;
37 37
38 /** 38 /**
39 * Constructs a UpdateNotification object. 39 * Constructs a UpdateNotification object.
40 - * @param context the "json-value" in "params" of the result JsonNode 40 + * @param jsonValue the "json-value" in "params" of the result JsonNode
41 * @param tbUpdatesJsonNode the "table-updates" in "params" of the result JsonNode 41 * @param tbUpdatesJsonNode the "table-updates" in "params" of the result JsonNode
42 */ 42 */
43 - public UpdateNotification(Object context, JsonNode tbUpdatesJsonNode) { 43 + public UpdateNotification(Object jsonValue, JsonNode tbUpdatesJsonNode) {
44 - checkNotNull(context, "context cannot be null"); 44 + checkNotNull(jsonValue, "jsonValue cannot be null");
45 checkNotNull(tbUpdatesJsonNode, "tablebUpdates JsonNode cannot be null"); 45 checkNotNull(tbUpdatesJsonNode, "tablebUpdates JsonNode cannot be null");
46 - this.context = context; 46 + this.jsonValue = jsonValue;
47 this.tbUpdatesJsonNode = tbUpdatesJsonNode; 47 this.tbUpdatesJsonNode = tbUpdatesJsonNode;
48 } 48 }
49 49
...@@ -51,8 +51,8 @@ public final class UpdateNotification { ...@@ -51,8 +51,8 @@ public final class UpdateNotification {
51 * Return context. 51 * Return context.
52 * @return context 52 * @return context
53 */ 53 */
54 - public Object context() { 54 + public Object jsonValue() {
55 - return context; 55 + return jsonValue;
56 } 56 }
57 57
58 /** 58 /**
...@@ -65,7 +65,7 @@ public final class UpdateNotification { ...@@ -65,7 +65,7 @@ public final class UpdateNotification {
65 65
66 @Override 66 @Override
67 public int hashCode() { 67 public int hashCode() {
68 - return Objects.hash(context, tbUpdatesJsonNode); 68 + return Objects.hash(jsonValue, tbUpdatesJsonNode);
69 } 69 }
70 70
71 @Override 71 @Override
...@@ -75,7 +75,7 @@ public final class UpdateNotification { ...@@ -75,7 +75,7 @@ public final class UpdateNotification {
75 } 75 }
76 if (obj instanceof UpdateNotification) { 76 if (obj instanceof UpdateNotification) {
77 final UpdateNotification other = (UpdateNotification) obj; 77 final UpdateNotification other = (UpdateNotification) obj;
78 - return Objects.equals(this.context, other.context) 78 + return Objects.equals(this.jsonValue, other.jsonValue)
79 && Objects.equals(this.tbUpdatesJsonNode, 79 && Objects.equals(this.tbUpdatesJsonNode,
80 other.tbUpdatesJsonNode); 80 other.tbUpdatesJsonNode);
81 } 81 }
...@@ -84,7 +84,7 @@ public final class UpdateNotification { ...@@ -84,7 +84,7 @@ public final class UpdateNotification {
84 84
85 @Override 85 @Override
86 public String toString() { 86 public String toString() {
87 - return toStringHelper(this).add("context", context) 87 + return toStringHelper(this).add("jsonValue", jsonValue)
88 .add("tbUpdatesJsonNode", tbUpdatesJsonNode).toString(); 88 .add("tbUpdatesJsonNode", tbUpdatesJsonNode).toString();
89 } 89 }
90 } 90 }
......
...@@ -20,27 +20,22 @@ import static com.google.common.base.Preconditions.checkNotNull; ...@@ -20,27 +20,22 @@ import static com.google.common.base.Preconditions.checkNotNull;
20 20
21 import java.util.Objects; 21 import java.util.Objects;
22 22
23 -import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
24 -
25 -import com.fasterxml.jackson.annotation.JsonIgnore;
26 -
27 /** 23 /**
28 * Column is the basic element of the OpenVswitch database. 24 * Column is the basic element of the OpenVswitch database.
29 */ 25 */
30 public final class Column { 26 public final class Column {
31 - @JsonIgnore 27 + private final String columnName;
32 - private final ColumnSchema schema;
33 private final Object data; 28 private final Object data;
34 29
35 /** 30 /**
36 * Column constructor. 31 * Column constructor.
37 - * @param schema the column schema 32 + * @param columnName the column name
38 * @param obj the data of the column 33 * @param obj the data of the column
39 */ 34 */
40 - public Column(ColumnSchema schema, Object obj) { 35 + public Column(String columnName, Object obj) {
41 - checkNotNull(schema, "schema cannot be null"); 36 + checkNotNull(columnName, "columnName cannot be null");
42 checkNotNull(obj, "data cannot be null"); 37 checkNotNull(obj, "data cannot be null");
43 - this.schema = schema; 38 + this.columnName = columnName;
44 this.data = obj; 39 this.data = obj;
45 } 40 }
46 41
...@@ -53,16 +48,16 @@ public final class Column { ...@@ -53,16 +48,16 @@ public final class Column {
53 } 48 }
54 49
55 /** 50 /**
56 - * Returns ColumnSchema. 51 + * Returns columnName.
57 - * @return ColumnSchema 52 + * @return columnName
58 */ 53 */
59 - public ColumnSchema schema() { 54 + public String columnName() {
60 - return schema; 55 + return columnName;
61 } 56 }
62 57
63 @Override 58 @Override
64 public int hashCode() { 59 public int hashCode() {
65 - return Objects.hash(schema, data); 60 + return Objects.hash(columnName, data);
66 } 61 }
67 62
68 @Override 63 @Override
...@@ -72,7 +67,7 @@ public final class Column { ...@@ -72,7 +67,7 @@ public final class Column {
72 } 67 }
73 if (obj instanceof Column) { 68 if (obj instanceof Column) {
74 final Column other = (Column) obj; 69 final Column other = (Column) obj;
75 - return Objects.equals(this.schema, other.schema) 70 + return Objects.equals(this.columnName, other.columnName)
76 && Objects.equals(this.data, other.data); 71 && Objects.equals(this.data, other.data);
77 } 72 }
78 return false; 73 return false;
...@@ -80,7 +75,7 @@ public final class Column { ...@@ -80,7 +75,7 @@ public final class Column {
80 75
81 @Override 76 @Override
82 public String toString() { 77 public String toString() {
83 - return toStringHelper(this).add("schema", schema).add("data", data) 78 + return toStringHelper(this).add("columnName", columnName)
84 - .toString(); 79 + .add("data", data).toString();
85 } 80 }
86 } 81 }
......
...@@ -19,22 +19,16 @@ import static com.google.common.base.MoreObjects.toStringHelper; ...@@ -19,22 +19,16 @@ import static com.google.common.base.MoreObjects.toStringHelper;
19 import static com.google.common.base.Preconditions.checkNotNull; 19 import static com.google.common.base.Preconditions.checkNotNull;
20 20
21 import java.util.Collection; 21 import java.util.Collection;
22 -import java.util.List;
23 import java.util.Map; 22 import java.util.Map;
24 import java.util.Objects; 23 import java.util.Objects;
25 24
26 -import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
27 -import org.onosproject.ovsdb.rfc.schema.TableSchema;
28 -
29 -import com.fasterxml.jackson.annotation.JsonIgnore;
30 import com.google.common.collect.Maps; 25 import com.google.common.collect.Maps;
31 26
32 /** 27 /**
33 * Row is the basic element of the OpenVswitch's table. 28 * Row is the basic element of the OpenVswitch's table.
34 */ 29 */
35 public final class Row { 30 public final class Row {
36 - @JsonIgnore 31 + private String tableName;
37 - private TableSchema tableSchema;
38 private Map<String, Column> columns; 32 private Map<String, Column> columns;
39 33
40 /** 34 /**
...@@ -46,52 +40,49 @@ public final class Row { ...@@ -46,52 +40,49 @@ public final class Row {
46 40
47 /** 41 /**
48 * Row constructor. 42 * Row constructor.
49 - * @param tableSchema TableSchema entity 43 + * @param tableName table name
50 */ 44 */
51 - public Row(TableSchema tableSchema) { 45 + public Row(String tableName) {
52 - checkNotNull(tableSchema, "tableSchema cannot be null"); 46 + checkNotNull(tableName, "tableName cannot be null");
53 - this.tableSchema = tableSchema; 47 + this.tableName = tableName;
54 this.columns = Maps.newHashMap(); 48 this.columns = Maps.newHashMap();
55 } 49 }
56 50
57 /** 51 /**
58 * Row constructor. 52 * Row constructor.
59 - * @param tableSchema TableSchema entity 53 + * @param tableName table name
60 - * @param columns List of Column entity 54 + * @param columns Map of Column entity
61 */ 55 */
62 - public Row(TableSchema tableSchema, List<Column> columns) { 56 + public Row(String tableName, Map<String, Column> columns) {
63 - checkNotNull(tableSchema, "tableSchema cannot be null"); 57 + checkNotNull(tableName, "table name cannot be null");
64 checkNotNull(columns, "columns cannot be null"); 58 checkNotNull(columns, "columns cannot be null");
65 - this.tableSchema = tableSchema; 59 + this.tableName = tableName;
66 - this.columns = Maps.newHashMap(); 60 + this.columns = columns;
67 - for (Column column : columns) {
68 - this.columns.put(column.schema().name(), column);
69 - }
70 } 61 }
71 62
72 /** 63 /**
73 - * Returns tableSchema. 64 + * Returns tableName.
74 - * @return tableSchema 65 + * @return tableName
75 */ 66 */
76 - public TableSchema getTableSchema() { 67 + public String tableName() {
77 - return tableSchema; 68 + return tableName;
78 } 69 }
79 70
80 /** 71 /**
81 - * Set tableSchema value. 72 + * Set tableName value.
82 - * @param tableSchema TableSchema entity 73 + * @param tableName table name
83 */ 74 */
84 - public void setTableSchema(TableSchema tableSchema) { 75 + public void setTableName(String tableName) {
85 - this.tableSchema = tableSchema; 76 + this.tableName = tableName;
86 } 77 }
87 78
88 /** 79 /**
89 * Returns Column by ColumnSchema. 80 * Returns Column by ColumnSchema.
90 - * @param schema ColumnSchema entity 81 + * @param columnName column name
91 * @return Column 82 * @return Column
92 */ 83 */
93 - public Column getColumn(ColumnSchema schema) { 84 + public Column getColumn(String columnName) {
94 - return (Column) columns.get(schema.name()); 85 + return columns.get(columnName);
95 } 86 }
96 87
97 /** 88 /**
...@@ -113,7 +104,7 @@ public final class Row { ...@@ -113,7 +104,7 @@ public final class Row {
113 104
114 @Override 105 @Override
115 public int hashCode() { 106 public int hashCode() {
116 - return Objects.hash(tableSchema, columns); 107 + return Objects.hash(tableName, columns);
117 } 108 }
118 109
119 @Override 110 @Override
...@@ -123,7 +114,7 @@ public final class Row { ...@@ -123,7 +114,7 @@ public final class Row {
123 } 114 }
124 if (obj instanceof Row) { 115 if (obj instanceof Row) {
125 final Row other = (Row) obj; 116 final Row other = (Row) obj;
126 - return Objects.equals(this.tableSchema, other.tableSchema) 117 + return Objects.equals(this.tableName, other.tableName)
127 && Objects.equals(this.columns, other.columns); 118 && Objects.equals(this.columns, other.columns);
128 } 119 }
129 return false; 120 return false;
...@@ -131,6 +122,7 @@ public final class Row { ...@@ -131,6 +122,7 @@ public final class Row {
131 122
132 @Override 123 @Override
133 public String toString() { 124 public String toString() {
134 - return toStringHelper(this).add("tableSchema", tableSchema).add("columns", columns).toString(); 125 + return toStringHelper(this).add("tableName", tableName)
126 + .add("columns", columns).toString();
135 } 127 }
136 } 128 }
......
...@@ -72,6 +72,6 @@ public final class Delete implements Operation { ...@@ -72,6 +72,6 @@ public final class Delete implements Operation {
72 */ 72 */
73 @JsonProperty 73 @JsonProperty
74 public String getTable() { 74 public String getTable() {
75 - return (tableSchema == null) ? null : tableSchema.name(); 75 + return tableSchema.name();
76 } 76 }
77 } 77 }
......
...@@ -22,7 +22,6 @@ import java.util.Map; ...@@ -22,7 +22,6 @@ import java.util.Map;
22 22
23 import org.onosproject.ovsdb.rfc.notation.Column; 23 import org.onosproject.ovsdb.rfc.notation.Column;
24 import org.onosproject.ovsdb.rfc.notation.Row; 24 import org.onosproject.ovsdb.rfc.notation.Row;
25 -import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
26 import org.onosproject.ovsdb.rfc.schema.TableSchema; 25 import org.onosproject.ovsdb.rfc.schema.TableSchema;
27 import org.onosproject.ovsdb.rfc.utils.TransValueUtil; 26 import org.onosproject.ovsdb.rfc.utils.TransValueUtil;
28 27
...@@ -67,10 +66,10 @@ public final class Insert implements Operation { ...@@ -67,10 +66,10 @@ public final class Insert implements Operation {
67 private void generateOperationRow(Row row) { 66 private void generateOperationRow(Row row) {
68 Collection<Column> columns = row.getColumns(); 67 Collection<Column> columns = row.getColumns();
69 for (Column column : columns) { 68 for (Column column : columns) {
70 - ColumnSchema columnSchema = column.schema(); 69 + String columnName = column.columnName();
71 Object value = column.data(); 70 Object value = column.data();
72 - Object untypedValue = TransValueUtil.getFormatData(value); 71 + Object formatValue = TransValueUtil.getFormatData(value);
73 - this.row.put(columnSchema.name(), untypedValue); 72 + this.row.put(columnName, formatValue);
74 } 73 }
75 } 74 }
76 75
...@@ -106,6 +105,6 @@ public final class Insert implements Operation { ...@@ -106,6 +105,6 @@ public final class Insert implements Operation {
106 */ 105 */
107 @JsonProperty 106 @JsonProperty
108 public String getTable() { 107 public String getTable() {
109 - return (tableSchema == null) ? null : tableSchema.name(); 108 + return tableSchema.name();
110 } 109 }
111 } 110 }
......
...@@ -86,6 +86,6 @@ public final class Mutate implements Operation { ...@@ -86,6 +86,6 @@ public final class Mutate implements Operation {
86 */ 86 */
87 @JsonProperty 87 @JsonProperty
88 public String getTable() { 88 public String getTable() {
89 - return (tableSchema == null) ? null : tableSchema.name(); 89 + return tableSchema.name();
90 } 90 }
91 } 91 }
......
...@@ -84,6 +84,6 @@ public final class Select implements Operation { ...@@ -84,6 +84,6 @@ public final class Select implements Operation {
84 */ 84 */
85 @JsonProperty 85 @JsonProperty
86 public String getTable() { 86 public String getTable() {
87 - return (tableSchema == null) ? null : tableSchema.name(); 87 + return tableSchema.name();
88 } 88 }
89 } 89 }
......
...@@ -24,7 +24,6 @@ import java.util.Map; ...@@ -24,7 +24,6 @@ import java.util.Map;
24 import org.onosproject.ovsdb.rfc.notation.Column; 24 import org.onosproject.ovsdb.rfc.notation.Column;
25 import org.onosproject.ovsdb.rfc.notation.Condition; 25 import org.onosproject.ovsdb.rfc.notation.Condition;
26 import org.onosproject.ovsdb.rfc.notation.Row; 26 import org.onosproject.ovsdb.rfc.notation.Row;
27 -import org.onosproject.ovsdb.rfc.schema.ColumnSchema;
28 import org.onosproject.ovsdb.rfc.schema.TableSchema; 27 import org.onosproject.ovsdb.rfc.schema.TableSchema;
29 import org.onosproject.ovsdb.rfc.utils.TransValueUtil; 28 import org.onosproject.ovsdb.rfc.utils.TransValueUtil;
30 29
...@@ -68,10 +67,10 @@ public final class Update implements Operation { ...@@ -68,10 +67,10 @@ public final class Update implements Operation {
68 private void generateOperationRow(Row row) { 67 private void generateOperationRow(Row row) {
69 Collection<Column> columns = row.getColumns(); 68 Collection<Column> columns = row.getColumns();
70 for (Column column : columns) { 69 for (Column column : columns) {
71 - ColumnSchema columnSchema = column.schema(); 70 + String columnName = column.columnName();
72 Object value = column.data(); 71 Object value = column.data();
73 - Object untypedValue = TransValueUtil.getFormatData(value); 72 + Object formatValue = TransValueUtil.getFormatData(value);
74 - this.row.put(columnSchema.name(), untypedValue); 73 + this.row.put(columnName, formatValue);
75 } 74 }
76 } 75 }
77 76
...@@ -107,6 +106,6 @@ public final class Update implements Operation { ...@@ -107,6 +106,6 @@ public final class Update implements Operation {
107 */ 106 */
108 @JsonProperty 107 @JsonProperty
109 public String getTable() { 108 public String getTable() {
110 - return (tableSchema == null) ? null : tableSchema.name(); 109 + return tableSchema.name();
111 } 110 }
112 } 111 }
......
...@@ -17,8 +17,9 @@ package org.onosproject.ovsdb.rfc.schema.type; ...@@ -17,8 +17,9 @@ package org.onosproject.ovsdb.rfc.schema.type;
17 17
18 import java.util.Set; 18 import java.util.Set;
19 19
20 -import org.onosproject.ovsdb.rfc.error.TypedSchemaException; 20 +import org.onosproject.ovsdb.rfc.error.AbnormalJsonNodeException;
21 import org.onosproject.ovsdb.rfc.schema.type.UuidBaseType.RefType; 21 import org.onosproject.ovsdb.rfc.schema.type.UuidBaseType.RefType;
22 +import org.onosproject.ovsdb.rfc.utils.ObjectMapperUtil;
22 23
23 import com.fasterxml.jackson.databind.JsonNode; 24 import com.fasterxml.jackson.databind.JsonNode;
24 import com.google.common.collect.Sets; 25 import com.google.common.collect.Sets;
...@@ -29,27 +30,29 @@ import com.google.common.collect.Sets; ...@@ -29,27 +30,29 @@ import com.google.common.collect.Sets;
29 public final class BaseTypeFactory { 30 public final class BaseTypeFactory {
30 31
31 /** 32 /**
32 - * Constructs a BaseTypeFactory object. 33 + * Constructs a BaseTypeFactory object. This class should not be
33 - * This class should not be instantiated. 34 + * instantiated.
34 */ 35 */
35 private BaseTypeFactory() { 36 private BaseTypeFactory() {
36 } 37 }
37 38
38 /** 39 /**
39 * Create a BaseType from the JsonNode. 40 * Create a BaseType from the JsonNode.
40 - * @param json the BaseType JsonNode 41 + * @param baseTypeJson the BaseType JsonNode
41 * @param keyorval the key node or value node 42 * @param keyorval the key node or value node
42 * @return BaseType 43 * @return BaseType
43 */ 44 */
44 - public static BaseType getBaseTypeFromJson(JsonNode json, String keyorval) { 45 + public static BaseType getBaseTypeFromJson(JsonNode baseTypeJson, String keyorval) {
45 - if (json.isValueNode()) { 46 + if (baseTypeJson.isValueNode()) {
46 - String type = json.asText().trim(); 47 + String type = baseTypeJson.asText().trim();
47 return fromTypeStr(type); 48 return fromTypeStr(type);
48 } else { 49 } else {
49 - if (!json.has(keyorval)) { 50 + if (!baseTypeJson.has(keyorval)) {
50 - throw new TypedSchemaException("not a type"); 51 + String message = "Abnormal BaseType JsonNode, it should contain 'key' or 'value' node but was not found"
52 + + ObjectMapperUtil.convertToString(baseTypeJson);
53 + throw new AbnormalJsonNodeException(message);
51 } 54 }
52 - return fromJsonNode(json.get(keyorval)); 55 + return fromJsonNode(baseTypeJson.get(keyorval));
53 } 56 }
54 } 57 }
55 58
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
15 */ 15 */
16 package org.onosproject.ovsdb.rfc.schema.type; 16 package org.onosproject.ovsdb.rfc.schema.type;
17 17
18 -import org.onosproject.ovsdb.rfc.error.TypedSchemaException; 18 +import org.onosproject.ovsdb.rfc.error.AbnormalJsonNodeException;
19 import org.onosproject.ovsdb.rfc.utils.ObjectMapperUtil; 19 import org.onosproject.ovsdb.rfc.utils.ObjectMapperUtil;
20 20
21 import com.fasterxml.jackson.databind.JsonNode; 21 import com.fasterxml.jackson.databind.JsonNode;
...@@ -26,8 +26,8 @@ import com.fasterxml.jackson.databind.JsonNode; ...@@ -26,8 +26,8 @@ import com.fasterxml.jackson.databind.JsonNode;
26 public final class ColumnTypeFactory { 26 public final class ColumnTypeFactory {
27 27
28 /** 28 /**
29 - * Constructs a ColumnTypeFactory object. 29 + * Constructs a ColumnTypeFactory object. This class should not be
30 - * This class should not be instantiated. 30 + * instantiated.
31 */ 31 */
32 private ColumnTypeFactory() { 32 private ColumnTypeFactory() {
33 } 33 }
...@@ -54,20 +54,22 @@ public final class ColumnTypeFactory { ...@@ -54,20 +54,22 @@ public final class ColumnTypeFactory {
54 } 54 }
55 55
56 /** 56 /**
57 - * JsonNode like "flow_tables":{"type":{"key":{"maxInteger":254,"minInteger":0,"type": 57 + * JsonNode like
58 + * "flow_tables":{"type":{"key":{"maxInteger":254,"minInteger":0,"type":
58 * "integer"},"min":0,"value":{"type":"uuid","refTable":"Flow_Table"},"max": 59 * "integer"},"min":0,"value":{"type":"uuid","refTable":"Flow_Table"},"max":
59 * "unlimited"}}. 60 * "unlimited"}}.
60 - * @param json the ColumnType JsonNode 61 + * @param columnTypeJson the ColumnType JsonNode
61 * @return ColumnType 62 * @return ColumnType
62 */ 63 */
63 - public static ColumnType getColumnTypeFromJson(JsonNode json) { 64 + public static ColumnType getColumnTypeFromJson(JsonNode columnTypeJson) {
64 - if (!json.isObject() || !json.has(Type.VALUE.type())) { 65 + if (!columnTypeJson.isObject() || !columnTypeJson.has(Type.VALUE.type())) {
65 - return createAtomicColumnType(json); 66 + return createAtomicColumnType(columnTypeJson);
66 - } else if (!json.isValueNode() && json.has(Type.VALUE.type())) { 67 + } else if (!columnTypeJson.isValueNode() && columnTypeJson.has(Type.VALUE.type())) {
67 - return createKeyValuedColumnType(json); 68 + return createKeyValuedColumnType(columnTypeJson);
68 } 69 }
69 - throw new TypedSchemaException("could not find the right column type :" 70 + String message = "Abnormal ColumnType JsonNode, it should be AtomicColumnType or KeyValuedColumnType"
70 - + ObjectMapperUtil.convertToString(json)); 71 + + ObjectMapperUtil.convertToString(columnTypeJson);
72 + throw new AbnormalJsonNodeException(message);
71 } 73 }
72 74
73 /** 75 /**
...@@ -76,12 +78,11 @@ public final class ColumnTypeFactory { ...@@ -76,12 +78,11 @@ public final class ColumnTypeFactory {
76 * @return AtomicColumnType entity 78 * @return AtomicColumnType entity
77 */ 79 */
78 private static AtomicColumnType createAtomicColumnType(JsonNode json) { 80 private static AtomicColumnType createAtomicColumnType(JsonNode json) {
79 - BaseType baseType = BaseTypeFactory 81 + BaseType baseType = BaseTypeFactory.getBaseTypeFromJson(json, Type.KEY.type());
80 - .getBaseTypeFromJson(json, Type.KEY.type());
81 int min = 1; 82 int min = 1;
82 int max = 1; 83 int max = 1;
83 JsonNode node = json.get("min"); 84 JsonNode node = json.get("min");
84 - if (node != null) { 85 + if (node != null && node.isNumber()) {
85 min = node.asInt(); 86 min = node.asInt();
86 } 87 }
87 node = json.get("max"); 88 node = json.get("max");
...@@ -101,14 +102,12 @@ public final class ColumnTypeFactory { ...@@ -101,14 +102,12 @@ public final class ColumnTypeFactory {
101 * @return KeyValuedColumnType entity 102 * @return KeyValuedColumnType entity
102 */ 103 */
103 private static KeyValuedColumnType createKeyValuedColumnType(JsonNode json) { 104 private static KeyValuedColumnType createKeyValuedColumnType(JsonNode json) {
104 - BaseType keyType = BaseTypeFactory.getBaseTypeFromJson(json, 105 + BaseType keyType = BaseTypeFactory.getBaseTypeFromJson(json, Type.KEY.type());
105 - Type.KEY.type()); 106 + BaseType valueType = BaseTypeFactory.getBaseTypeFromJson(json, Type.VALUE.type());
106 - BaseType valueType = BaseTypeFactory
107 - .getBaseTypeFromJson(json, Type.VALUE.type());
108 int min = 1; 107 int min = 1;
109 int max = 1; 108 int max = 1;
110 JsonNode node = json.get("min"); 109 JsonNode node = json.get("min");
111 - if (node != null) { 110 + if (node != null && node.isNumber()) {
112 min = node.asInt(); 111 min = node.asInt();
113 } 112 }
114 node = json.get("max"); 113 node = json.get("max");
......
...@@ -22,7 +22,6 @@ import java.util.Objects; ...@@ -22,7 +22,6 @@ import java.util.Objects;
22 22
23 import org.onosproject.ovsdb.rfc.error.ColumnSchemaNotFoundException; 23 import org.onosproject.ovsdb.rfc.error.ColumnSchemaNotFoundException;
24 import org.onosproject.ovsdb.rfc.error.TableSchemaNotFoundException; 24 import org.onosproject.ovsdb.rfc.error.TableSchemaNotFoundException;
25 -import org.onosproject.ovsdb.rfc.error.TypedSchemaException;
26 import org.onosproject.ovsdb.rfc.error.VersionMismatchException; 25 import org.onosproject.ovsdb.rfc.error.VersionMismatchException;
27 import org.onosproject.ovsdb.rfc.notation.Column; 26 import org.onosproject.ovsdb.rfc.notation.Column;
28 import org.onosproject.ovsdb.rfc.notation.Row; 27 import org.onosproject.ovsdb.rfc.notation.Row;
...@@ -50,17 +49,17 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService { ...@@ -50,17 +49,17 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService {
50 * @param table table name 49 * @param table table name
51 * @param formVersion the initial version 50 * @param formVersion the initial version
52 */ 51 */
53 - public AbstractOvsdbTableService(DatabaseSchema dbSchema, Row row, 52 + public AbstractOvsdbTableService(DatabaseSchema dbSchema, Row row, OvsdbTable table,
54 - OvsdbTable table, VersionNum formVersion) { 53 + VersionNum formVersion) {
55 checkNotNull(dbSchema, "database schema cannot be null"); 54 checkNotNull(dbSchema, "database schema cannot be null");
56 checkNotNull(row, "row cannot be null"); 55 checkNotNull(row, "row cannot be null");
57 checkNotNull(table, "table cannot be null"); 56 checkNotNull(table, "table cannot be null");
58 checkNotNull(formVersion, "the initial version cannot be null"); 57 checkNotNull(formVersion, "the initial version cannot be null");
59 this.dbSchema = dbSchema; 58 this.dbSchema = dbSchema;
59 + row.setTableName(table.tableName());
60 this.row = row; 60 this.row = row;
61 TableDescription tableDesc = new TableDescription(table, formVersion); 61 TableDescription tableDesc = new TableDescription(table, formVersion);
62 this.tableDesc = tableDesc; 62 this.tableDesc = tableDesc;
63 - row.setTableSchema(dbSchema.getTableSchema(table.tableName()));
64 } 63 }
65 64
66 /** 65 /**
...@@ -107,21 +106,20 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService { ...@@ -107,21 +106,20 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService {
107 * @param untilVersion The end of the version 106 * @param untilVersion The end of the version
108 * @throws VersionMismatchException this is a version mismatch exception 107 * @throws VersionMismatchException this is a version mismatch exception
109 */ 108 */
110 - private void checkVersion(String schemaVersion, String fromVersion, 109 + private void checkVersion(String schemaVersion, String fromVersion, String untilVersion) {
111 - String untilVersion) {
112 VersionUtil.versionMatch(fromVersion); 110 VersionUtil.versionMatch(fromVersion);
113 VersionUtil.versionMatch(untilVersion); 111 VersionUtil.versionMatch(untilVersion);
114 if (!fromVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) { 112 if (!fromVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) {
115 if (VersionUtil.versionCompare(schemaVersion, fromVersion) < 0) { 113 if (VersionUtil.versionCompare(schemaVersion, fromVersion) < 0) {
116 - String message = VersionMismatchException 114 + String message = VersionMismatchException.createFromMessage(schemaVersion,
117 - .createFromMessage(schemaVersion, fromVersion); 115 + fromVersion);
118 throw new VersionMismatchException(message); 116 throw new VersionMismatchException(message);
119 } 117 }
120 } 118 }
121 if (!untilVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) { 119 if (!untilVersion.equals(VersionUtil.DEFAULT_VERSION_STRING)) {
122 if (VersionUtil.versionCompare(untilVersion, schemaVersion) < 0) { 120 if (VersionUtil.versionCompare(untilVersion, schemaVersion) < 0) {
123 - String message = VersionMismatchException 121 + String message = VersionMismatchException.createToMessage(schemaVersion,
124 - .createToMessage(schemaVersion, untilVersion); 122 + untilVersion);
125 throw new VersionMismatchException(message); 123 throw new VersionMismatchException(message);
126 } 124 }
127 } 125 }
...@@ -138,13 +136,23 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService { ...@@ -138,13 +136,23 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService {
138 136
139 /** 137 /**
140 * Returns ColumnSchema from TableSchema by column name. 138 * Returns ColumnSchema from TableSchema by column name.
141 - * @param tableSchema TableSchema entity
142 * @param columnName column name 139 * @param columnName column name
143 * @return ColumnSchema 140 * @return ColumnSchema
144 */ 141 */
145 - private ColumnSchema getColumnSchema(TableSchema tableSchema, 142 + private ColumnSchema getColumnSchema(String columnName) {
146 - String columnName) { 143 + TableSchema tableSchema = getTableSchema();
147 - return tableSchema.getColumnSchema(columnName); 144 + if (tableSchema == null) {
145 + String message = TableSchemaNotFoundException.createMessage(tableDesc.name(),
146 + dbSchema.name());
147 + throw new TableSchemaNotFoundException(message);
148 + }
149 + ColumnSchema columnSchema = tableSchema.getColumnSchema(columnName);
150 + if (columnSchema == null) {
151 + String message = ColumnSchemaNotFoundException.createMessage(columnName,
152 + tableSchema.name());
153 + throw new ColumnSchemaNotFoundException(message);
154 + }
155 + return columnSchema;
148 } 156 }
149 157
150 @Override 158 @Override
...@@ -154,26 +162,11 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService { ...@@ -154,26 +162,11 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService {
154 } 162 }
155 String columnName = columnDesc.name(); 163 String columnName = columnDesc.name();
156 checkColumnSchemaVersion(columnDesc); 164 checkColumnSchemaVersion(columnDesc);
157 - if (columnName == null) { 165 + ColumnSchema columnSchema = getColumnSchema(columnName);
158 - throw new TypedSchemaException("Error processing GetColumn : "
159 - + tableDesc.name() + "." + columnDesc.method());
160 - }
161 - TableSchema tableSchema = getTableSchema();
162 - if (tableSchema == null) {
163 - String message = TableSchemaNotFoundException
164 - .createMessage(tableDesc.name(), dbSchema.name());
165 - throw new TableSchemaNotFoundException(message);
166 - }
167 - ColumnSchema columnSchema = getColumnSchema(tableSchema, columnName);
168 - if (columnSchema == null) {
169 - String message = ColumnSchemaNotFoundException
170 - .createMessage(columnName, tableSchema.name());
171 - throw new ColumnSchemaNotFoundException(message);
172 - }
173 if (row == null) { 166 if (row == null) {
174 - return new Column(columnSchema, null); 167 + return null;
175 } 168 }
176 - return row.getColumn(columnSchema); 169 + return row.getColumn(columnSchema.name());
177 } 170 }
178 171
179 @Override 172 @Override
...@@ -183,26 +176,11 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService { ...@@ -183,26 +176,11 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService {
183 } 176 }
184 String columnName = columnDesc.name(); 177 String columnName = columnDesc.name();
185 checkColumnSchemaVersion(columnDesc); 178 checkColumnSchemaVersion(columnDesc);
186 - if (columnName == null) { 179 + ColumnSchema columnSchema = getColumnSchema(columnName);
187 - throw new TypedSchemaException("Error processing GetColumn : " 180 + if (row == null || row.getColumn(columnSchema.name()) == null) {
188 - + tableDesc.name() + "." + columnDesc.method());
189 - }
190 - TableSchema tableSchema = getTableSchema();
191 - if (tableSchema == null) {
192 - String message = TableSchemaNotFoundException
193 - .createMessage(tableDesc.name(), dbSchema.name());
194 - throw new TableSchemaNotFoundException(message);
195 - }
196 - ColumnSchema columnSchema = getColumnSchema(tableSchema, columnName);
197 - if (columnSchema == null) {
198 - String message = ColumnSchemaNotFoundException
199 - .createMessage(columnName, tableSchema.name());
200 - throw new ColumnSchemaNotFoundException(message);
201 - }
202 - if (row == null || row.getColumn(columnSchema) == null) {
203 return null; 181 return null;
204 } 182 }
205 - return row.getColumn(columnSchema).data(); 183 + return row.getColumn(columnSchema.name()).data();
206 } 184 }
207 185
208 @Override 186 @Override
...@@ -212,64 +190,44 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService { ...@@ -212,64 +190,44 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService {
212 } 190 }
213 String columnName = columnDesc.name(); 191 String columnName = columnDesc.name();
214 checkColumnSchemaVersion(columnDesc); 192 checkColumnSchemaVersion(columnDesc);
215 - if (columnName == null) { 193 + ColumnSchema columnSchema = getColumnSchema(columnName);
216 - throw new TypedSchemaException("Unable to locate Column Name for " 194 + Column column = new Column(columnSchema.name(), obj);
217 - + tableDesc.name() + "." + columnDesc.method());
218 - }
219 - TableSchema tableSchema = getTableSchema();
220 - ColumnSchema columnSchema = getColumnSchema(tableSchema, columnName);
221 - Column column = new Column(columnSchema, obj);
222 row.addColumn(columnName, column); 195 row.addColumn(columnName, column);
223 } 196 }
224 197
225 @Override 198 @Override
226 - public Object getTbSchema() { 199 + public UUID getTableUuid() {
227 - if (!isValid()) {
228 - return null;
229 - }
230 - if (dbSchema == null) {
231 - return null;
232 - }
233 - return getTableSchema();
234 - }
235 -
236 - @Override
237 - public UUID getUuid() {
238 if (!isValid()) { 200 if (!isValid()) {
239 return null; 201 return null;
240 } 202 }
241 - ColumnDescription columnDesc = new ColumnDescription("_uuid", 203 + ColumnDescription columnDesc = new ColumnDescription("_uuid", "getTableUuid");
242 - "getTbUuid");
243 return (UUID) getDataHandler(columnDesc); 204 return (UUID) getDataHandler(columnDesc);
244 } 205 }
245 206
246 @Override 207 @Override
247 - public Column getUuidColumn() { 208 + public Column getTableUuidColumn() {
248 if (!isValid()) { 209 if (!isValid()) {
249 return null; 210 return null;
250 } 211 }
251 - ColumnDescription columnDesc = new ColumnDescription("_uuid", 212 + ColumnDescription columnDesc = new ColumnDescription("_uuid", "getTableUuidColumn");
252 - "getTbUuidColumn");
253 return (Column) getColumnHandler(columnDesc); 213 return (Column) getColumnHandler(columnDesc);
254 } 214 }
255 215
256 @Override 216 @Override
257 - public UUID getVersion() { 217 + public UUID getTableVersion() {
258 if (!isValid()) { 218 if (!isValid()) {
259 return null; 219 return null;
260 } 220 }
261 - ColumnDescription columnDesc = new ColumnDescription("_version", 221 + ColumnDescription columnDesc = new ColumnDescription("_version", "getTableVersion");
262 - "getTbVersion");
263 return (UUID) getDataHandler(columnDesc); 222 return (UUID) getDataHandler(columnDesc);
264 } 223 }
265 224
266 @Override 225 @Override
267 - public Column getVersionColumn() { 226 + public Column getTableVersionColumn() {
268 if (!isValid()) { 227 if (!isValid()) {
269 return null; 228 return null;
270 } 229 }
271 - ColumnDescription columnDesc = new ColumnDescription("_version", 230 + ColumnDescription columnDesc = new ColumnDescription("_version", "getTableVersionColumn");
272 - "getTbVersionColumn");
273 return (Column) getColumnHandler(columnDesc); 231 return (Column) getColumnHandler(columnDesc);
274 } 232 }
275 233
...@@ -319,9 +277,8 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService { ...@@ -319,9 +277,8 @@ public abstract class AbstractOvsdbTableService implements OvsdbTableService {
319 277
320 @Override 278 @Override
321 public String toString() { 279 public String toString() {
322 - TableSchema schema = (TableSchema) getTbSchema(); 280 + TableSchema schema = (TableSchema) getTableSchema();
323 String tableName = schema.name(); 281 String tableName = schema.name();
324 - return toStringHelper(this).add("tableName", tableName).add("row", row) 282 + return toStringHelper(this).add("tableName", tableName).add("row", row).toString();
325 - .toString();
326 } 283 }
327 } 284 }
......
...@@ -45,32 +45,26 @@ public interface OvsdbTableService { ...@@ -45,32 +45,26 @@ public interface OvsdbTableService {
45 public void setDataHandler(ColumnDescription columndesc, Object obj); 45 public void setDataHandler(ColumnDescription columndesc, Object obj);
46 46
47 /** 47 /**
48 - * Returns the TableSchema from row.
49 - * @return Object TableSchema
50 - */
51 - public Object getTbSchema();
52 -
53 - /**
54 * Returns UUID which column name is _uuid. 48 * Returns UUID which column name is _uuid.
55 * @return UUID 49 * @return UUID
56 */ 50 */
57 - public UUID getUuid(); 51 + public UUID getTableUuid();
58 52
59 /** 53 /**
60 * Returns UUID Column which column name is _uuid. 54 * Returns UUID Column which column name is _uuid.
61 * @return UUID Column 55 * @return UUID Column
62 */ 56 */
63 - public Column getUuidColumn(); 57 + public Column getTableUuidColumn();
64 58
65 /** 59 /**
66 * Returns UUID which column name is _version. 60 * Returns UUID which column name is _version.
67 * @return UUID 61 * @return UUID
68 */ 62 */
69 - public UUID getVersion(); 63 + public UUID getTableVersion();
70 64
71 /** 65 /**
72 * Returns UUID Column which column name is _version. 66 * Returns UUID Column which column name is _version.
73 * @return UUID Column 67 * @return UUID Column
74 */ 68 */
75 - public Column getVersionColumn(); 69 + public Column getTableVersionColumn();
76 } 70 }
......
...@@ -20,11 +20,9 @@ import java.util.HashMap; ...@@ -20,11 +20,9 @@ import java.util.HashMap;
20 import java.util.Iterator; 20 import java.util.Iterator;
21 import java.util.List; 21 import java.util.List;
22 import java.util.Map; 22 import java.util.Map;
23 -import java.util.Map.Entry;
24 23
25 -import org.onosproject.ovsdb.rfc.error.AbnormalSchemaException; 24 +import org.onosproject.ovsdb.rfc.error.AbnormalJsonNodeException;
26 -import org.onosproject.ovsdb.rfc.error.JsonParsingException; 25 +import org.onosproject.ovsdb.rfc.error.UnsupportedException;
27 -import org.onosproject.ovsdb.rfc.error.UnknownResultException;
28 import org.onosproject.ovsdb.rfc.jsonrpc.Callback; 26 import org.onosproject.ovsdb.rfc.jsonrpc.Callback;
29 import org.onosproject.ovsdb.rfc.jsonrpc.JsonRpcResponse; 27 import org.onosproject.ovsdb.rfc.jsonrpc.JsonRpcResponse;
30 import org.onosproject.ovsdb.rfc.message.OperationResult; 28 import org.onosproject.ovsdb.rfc.message.OperationResult;
...@@ -54,90 +52,77 @@ import com.google.common.collect.Maps; ...@@ -54,90 +52,77 @@ import com.google.common.collect.Maps;
54 */ 52 */
55 public final class FromJsonUtil { 53 public final class FromJsonUtil {
56 54
57 - private static final Logger log = LoggerFactory 55 + private static final Logger log = LoggerFactory.getLogger(FromJsonUtil.class);
58 - .getLogger(FromJsonUtil.class);
59 56
60 /** 57 /**
61 * Constructs a FromJsonUtil object. Utility classes should not have a 58 * Constructs a FromJsonUtil object. Utility classes should not have a
62 - * public or default constructor, otherwise IDE will compile unsuccessfully. This 59 + * public or default constructor, otherwise IDE will compile unsuccessfully.
63 - * class should not be instantiated. 60 + * This class should not be instantiated.
64 */ 61 */
65 private FromJsonUtil() { 62 private FromJsonUtil() {
66 } 63 }
67 64
68 /** 65 /**
69 - * convert JsonNode into DatabaseSchema. 66 + * Verify whether the jsonNode is normal.
70 - * @param dbName database name 67 + * @param jsonNode JsonNode
71 - * @param json the JsonNode of get_schema result 68 + * @param nodeStr the node name of JsonNode
72 - * @return DatabaseSchema
73 - * @throws JsonParsingException this is a JsonNode parse exception
74 */ 69 */
75 - public static DatabaseSchema jsonNodeToDbSchema(String dbName, JsonNode json) { 70 + private static void validateJsonNode(JsonNode jsonNode, String nodeStr) {
76 - if (!json.isObject() || !json.has("tables")) { 71 + if (!jsonNode.isObject() || !jsonNode.has(nodeStr)) {
77 - throw new JsonParsingException( 72 + String message = "Abnormal DatabaseSchema JsonNode, it should contain " + nodeStr
78 - "bad DatabaseSchema root, expected \"tables\" as child but was not found"); 73 + + " node but was not found";
74 + throw new AbnormalJsonNodeException(message);
79 } 75 }
80 - if (!json.isObject() || !json.has("version")) {
81 - throw new JsonParsingException(
82 - "bad DatabaseSchema root, expected \"version\" as child but was not found");
83 } 76 }
84 77
85 - String dbVersion = json.get("version").asText(); 78 + /**
86 - 79 + * convert JsonNode into DatabaseSchema.
80 + * @param dbName database name
81 + * @param dbJson the JsonNode of get_schema result
82 + * @return DatabaseSchema
83 + * @throws AbnormalJsonNodeException this is an abnormal JsonNode exception
84 + */
85 + public static DatabaseSchema jsonNodeToDbSchema(String dbName, JsonNode dbJson) {
86 + validateJsonNode(dbJson, "tables");
87 + validateJsonNode(dbJson, "version");
88 + String dbVersion = dbJson.get("version").asText();
87 Map<String, TableSchema> tables = new HashMap<>(); 89 Map<String, TableSchema> tables = new HashMap<>();
88 - for (Iterator<Map.Entry<String, JsonNode>> iter = json.get("tables") 90 + Iterator<Map.Entry<String, JsonNode>> tablesIter = dbJson.get("tables").fields();
89 - .fields(); iter.hasNext();) { 91 + while (tablesIter.hasNext()) {
90 - Map.Entry<String, JsonNode> table = iter.next(); 92 + Map.Entry<String, JsonNode> table = tablesIter.next();
91 - tables.put(table.getKey(), 93 + tables.put(table.getKey(), jsonNodeToTableSchema(table.getKey(), table.getValue()));
92 - jsonNodeToTableSchema(table.getKey(), table.getValue()));
93 } 94 }
94 -
95 return new DatabaseSchema(dbName, dbVersion, tables); 95 return new DatabaseSchema(dbName, dbVersion, tables);
96 } 96 }
97 97
98 /** 98 /**
99 * convert JsonNode into TableSchema. 99 * convert JsonNode into TableSchema.
100 * @param tableName table name 100 * @param tableName table name
101 - * @param json table JsonNode 101 + * @param tableJson table JsonNode
102 * @return TableSchema 102 * @return TableSchema
103 - * @throws AbnormalSchemaException this is an abnormal schema exception 103 + * @throws AbnormalJsonNodeException this is an abnormal JsonNode exception
104 */ 104 */
105 - private static TableSchema jsonNodeToTableSchema(String tableName, 105 + private static TableSchema jsonNodeToTableSchema(String tableName, JsonNode tableJson) {
106 - JsonNode json) { 106 + validateJsonNode(tableJson, "columns");
107 -
108 - if (!json.isObject() || !json.has("columns")) {
109 - throw new AbnormalSchemaException(
110 - "bad tableschema root, expected \"columns\" as child");
111 - }
112 -
113 Map<String, ColumnSchema> columns = new HashMap<>(); 107 Map<String, ColumnSchema> columns = new HashMap<>();
114 - for (Iterator<Map.Entry<String, JsonNode>> iter = json.get("columns") 108 + Iterator<Map.Entry<String, JsonNode>> columnsIter = tableJson.get("columns").fields();
115 - .fields(); iter.hasNext();) { 109 + while (columnsIter.hasNext()) {
116 - Map.Entry<String, JsonNode> column = iter.next(); 110 + Map.Entry<String, JsonNode> column = columnsIter.next();
117 - columns.put(column.getKey(), 111 + columns.put(column.getKey(), jsonNodeToColumnSchema(column.getKey(), column.getValue()));
118 - jsonNodeToColumnSchema(column.getKey(),
119 - column.getValue()));
120 } 112 }
121 -
122 return new TableSchema(tableName, columns); 113 return new TableSchema(tableName, columns);
123 } 114 }
124 115
125 /** 116 /**
126 * convert JsonNode into ColumnSchema. 117 * convert JsonNode into ColumnSchema.
127 * @param name column name 118 * @param name column name
128 - * @param json JsonNode 119 + * @param columnJson column JsonNode
129 * @return ColumnSchema 120 * @return ColumnSchema
130 - * @throws AbnormalSchemaException this is an abnormal schema exception 121 + * @throws AbnormalJsonNodeException this is an abnormal JsonNode exception
131 */ 122 */
132 - private static ColumnSchema jsonNodeToColumnSchema(String name, 123 + private static ColumnSchema jsonNodeToColumnSchema(String name, JsonNode columnJson) {
133 - JsonNode json) { 124 + validateJsonNode(columnJson, "type");
134 - if (!json.isObject() || !json.has("type")) { 125 + return new ColumnSchema(name, ColumnTypeFactory.getColumnTypeFromJson(columnJson
135 - throw new AbnormalSchemaException(
136 - "bad column schema root, expected \"type\" as child");
137 - }
138 -
139 - return new ColumnSchema(name,
140 - ColumnTypeFactory.getColumnTypeFromJson(json
141 .get("type"))); 126 .get("type")));
142 } 127 }
143 128
...@@ -147,10 +132,9 @@ public final class FromJsonUtil { ...@@ -147,10 +132,9 @@ public final class FromJsonUtil {
147 * @param methodName the method name of methods in OvsdbRPC class 132 * @param methodName the method name of methods in OvsdbRPC class
148 * @param objectMapper ObjectMapper entity 133 * @param objectMapper ObjectMapper entity
149 * @return Object 134 * @return Object
150 - * @throws UnknownResultException this is an unknown result exception 135 + * @throws UnsupportedException this is an unsupported exception
151 */ 136 */
152 - private static Object convertResultType(JsonNode resultJsonNode, 137 + private static Object convertResultType(JsonNode resultJsonNode, String methodName,
153 - String methodName,
154 ObjectMapper objectMapper) { 138 ObjectMapper objectMapper) {
155 switch (methodName) { 139 switch (methodName) {
156 case "getSchema": 140 case "getSchema":
...@@ -158,18 +142,13 @@ public final class FromJsonUtil { ...@@ -158,18 +142,13 @@ public final class FromJsonUtil {
158 return resultJsonNode; 142 return resultJsonNode;
159 case "echo": 143 case "echo":
160 case "listDbs": 144 case "listDbs":
161 - return objectMapper 145 + return objectMapper.convertValue(resultJsonNode, objectMapper.getTypeFactory()
162 - .convertValue(resultJsonNode, objectMapper.getTypeFactory()
163 .constructParametricType(List.class, String.class)); 146 .constructParametricType(List.class, String.class));
164 case "transact": 147 case "transact":
165 - return objectMapper 148 + return objectMapper.convertValue(resultJsonNode, objectMapper.getTypeFactory()
166 - .convertValue(resultJsonNode, 149 + .constructParametricType(List.class, JsonNode.class));
167 - objectMapper
168 - .getTypeFactory()
169 - .constructParametricType(List.class,
170 - JsonNode.class));
171 default: 150 default:
172 - throw new UnknownResultException("Don't know how to handle this"); 151 + throw new UnsupportedException("does not support this rpc method" + methodName);
173 } 152 }
174 } 153 }
175 154
...@@ -183,11 +162,10 @@ public final class FromJsonUtil { ...@@ -183,11 +162,10 @@ public final class FromJsonUtil {
183 ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(); 162 ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper();
184 JsonNode error = jsonNode.get("error"); 163 JsonNode error = jsonNode.get("error");
185 if (error != null && !error.isNull()) { 164 if (error != null && !error.isNull()) {
186 - log.error("Error : {}", error.toString()); 165 + log.error("jsonRpcResponse error : {}", error.toString());
187 } 166 }
188 JsonNode resultJsonNode = jsonNode.get("result"); 167 JsonNode resultJsonNode = jsonNode.get("result");
189 - Object result = convertResultType(resultJsonNode, methodName, 168 + Object result = convertResultType(resultJsonNode, methodName, objectMapper);
190 - objectMapper);
191 return result; 169 return result;
192 } 170 }
193 171
...@@ -196,10 +174,9 @@ public final class FromJsonUtil { ...@@ -196,10 +174,9 @@ public final class FromJsonUtil {
196 * notification, then call callback function. 174 * notification, then call callback function.
197 * @param jsonNode the result JsonNode 175 * @param jsonNode the result JsonNode
198 * @param callback the callback function 176 * @param callback the callback function
199 - * @throws UnknownResultException this is an unknown result exception 177 + * @throws UnsupportedException this is an unsupported exception
200 */ 178 */
201 - public static void jsonCallbackRequestParser(JsonNode jsonNode, 179 + public static void jsonCallbackRequestParser(JsonNode jsonNode, Callback callback) {
202 - Callback callback) {
203 ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(); 180 ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper();
204 JsonNode params = jsonNode.get("params"); 181 JsonNode params = jsonNode.get("params");
205 Object param = null; 182 Object param = null;
...@@ -210,8 +187,7 @@ public final class FromJsonUtil { ...@@ -210,8 +187,7 @@ public final class FromJsonUtil {
210 callback.update((UpdateNotification) param); 187 callback.update((UpdateNotification) param);
211 break; 188 break;
212 default: 189 default:
213 - throw new UnknownResultException("Cannot handle this method: " 190 + throw new UnsupportedException("does not support this callback method: " + methodName);
214 - + methodName);
215 } 191 }
216 } 192 }
217 193
...@@ -224,12 +200,11 @@ public final class FromJsonUtil { ...@@ -224,12 +200,11 @@ public final class FromJsonUtil {
224 ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(); 200 ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper();
225 String str = null; 201 String str = null;
226 if (jsonNode.get("method").asText().equals("echo")) { 202 if (jsonNode.get("method").asText().equals("echo")) {
227 - JsonRpcResponse response = new JsonRpcResponse(jsonNode.get("id") 203 + JsonRpcResponse response = new JsonRpcResponse(jsonNode.get("id").asText());
228 - .asText());
229 try { 204 try {
230 str = objectMapper.writeValueAsString(response); 205 str = objectMapper.writeValueAsString(response);
231 } catch (JsonProcessingException e) { 206 } catch (JsonProcessingException e) {
232 - log.error("JsonProcessingException while converting JsonNode into string ", e); 207 + log.error("JsonProcessingException while converting JsonNode into string: ", e);
233 } 208 }
234 } 209 }
235 return str; 210 return str;
...@@ -250,8 +225,7 @@ public final class FromJsonUtil { ...@@ -250,8 +225,7 @@ public final class FromJsonUtil {
250 Operation operation = operations.get(i); 225 Operation operation = operations.get(i);
251 if (jsonNode != null && jsonNode.size() > 0) { 226 if (jsonNode != null && jsonNode.size() > 0) {
252 if (i >= operations.size() || operation.getOp() != "select") { 227 if (i >= operations.size() || operation.getOp() != "select") {
253 - OperationResult or = objectMapper.convertValue(jsonNode, 228 + OperationResult or = objectMapper.convertValue(jsonNode, OperationResult.class);
254 - OperationResult.class);
255 operationResults.add(or); 229 operationResults.add(or);
256 } else { 230 } else {
257 List<Row> rows = createRows(operation.getTableSchema(), jsonNode); 231 List<Row> rows = createRows(operation.getTableSchema(), jsonNode);
...@@ -269,8 +243,8 @@ public final class FromJsonUtil { ...@@ -269,8 +243,8 @@ public final class FromJsonUtil {
269 * @param rowsNode JsonNode 243 * @param rowsNode JsonNode
270 * @return ArrayList<Row> the List of Row 244 * @return ArrayList<Row> the List of Row
271 */ 245 */
272 - private static ArrayList<Row> createRows(TableSchema tableSchema, 246 + private static ArrayList<Row> createRows(TableSchema tableSchema, JsonNode rowsNode) {
273 - JsonNode rowsNode) { 247 + validateJsonNode(rowsNode, "rows");
274 ArrayList<Row> rows = Lists.newArrayList(); 248 ArrayList<Row> rows = Lists.newArrayList();
275 for (JsonNode rowNode : rowsNode.get("rows")) { 249 for (JsonNode rowNode : rowsNode.get("rows")) {
276 rows.add(createRow(tableSchema, rowNode)); 250 rows.add(createRow(tableSchema, rowNode));
...@@ -284,15 +258,13 @@ public final class FromJsonUtil { ...@@ -284,15 +258,13 @@ public final class FromJsonUtil {
284 * @param dbSchema DatabaseSchema entity 258 * @param dbSchema DatabaseSchema entity
285 * @return TableUpdates 259 * @return TableUpdates
286 */ 260 */
287 - public static TableUpdates jsonNodeToTableUpdates(JsonNode updatesJson, 261 + public static TableUpdates jsonNodeToTableUpdates(JsonNode updatesJson, DatabaseSchema dbSchema) {
288 - DatabaseSchema dbSchema) {
289 Map<String, TableUpdate> tableUpdateMap = Maps.newHashMap(); 262 Map<String, TableUpdate> tableUpdateMap = Maps.newHashMap();
290 - for (Iterator<Map.Entry<String, JsonNode>> itr = updatesJson.fields(); itr 263 + Iterator<Map.Entry<String, JsonNode>> tableUpdatesItr = updatesJson.fields();
291 - .hasNext();) { 264 + while (tableUpdatesItr.hasNext()) {
292 - Map.Entry<String, JsonNode> entry = itr.next(); 265 + Map.Entry<String, JsonNode> entry = tableUpdatesItr.next();
293 TableSchema tableSchema = dbSchema.getTableSchema(entry.getKey()); 266 TableSchema tableSchema = dbSchema.getTableSchema(entry.getKey());
294 - TableUpdate tableUpdate = jsonNodeToTableUpdate(tableSchema, 267 + TableUpdate tableUpdate = jsonNodeToTableUpdate(tableSchema, entry.getValue());
295 - entry.getValue());
296 tableUpdateMap.put(entry.getKey(), tableUpdate); 268 tableUpdateMap.put(entry.getKey(), tableUpdate);
297 } 269 }
298 return TableUpdates.tableUpdates(tableUpdateMap); 270 return TableUpdates.tableUpdates(tableUpdateMap);
...@@ -301,19 +273,18 @@ public final class FromJsonUtil { ...@@ -301,19 +273,18 @@ public final class FromJsonUtil {
301 /** 273 /**
302 * convert the params of Update Notification into TableUpdate. 274 * convert the params of Update Notification into TableUpdate.
303 * @param tableSchema TableSchema entity 275 * @param tableSchema TableSchema entity
304 - * @param value the table-update in params of Update Notification 276 + * @param updateJson the table-update in params of Update Notification
305 * @return TableUpdate 277 * @return TableUpdate
306 */ 278 */
307 - public static TableUpdate jsonNodeToTableUpdate(TableSchema tableSchema, 279 + public static TableUpdate jsonNodeToTableUpdate(TableSchema tableSchema, JsonNode updateJson) {
308 - JsonNode value) {
309 Map<UUID, RowUpdate> rows = Maps.newHashMap(); 280 Map<UUID, RowUpdate> rows = Maps.newHashMap();
310 - Iterator<Entry<String, JsonNode>> fields = value.fields(); 281 + Iterator<Map.Entry<String, JsonNode>> tableUpdateItr = updateJson.fields();
311 - while (fields.hasNext()) { 282 + while (tableUpdateItr.hasNext()) {
312 - Map.Entry<String, JsonNode> idOldNew = fields.next(); 283 + Map.Entry<String, JsonNode> oldNewRow = tableUpdateItr.next();
313 - String uuidStr = idOldNew.getKey(); 284 + String uuidStr = oldNewRow.getKey();
314 UUID uuid = UUID.uuid(uuidStr); 285 UUID uuid = UUID.uuid(uuidStr);
315 - JsonNode newR = idOldNew.getValue().get("new"); 286 + JsonNode newR = oldNewRow.getValue().get("new");
316 - JsonNode oldR = idOldNew.getValue().get("old"); 287 + JsonNode oldR = oldNewRow.getValue().get("old");
317 Row newRow = newR != null ? createRow(tableSchema, newR) : null; 288 Row newRow = newR != null ? createRow(tableSchema, newR) : null;
318 Row oldRow = oldR != null ? createRow(tableSchema, oldR) : null; 289 Row oldRow = oldR != null ? createRow(tableSchema, oldR) : null;
319 RowUpdate rowUpdate = new RowUpdate(uuid, oldRow, newRow); 290 RowUpdate rowUpdate = new RowUpdate(uuid, oldRow, newRow);
...@@ -329,17 +300,21 @@ public final class FromJsonUtil { ...@@ -329,17 +300,21 @@ public final class FromJsonUtil {
329 * @return Row 300 * @return Row
330 */ 301 */
331 private static Row createRow(TableSchema tableSchema, JsonNode rowNode) { 302 private static Row createRow(TableSchema tableSchema, JsonNode rowNode) {
332 - List<Column> columns = Lists.newArrayList(); 303 + if (tableSchema == null) {
333 - for (Iterator<Map.Entry<String, JsonNode>> iter = rowNode.fields(); iter 304 + return null;
334 - .hasNext();) { 305 + }
335 - Map.Entry<String, JsonNode> next = iter.next(); 306 + Map<String, Column> columns = Maps.newHashMap();
336 - ColumnSchema schema = tableSchema.getColumnSchema(next.getKey()); 307 + Iterator<Map.Entry<String, JsonNode>> rowIter = rowNode.fields();
337 - if (schema != null) { 308 + while (rowIter.hasNext()) {
338 - Object o = TransValueUtil.getValueFromJson(next.getValue(), schema.type()); 309 + Map.Entry<String, JsonNode> next = rowIter.next();
339 - columns.add(new Column(schema, o)); 310 + ColumnSchema columnSchema = tableSchema.getColumnSchema(next.getKey());
311 + if (columnSchema != null) {
312 + String columnName = columnSchema.name();
313 + Object obj = TransValueUtil.getValueFromJson(next.getValue(), columnSchema.type());
314 + columns.put(columnName, new Column(columnName, obj));
340 } 315 }
341 } 316 }
342 - return new Row(tableSchema, columns); 317 + return new Row(tableSchema.name(), columns);
343 } 318 }
344 319
345 } 320 }
......
...@@ -22,7 +22,7 @@ import java.io.IOException; ...@@ -22,7 +22,7 @@ import java.io.IOException;
22 import java.util.List; 22 import java.util.List;
23 import java.util.Stack; 23 import java.util.Stack;
24 24
25 -import org.onosproject.ovsdb.rfc.error.UnsupportedEncodingException; 25 +import org.onosproject.ovsdb.rfc.error.UnsupportedException;
26 import org.onosproject.ovsdb.rfc.jsonrpc.JsonReadContext; 26 import org.onosproject.ovsdb.rfc.jsonrpc.JsonReadContext;
27 27
28 import com.fasterxml.jackson.core.JsonEncoding; 28 import com.fasterxml.jackson.core.JsonEncoding;
...@@ -55,8 +55,7 @@ public final class JsonRpcReaderUtil { ...@@ -55,8 +55,7 @@ public final class JsonRpcReaderUtil {
55 * @throws IOException IOException 55 * @throws IOException IOException
56 * @throws JsonParseException JsonParseException 56 * @throws JsonParseException JsonParseException
57 */ 57 */
58 - public static void readToJsonNode(ByteBuf in, List<Object> out, 58 + public static void readToJsonNode(ByteBuf in, List<Object> out, JsonReadContext jrContext)
59 - JsonReadContext jrContext)
60 throws JsonParseException, IOException { 59 throws JsonParseException, IOException {
61 int lastReadBytes = jrContext.getLastReadBytes(); 60 int lastReadBytes = jrContext.getLastReadBytes();
62 if (lastReadBytes == 0) { 61 if (lastReadBytes == 0) {
...@@ -97,8 +96,7 @@ public final class JsonRpcReaderUtil { ...@@ -97,8 +96,7 @@ public final class JsonRpcReaderUtil {
97 96
98 if (jrContext.isStartMatch() && bufStack.isEmpty()) { 97 if (jrContext.isStartMatch() && bufStack.isEmpty()) {
99 ByteBuf buf = in.readSlice(i - in.readerIndex() + 1); 98 ByteBuf buf = in.readSlice(i - in.readerIndex() + 1);
100 - JsonParser jf = new MappingJsonFactory() 99 + JsonParser jf = new MappingJsonFactory().createParser(new ByteBufInputStream(buf));
101 - .createParser(new ByteBufInputStream(buf));
102 JsonNode jsonNode = jf.readValueAsTree(); 100 JsonNode jsonNode = jf.readValueAsTree();
103 out.add(jsonNode); 101 out.add(jsonNode);
104 lastReadBytes = 0; 102 lastReadBytes = 0;
...@@ -145,8 +143,7 @@ public final class JsonRpcReaderUtil { ...@@ -145,8 +143,7 @@ public final class JsonRpcReaderUtil {
145 * Check whether the encoding is valid. 143 * Check whether the encoding is valid.
146 * @param in input of bytes 144 * @param in input of bytes
147 * @throws IOException this is an IO exception 145 * @throws IOException this is an IO exception
148 - * @throws UnsupportedEncodingException this is an unsupported encode 146 + * @throws UnsupportedException this is an unsupported exception
149 - * exception
150 */ 147 */
151 private static void checkEncoding(ByteBuf in) throws IOException { 148 private static void checkEncoding(ByteBuf in) throws IOException {
152 int inputStart = 0; 149 int inputStart = 0;
...@@ -154,18 +151,14 @@ public final class JsonRpcReaderUtil { ...@@ -154,18 +151,14 @@ public final class JsonRpcReaderUtil {
154 fliterCharaters(in); 151 fliterCharaters(in);
155 byte[] buff = new byte[4]; 152 byte[] buff = new byte[4];
156 in.getBytes(in.readerIndex(), buff); 153 in.getBytes(in.readerIndex(), buff);
157 - ByteSourceJsonBootstrapper strapper = new ByteSourceJsonBootstrapper( 154 + ByteSourceJsonBootstrapper strapper = new ByteSourceJsonBootstrapper(new IOContext(new BufferRecycler(),
158 - new IOContext(
159 - new BufferRecycler(),
160 null, 155 null,
161 false), 156 false),
162 - buff, 157 + buff, inputStart,
163 - inputStart,
164 inputLength); 158 inputLength);
165 JsonEncoding jsonEncoding = strapper.detectEncoding(); 159 JsonEncoding jsonEncoding = strapper.detectEncoding();
166 if (!JsonEncoding.UTF8.equals(jsonEncoding)) { 160 if (!JsonEncoding.UTF8.equals(jsonEncoding)) {
167 - throw new UnsupportedEncodingException( 161 + throw new UnsupportedException("Only UTF-8 encoding is supported.");
168 - "Only UTF-8 encoding is supported.");
169 } 162 }
170 } 163 }
171 164
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 package org.onosproject.ovsdb.rfc.utils; 16 package org.onosproject.ovsdb.rfc.utils;
17 17
18 import java.util.List; 18 import java.util.List;
19 +import java.util.Map;
19 import java.util.Set; 20 import java.util.Set;
20 21
21 import org.onosproject.ovsdb.rfc.message.MonitorRequest; 22 import org.onosproject.ovsdb.rfc.message.MonitorRequest;
...@@ -24,20 +25,18 @@ import org.onosproject.ovsdb.rfc.operations.Operation; ...@@ -24,20 +25,18 @@ import org.onosproject.ovsdb.rfc.operations.Operation;
24 import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; 25 import org.onosproject.ovsdb.rfc.schema.DatabaseSchema;
25 import org.onosproject.ovsdb.rfc.schema.TableSchema; 26 import org.onosproject.ovsdb.rfc.schema.TableSchema;
26 27
27 -import com.google.common.base.Function;
28 -import com.google.common.collect.ImmutableMap;
29 import com.google.common.collect.Lists; 28 import com.google.common.collect.Lists;
30 import com.google.common.collect.Maps; 29 import com.google.common.collect.Maps;
31 30
32 /** 31 /**
33 - * Params utility class. Params of the request object, refer to RFC7047's Section 32 + * Params utility class. Params of the request object, refer to RFC7047's
34 - * 4.1. 33 + * Section 4.1.
35 */ 34 */
36 public final class ParamUtil { 35 public final class ParamUtil {
37 36
38 /** 37 /**
39 - * Constructs a ParamUtil object. Utility classes should not have a 38 + * Constructs a ParamUtil object. Utility classes should not have a public
40 - * public or default constructor, otherwise IDE will compile unsuccessfully. This 39 + * or default constructor, otherwise IDE will compile unsuccessfully. This
41 * class should not be instantiated. 40 * class should not be instantiated.
42 */ 41 */
43 private ParamUtil() { 42 private ParamUtil() {
...@@ -52,8 +51,7 @@ public final class ParamUtil { ...@@ -52,8 +51,7 @@ public final class ParamUtil {
52 String tableName = tableSchema.name(); 51 String tableName = tableSchema.name();
53 Set<String> columns = tableSchema.getColumnNames(); 52 Set<String> columns = tableSchema.getColumnNames();
54 MonitorSelect select = new MonitorSelect(true, true, true, true); 53 MonitorSelect select = new MonitorSelect(true, true, true, true);
55 - MonitorRequest monitorRequest = new MonitorRequest(tableName, columns, 54 + MonitorRequest monitorRequest = new MonitorRequest(tableName, columns, select);
56 - select);
57 return monitorRequest; 55 return monitorRequest;
58 } 56 }
59 57
...@@ -63,24 +61,15 @@ public final class ParamUtil { ...@@ -63,24 +61,15 @@ public final class ParamUtil {
63 * @param dbSchema DatabaseSchema entity 61 * @param dbSchema DatabaseSchema entity
64 * @return List of Object, the params of monitor request 62 * @return List of Object, the params of monitor request
65 */ 63 */
66 - public static List<Object> getMonitorParams(String monotorId, 64 + public static List<Object> getMonitorParams(String monotorId, DatabaseSchema dbSchema) {
67 - DatabaseSchema dbSchema) {
68 Set<String> tables = dbSchema.getTableNames(); 65 Set<String> tables = dbSchema.getTableNames();
69 - List<MonitorRequest> monitorRequests = Lists.newArrayList(); 66 + Map<String, MonitorRequest> mrMap = Maps.newHashMap();
70 for (String tableName : tables) { 67 for (String tableName : tables) {
71 TableSchema tableSchema = dbSchema.getTableSchema(tableName); 68 TableSchema tableSchema = dbSchema.getTableSchema(tableName);
72 - monitorRequests.add(getAllColumnsMonitorRequest(tableSchema)); 69 + MonitorRequest monitorRequest = getAllColumnsMonitorRequest(tableSchema);
70 + mrMap.put(tableName, monitorRequest);
73 } 71 }
74 - ImmutableMap<String, MonitorRequest> reqMap = Maps 72 + return Lists.newArrayList(dbSchema.name(), monotorId, mrMap);
75 - .uniqueIndex(monitorRequests,
76 - new Function<MonitorRequest, String>() {
77 - @Override
78 - public String apply(MonitorRequest input) {
79 - return input.getTableName();
80 - }
81 - });
82 - return Lists.<Object>newArrayList(dbSchema.name(), monotorId,
83 - reqMap);
84 } 73 }
85 74
86 /** 75 /**
...@@ -89,10 +78,7 @@ public final class ParamUtil { ...@@ -89,10 +78,7 @@ public final class ParamUtil {
89 * @param operations operation*, refer to RFC7047's Section 4.1.3. 78 * @param operations operation*, refer to RFC7047's Section 4.1.3.
90 * @return List of Object, the params of transact request 79 * @return List of Object, the params of transact request
91 */ 80 */
92 - public static List<Object> getTransactParams(DatabaseSchema dbSchema, 81 + public static List<Object> getTransactParams(DatabaseSchema dbSchema, List<Operation> operations) {
93 - List<Operation> operations) { 82 + return Lists.newArrayList(dbSchema.name(), operations);
94 - List<Object> lists = Lists.newArrayList((Object) dbSchema.name());
95 - lists.addAll(operations);
96 - return lists;
97 } 83 }
98 } 84 }
......
...@@ -87,33 +87,29 @@ public final class TransValueUtil { ...@@ -87,33 +87,29 @@ public final class TransValueUtil {
87 * @param atoType AtomicColumnType entity 87 * @param atoType AtomicColumnType entity
88 * @return Object OvsdbSet or the value of JsonNode 88 * @return Object OvsdbSet or the value of JsonNode
89 */ 89 */
90 - private static Object getValueFromAtoType(JsonNode json, 90 + private static Object getValueFromAtoType(JsonNode json, AtomicColumnType atoType) {
91 - AtomicColumnType atoType) {
92 BaseType baseType = atoType.baseType(); 91 BaseType baseType = atoType.baseType();
93 // If "min" or "max" is not specified, If "min" is not 1 or "max" is not 92 // If "min" or "max" is not specified, If "min" is not 1 or "max" is not
94 - // 1, 93 + // 1, or both, and "value" is not specified, the type is a set of scalar
95 - // or both, and "value" is not specified, the type is a set of scalar 94 + // type "key". Refer to RFC 7047, Section 3.2 <type>.
96 - // type "key".
97 - // Refer to RFC 7047, Section 3.2 <type>.
98 if (atoType.min() != atoType.max()) { 95 if (atoType.min() != atoType.max()) {
99 Set set = Sets.newHashSet(); 96 Set set = Sets.newHashSet();
100 if (json.isArray()) { 97 if (json.isArray()) {
101 if (json.size() == 2) { 98 if (json.size() == 2) {
102 - if (json.get(0).isTextual() 99 + if (json.get(0).isTextual() && "set".equals(json.get(0).asText())) {
103 - && "set".equals(json.get(0).asText())) {
104 for (JsonNode node : json.get(1)) { 100 for (JsonNode node : json.get(1)) {
105 - set.add(TransValueUtil.transToValue(node, baseType)); 101 + set.add(transToValue(node, baseType));
106 } 102 }
107 } else { 103 } else {
108 - set.add(TransValueUtil.transToValue(json, baseType)); 104 + set.add(transToValue(json, baseType));
109 } 105 }
110 } 106 }
111 } else { 107 } else {
112 - set.add(TransValueUtil.transToValue(json, baseType)); 108 + set.add(transToValue(json, baseType));
113 } 109 }
114 return OvsdbSet.ovsdbSet(set); 110 return OvsdbSet.ovsdbSet(set);
115 } else { 111 } else {
116 - return TransValueUtil.transToValue(json, baseType); 112 + return transToValue(json, baseType);
117 } 113 }
118 } 114 }
119 115
...@@ -123,19 +119,15 @@ public final class TransValueUtil { ...@@ -123,19 +119,15 @@ public final class TransValueUtil {
123 * @param kvType KeyValuedColumnType entity 119 * @param kvType KeyValuedColumnType entity
124 * @return Object OvsdbMap 120 * @return Object OvsdbMap
125 */ 121 */
126 - private static Object getValueFromKvType(JsonNode json, 122 + private static Object getValueFromKvType(JsonNode json, KeyValuedColumnType kvType) {
127 - KeyValuedColumnType kvType) {
128 if (json.isArray()) { 123 if (json.isArray()) {
129 if (json.size() == 2) { 124 if (json.size() == 2) {
130 - if (json.get(0).isTextual() 125 + if (json.get(0).isTextual() && "map".equals(json.get(0).asText())) {
131 - && "map".equals(json.get(0).asText())) {
132 Map map = Maps.newHashMap(); 126 Map map = Maps.newHashMap();
133 for (JsonNode pairNode : json.get(1)) { 127 for (JsonNode pairNode : json.get(1)) {
134 if (pairNode.isArray() && json.size() == 2) { 128 if (pairNode.isArray() && json.size() == 2) {
135 - Object key = TransValueUtil.transToValue(pairNode 129 + Object key = transToValue(pairNode.get(0), kvType.keyType());
136 - .get(0), kvType.keyType()); 130 + Object value = transToValue(pairNode.get(1), kvType.valueType());
137 - Object value = TransValueUtil.transToValue(pairNode
138 - .get(1), kvType.valueType());
139 map.put(key, value); 131 map.put(key, value);
140 } 132 }
141 } 133 }
...@@ -166,14 +158,13 @@ public final class TransValueUtil { ...@@ -166,14 +158,13 @@ public final class TransValueUtil {
166 if (valueNode.isArray()) { 158 if (valueNode.isArray()) {
167 if (valueNode.size() == 2) { 159 if (valueNode.size() == 2) {
168 if (valueNode.get(0).isTextual() 160 if (valueNode.get(0).isTextual()
169 - && "uuid".equals(valueNode.get(0).asText()) 161 + && ("uuid".equals(valueNode.get(0).asText()) || "named-uuid"
170 - || "named-uuid".equals(valueNode.get(0).asText())) { 162 + .equals(valueNode.get(0).asText()))) {
171 return UUID.uuid(valueNode.get(1).asText()); 163 return UUID.uuid(valueNode.get(1).asText());
172 } 164 }
173 } 165 }
174 } else { 166 } else {
175 - return new RefTableRow(((UuidBaseType) baseType).getRefTable(), 167 + return new RefTableRow(((UuidBaseType) baseType).getRefTable(), valueNode);
176 - valueNode);
177 } 168 }
178 } 169 }
179 return null; 170 return null;
......