lishuai
Committed by Gerrit Code Review

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

Change-Id: I000f2b802420e4f47ce320f6ed021049bd2fd83e
Showing 23 changed files with 189 additions and 451 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 }
......
...@@ -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;
......