Refactoring for better package organization and other changes. 99/5899/3
authorAshwin Raveendran <ashw7n@gmail.com>
Fri, 4 Apr 2014 01:21:42 +0000 (18:21 -0700)
committerAshwin Raveendran <ashw7n@gmail.com>
Tue, 8 Apr 2014 03:39:38 +0000 (20:39 -0700)
The main interface is renamed to OvsDBClient to represent the library's
intention of being used against any OVS capable device. Fixed methods
to be all asynchronous.

Change-Id: I9d6e0c8cc53e0bcf188d572c655c7a28e3e0dae2
Signed-off-by: Ashwin Raveendran <ashw7n@gmail.com>
44 files changed:
ovsdb/src/main/java/org/opendaylight/ovsdb/OpenVswitch.java [deleted file]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/OvsDBClient.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/OvsDBClientImpl.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/database/ColumnSchema.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/InsertSerializer.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/OvsdbRPC.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/TransactBuilder.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/TransactResponse.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/Mutation.java
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/Row.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/AbortOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/AbortOperation.java with 86% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/AssertOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/AssertOperation.java with 86% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/CommentOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/CommentOperation.java with 86% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/CommitOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/CommitOperation.java with 86% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/ConditionalOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/ConditionalOperation.java with 77% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/DeleteOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/DeleteOperation.java with 95% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Insert.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/Insert.java with 88% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/InsertOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/InsertOperation.java with 96% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/MutateOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/MutateOperation.java with 96% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Operation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/Operation.java with 94% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/OperationResult.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/OperationResult.java with 97% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Operations.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/SelectOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/SelectOperation.java with 96% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/TransactionBuilder.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Update.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/UpdateOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/UpdateOperation.java with 96% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/WaitOperation.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/WaitOperation.java with 86% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Where.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/ATableSchema.java [new file with mode: 0644]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/BaseType.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/BaseType.java with 94% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/ColumnSchema.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/ColumnSchema.java with 93% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/ColumnType.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/ColumnType.java with 96% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/DatabaseSchema.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/DatabaseSchema.java with 71% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/TableSchema.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/TableSchema.java with 75% similarity]
ovsdb/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java
ovsdb/src/test/java/org/opendaylight/ovsdb/OpenVswitchTestIT.java [deleted file]
ovsdb/src/test/java/org/opendaylight/ovsdb/lib/OvsDBClientTestIT.java [new file with mode: 0644]
ovsdb/src/test/java/org/opendaylight/ovsdb/lib/OvsDBClientTestITTyped.java [moved from ovsdb/src/test/java/org/opendaylight/ovsdb/OpenVswitchTestITTyped.java with 70% similarity]
ovsdb/src/test/java/org/opendaylight/ovsdb/lib/message/OVSDBNettyFactoryIT.java
ovsdb/src/test/java/org/opendaylight/ovsdb/lib/schema/OvsDBSchemaTest.java [moved from ovsdb/src/test/java/org/opendaylight/ovsdb/lib/meta/OvsDBSchemaTest.java with 96% similarity]
ovsdb/src/test/java/org/opendaylight/ovsdb/lib/schema/temp/Reference.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/temp/Reference.java with 87% similarity]
ovsdb/src/test/java/org/opendaylight/ovsdb/lib/schema/temp/SchemaObjs.java [moved from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/temp/SchemaObjs.java with 65% similarity]
ovsdb/src/test/java/org/opendaylight/ovsdb/lib/schema/test_schema.json [moved from ovsdb/src/test/java/org/opendaylight/ovsdb/lib/meta/test_schema.json with 100% similarity]
ovsdb/src/test/resources/org/opendaylight/ovsdb/lib/schema/test_schema.json [moved from ovsdb/src/test/resources/org/opendaylight/ovsdb/lib/meta/test_schema.json with 100% similarity]

diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/OpenVswitch.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/OpenVswitch.java
deleted file mode 100644 (file)
index 242fa42..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2014 EBay Software Foundation
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Authors : Ashwin Raveendran
- */
-package org.opendaylight.ovsdb;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.util.concurrent.ListenableFuture;
-import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
-import org.opendaylight.ovsdb.lib.message.TransactBuilder;
-import org.opendaylight.ovsdb.lib.message.operations.ConditionalOperation;
-import org.opendaylight.ovsdb.lib.message.operations.Operation;
-import org.opendaylight.ovsdb.lib.message.operations.OperationResult;
-import org.opendaylight.ovsdb.lib.meta.ColumnSchema;
-import org.opendaylight.ovsdb.lib.meta.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.meta.TableSchema;
-import org.opendaylight.ovsdb.lib.notation.Condition;
-import org.opendaylight.ovsdb.lib.notation.Function;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.concurrent.ExecutorService;
-
-
-public class OpenVswitch {
-
-    ExecutorService executorService;
-    String schemaName;
-    OvsdbRPC rpc;
-    volatile DatabaseSchema schema;
-    Queue<Throwable> exceptions;
-
-    public OpenVswitch(OvsdbRPC rpc, ExecutorService executorService) {
-        this.rpc = rpc;
-        this.executorService = executorService;
-    }
-
-    public OpenVswitch() {
-    }
-
-
-    public void populateSchemaFromDevice() {
-        final ListenableFuture<JsonNode> fOfSchema = rpc.get_schema(Lists.newArrayList(DatabaseSchema.OPEN_VSWITCH_SCHEMA_NAME));
-        fOfSchema.addListener(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    JsonNode jsonNode = fOfSchema.get();
-                    schema =  DatabaseSchema.fromJson(jsonNode);
-
-                } catch (Exception e) {
-                    exceptions.add(e);
-                }
-            }
-        }, executorService);
-    }
-
-    public Transaction transact(){
-        return new Transaction(this);
-    }
-
-    public ListenableFuture<List<OperationResult>> transact(List<Operation> operations) {
-
-        //todo, we may not need transactionbuilder if we can have JSON objects
-        TransactBuilder builder = new TransactBuilder();
-        for (Operation o : operations) {
-           builder.addOperation(o);
-        }
-
-        ListenableFuture<List<OperationResult>> transact = rpc.transact(builder);
-        return transact;
-    }
-
-    public boolean isReady(long timeout) {
-        //todo implement timeout
-        return null != schema;
-    }
-
-    public DatabaseSchema schema() {
-        return schema;
-    }
-
-
-    public static class Transaction {
-
-        private  DatabaseSchema eDatabaseSchema;
-        OpenVswitch ovs;
-        ArrayList<Operation> operations = Lists.newArrayList();
-
-        public Transaction(OpenVswitch ovs) {
-            this.ovs = ovs;
-        }
-
-        public Transaction(DatabaseSchema eDatabaseSchema) {
-            this.eDatabaseSchema = eDatabaseSchema;
-        }
-
-        public Transaction add(Operation operation) {
-            operations.add(operation);
-            return this;
-        }
-
-        public List<Operation> build() {
-            return operations;
-        }
-
-        public ListenableFuture<List<OperationResult>> execute() {
-            return ovs.transact(operations);
-        }
-    }
-
-    public static class Update<E extends TableSchema<E>> extends Operation<E> implements ConditionalOperation {
-
-        Map<String, Object> row = Maps.newHashMap();
-        String uuid;
-        //Where where;
-        List<Condition> where = Lists.newArrayList();
-
-        private String uuidName;
-
-        public Update(TableSchema<E> schema) {
-            super(schema, "update");
-        }
-
-        public Update<E> on(TableSchema schema){
-            return this;
-        }
-
-        public <T extends TableSchema<T>, D> Update<E> set(ColumnSchema<T, D> columnSchema, D value) {
-            columnSchema.validate(value);
-            this.row.put(columnSchema.getName(), value);
-            return this;
-        }
-
-        public Where where(Condition condition) {
-            return new Where(this);
-        }
-
-        public String getUuid() {
-            return uuid;
-        }
-
-        public void setUuid(String uuid) {
-            this.uuid = uuid;
-        }
-
-        public String getUuidName() {
-            return uuidName;
-        }
-
-        public void setUuidName(String uuidName) {
-            this.uuidName = uuidName;
-        }
-
-        public Map<String, Object> getRow() {
-            return row;
-        }
-
-        public void setRow(Map<String, Object> row) {
-            this.row = row;
-        }
-
-        @Override
-        public void addCondition(Condition condition) {
-            this.where.add(condition);
-        }
-
-        public List<Condition> getWhere() {
-            return where;
-        }
-
-        public void setWhere(List<Condition> where) {
-            this.where = where;
-        }
-    }
-
-
-    public static class Where {
-
-        @JsonIgnore
-        ConditionalOperation operation;
-
-        public Where() { }  public Where(ConditionalOperation operation) {
-            this.operation = operation;
-        }
-
-        public Where condition(Condition condition) {
-            operation.addCondition(condition);
-            return this;
-        }
-
-        public Where condition(ColumnSchema column, Function function, Object value) {
-            this.condition(new Condition(column.getName(), function, value));
-            return this;
-        }
-
-        public Where and(ColumnSchema column, Function function, Object value) {
-            condition(column, function, value);
-            return this;
-        }
-
-        public Where and(Condition condition) {
-           condition(condition);
-            return this;
-        }
-
-        public Operation operation() {
-            return (Operation) this.operation;
-        }
-
-    }
-
-
-    public static class Operations {
-        public static Operations op = new Operations();
-
-        public <E extends TableSchema<E>> Insert<E> insert(TableSchema<E> schema) {
-            return new Insert<>(schema);
-        }
-
-        public  <E extends TableSchema<E>> Update<E> update(TableSchema<E> schema) {
-            return new Update<>(schema);
-        }
-    }
-
-    public ExecutorService getExecutorService() {
-        return executorService;
-    }
-
-    public void setExecutorService(ExecutorService executorService) {
-        this.executorService = executorService;
-    }
-
-    public String getSchemaName() {
-        return schemaName;
-    }
-
-    public void setSchemaName(String schemaName) {
-        this.schemaName = schemaName;
-    }
-
-    public OvsdbRPC getRpc() {
-        return rpc;
-    }
-
-    public void setRpc(OvsdbRPC rpc) {
-        this.rpc = rpc;
-    }
-
-    public DatabaseSchema getSchema() {
-        return schema;
-    }
-
-    public void setSchema(DatabaseSchema schema) {
-        this.schema = schema;
-    }
-
-    public Queue<Throwable> getExceptions() {
-        return exceptions;
-    }
-
-    public void setExceptions(Queue<Throwable> exceptions) {
-        this.exceptions = exceptions;
-    }
-
-}
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/OvsDBClient.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/OvsDBClient.java
new file mode 100644 (file)
index 0000000..31f63e1
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ *
+ *  * Copyright (C) 2014 EBay Software Foundation
+ *  *
+ *  * This program and the accompanying materials are made available under the
+ *  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ *  * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ *  * Authors : Ashwin Raveendran
+ *
+ */
+
+package org.opendaylight.ovsdb.lib;
+
+import com.google.common.util.concurrent.ListenableFuture;
+import org.opendaylight.ovsdb.lib.operations.Operation;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
+import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+
+import java.util.List;
+
+/**
+ * The main interface to interact with a device speaking OVSDB protocol in an
+ * asynchronous fashion and hence most operations return a Future object representing
+ * the eventual response data from the remote.
+ */
+public interface OvsDBClient {
+
+    String OPEN_VSWITCH_SCHEMA = "Open_vSwitch";
+
+    /**
+     * Gets the list of database names exposed by this OVSDB capable device
+     * @return list of database names
+     */
+    ListenableFuture<List<String>> getDatabases();
+
+    /**
+     * Asynchronosly returns the schema object for a specific database
+     * @param database name of the database schema
+     * @param cacheResult if the results be cached by this instance
+     * @return DatabaseSchema future
+     */
+    ListenableFuture<DatabaseSchema> getSchema(String database, boolean cacheResult);
+
+    /**
+     * Allows for a mini DSL way of collecting the transactions to be executed against
+     * the ovsdb instance.
+     * @return TransactionBuilder
+     */
+    TransactionBuilder transactBuilder();
+
+    /**
+     * Execute the list of operations in a single Transactions. Similar to the
+     * transactBuilder() method
+     * @param operations List of operations that needs to be part of a transact call
+     * @return Future object representing the result of the transaction.
+     */
+    ListenableFuture<List<OperationResult>> transact(List<Operation> operations);
+
+}
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/OvsDBClientImpl.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/OvsDBClientImpl.java
new file mode 100644 (file)
index 0000000..f7a199d
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2014 EBay Software Foundation
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Authors : Ashwin Raveendran
+ */
+package org.opendaylight.ovsdb.lib;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
+import org.opendaylight.ovsdb.lib.message.TransactBuilder;
+import org.opendaylight.ovsdb.lib.operations.Operation;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
+import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.concurrent.ExecutorService;
+
+
+public class OvsDBClientImpl implements OvsDBClient {
+
+    ExecutorService executorService;
+    String schemaName;
+    OvsdbRPC rpc;
+    Map<String, DatabaseSchema> schema = Maps.newHashMap();
+    Queue<Throwable> exceptions;
+
+    public OvsDBClientImpl(OvsdbRPC rpc, ExecutorService executorService) {
+        this.rpc = rpc;
+        this.executorService = executorService;
+    }
+
+    public OvsDBClientImpl() {
+    }
+
+    @Override
+    public ListenableFuture<List<OperationResult>> transact(List<Operation> operations) {
+
+        //todo, we may not need transactionbuilder if we can have JSON objects
+        TransactBuilder builder = new TransactBuilder();
+        for (Operation o : operations) {
+            builder.addOperation(o);
+        }
+
+        ListenableFuture<List<OperationResult>> transact = rpc.transact(builder);
+        return transact;
+    }
+
+    @Override
+    public TransactionBuilder transactBuilder() {
+        return new TransactionBuilder(this);
+    }
+
+
+    public boolean isReady(long timeout) {
+        //todo implement timeout
+        return null != schema;
+    }
+
+    @Override
+    public ListenableFuture<List<String>> getDatabases() {
+        return rpc.list_dbs();
+    }
+
+    @Override
+    public ListenableFuture<DatabaseSchema> getSchema(final String database, final boolean cacheResult) {
+
+        DatabaseSchema databaseSchema = schema.get(database);
+
+        if (databaseSchema == null) {
+            ListenableFuture<Map<String, DatabaseSchema>> schemaFromDevice = getSchemaFromDevice(Lists.newArrayList(database));
+
+            final SettableFuture<DatabaseSchema> future = SettableFuture.create();
+            Futures.addCallback(schemaFromDevice, new FutureCallback<Map<String, DatabaseSchema>>() {
+                @Override
+                public void onSuccess(Map<String, DatabaseSchema> result) {
+                    if (result.containsKey(database)) {
+                       DatabaseSchema s = result.get(database);
+                       if (cacheResult) {
+                         OvsDBClientImpl.this.schema.put(database, s);
+                       }
+                       future.set(s);
+                    } else {
+                        future.set(null);
+                    }
+                }
+
+                @Override
+                public void onFailure(Throwable t) {
+                    //todo: should wrap
+                    future.setException(t);
+                }
+            });
+          return future;
+
+        } else {
+            return Futures.immediateFuture(databaseSchema);
+        }
+    }
+
+    private ListenableFuture<Map<String, DatabaseSchema>> getSchemaFromDevice(final List<String> dbNames) {
+        Map<String, DatabaseSchema> schema = Maps.newHashMap();
+        SettableFuture<Map<String, DatabaseSchema>> future = SettableFuture.create();
+        _populateSchema(dbNames, schema, future);
+        return future;
+    }
+
+    private void _populateSchema(final List<String> dbNames,
+                                                       final Map<String, DatabaseSchema> schema,
+                                                       final SettableFuture<Map<String, DatabaseSchema>> sfuture) {
+
+        if (dbNames == null || dbNames.isEmpty()) {
+            return;
+        }
+
+        Futures.transform(rpc.get_schema(Lists.newArrayList(dbNames.get(0))),
+                new com.google.common.base.Function<JsonNode, Void>() {
+            @Override
+            public Void apply(JsonNode jsonNode) {
+                try{
+                schema.put(dbNames.get(0), DatabaseSchema.fromJson(jsonNode));
+                if (schema.size() > 1 && !sfuture.isCancelled()) {
+                    _populateSchema(dbNames.subList(1, dbNames.size()), schema, sfuture);
+                } else if (schema.size() == 1) {
+                    sfuture.set(schema);
+                }
+            } catch (Throwable e) {
+               sfuture.setException(e);
+            }
+            return null;
+        }});
+    }
+
+    public void setRpc(OvsdbRPC rpc) {
+        this.rpc = rpc;
+    }
+
+    public Queue<Throwable> getExceptions() {
+        return exceptions;
+    }
+
+}
index 5684675b64b599e4022f51a17bc7e37a579961a1..19e1cc5e6725b76ce0bc8a665a36d8d4988b3aba 100644 (file)
@@ -10,8 +10,6 @@
 package org.opendaylight.ovsdb.lib.database;\r
 \r
 import com.fasterxml.jackson.annotation.JsonProperty;\r
-import org.opendaylight.ovsdb.lib.notation.Condition;\r
-import org.opendaylight.ovsdb.lib.notation.Function;\r
 \r
 public class ColumnSchema {\r
 \r
@@ -46,21 +44,6 @@ public class ColumnSchema {
         this.name = name;\r
     }\r
 \r
-    public Condition opEqual(String some) {\r
-        return new Condition(this.getName(), Function.EQUALS, some);\r
-    }\r
-\r
-    public Condition opGreaterThan(Object val) {\r
-        return new Condition(this.getName(), Function.GREATER_THAN, val);\r
-    }\r
-\r
-    public Condition opLesserThan(int val) {\r
-        return new Condition(this.getName(), Function.GREATER_THAN, val);\r
-    }\r
-\r
-    public Condition opLesserThanOrEquals(Object val) {\r
-        return new Condition(this.getName(), Function.LESS_THAN_OR_EQUALS, val);\r
-    }\r
 \r
     @Override\r
     public String toString() {\r
index 421aa39f30ee47932d2de036ad6aee1014ab9e78..84b8d7cf1f2e95b091e50aad075e8a0213bc7908 100644 (file)
@@ -11,7 +11,7 @@ package org.opendaylight.ovsdb.lib.message;
 
 import java.io.IOException;
 
-import org.opendaylight.ovsdb.lib.message.operations.InsertOperation;
+import org.opendaylight.ovsdb.lib.operations.InsertOperation;
 
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.core.JsonProcessingException;
index 68475e9715f76dc2c7c561d2f03175d06103b8ba..440bda9110a144b58ca52c754357691d120c7608 100644 (file)
@@ -15,7 +15,7 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.util.concurrent.ListenableFuture;
 
 import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.ovsdb.lib.message.operations.OperationResult;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
 
 public interface OvsdbRPC {
     public static final String REGISTER_CALLBACK_METHOD = "registerCallback";
@@ -43,6 +43,7 @@ public interface OvsdbRPC {
 
     public boolean registerCallback(Callback callback);
 
+
     public static interface Callback {
         public void update(Node node, UpdateNotification upadateNotification);
         public void locked(Node node, List<String> ids);
index 26ffe3bad38e78dc55348dc27a4a2d8a63a3e397..344c1b6584caeb8849d9dbfaf0b3b49997a66d14 100644 (file)
@@ -12,7 +12,7 @@ package org.opendaylight.ovsdb.lib.message;
 import com.google.common.collect.Lists;
 
 import org.opendaylight.ovsdb.lib.jsonrpc.Params;
-import org.opendaylight.ovsdb.lib.message.operations.Operation;
+import org.opendaylight.ovsdb.lib.operations.Operation;
 import java.util.List;
 
 public class TransactBuilder implements Params {
index 279ea60d8a1960ce265e7e2d77a6044bd14ad71c..1ea92e4ab874a4d35f79670b611f4081479c48aa 100644 (file)
@@ -11,7 +11,7 @@ package org.opendaylight.ovsdb.lib.message;
 
 import java.util.ArrayList;
 
-import org.opendaylight.ovsdb.lib.message.operations.OperationResult;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
 
 public class TransactResponse extends Response {
     ArrayList<OperationResult> result;
index 5d5556c02aaa06f04e4c5c49ee5ac9381038d2e2..ab7a68cd2b3af6e5a2ae7955a43d4ffd27358185 100644 (file)
@@ -12,8 +12,8 @@ package org.opendaylight.ovsdb.lib.notation;
 import org.opendaylight.ovsdb.lib.notation.json.MutationSerializer;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-@JsonSerialize(using = MutationSerializer.class)
 
+@JsonSerialize(using = MutationSerializer.class)
 public class Mutation {
     String column;
     Mutator mutator;
@@ -25,21 +25,27 @@ public class Mutation {
         this.mutator = mutator;
         this.value = value;
     }
+
     public String getColumn() {
         return column;
     }
+
     public void setColumn(String column) {
         this.column = column;
     }
+
     public Mutator getMutator() {
         return mutator;
     }
+
     public void setMutator(Mutator mutator) {
         this.mutator = mutator;
     }
+
     public Object getValue() {
         return value;
     }
+
     public void setValue(Object value) {
         this.value = value;
     }
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/Row.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/notation/Row.java
new file mode 100644 (file)
index 0000000..06844ac
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ *
+ *  * Copyright (C) 2014 EBay Software Foundation
+ *  *
+ *  * This program and the accompanying materials are made available under the
+ *  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ *  * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ *  * Authors : Ashwin Raveendran
+ *
+ */
+
+package org.opendaylight.ovsdb.lib.notation;
+
+import org.opendaylight.ovsdb.lib.database.ColumnSchema;
+
+import java.util.Map;
+
+public class Row {
+    private Map<String, ColumnSchema> columnSchema;
+    private Map<String, Object> columns;
+
+
+
+}
similarity index 86%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/AbortOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/AbortOperation.java
index f6f485332f842eae10c5356c32926b47626273eb..b219fe9517386e4ad744ca1b430cc9f10b283b2d 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 public class AbortOperation extends Operation {
 
similarity index 86%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/AssertOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/AssertOperation.java
index 0c9bde3041fa3e8e5935b0a1c3599c8c683cec1e..c83ab8473edfdb97f8a338ceb8a5fedaf6a2cf66 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 public class AssertOperation extends Operation {
 
similarity index 86%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/CommentOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/CommentOperation.java
index cf38369c54ce24e3a5cf1b329fe18aa0435839e8..90035d4a2449db8f430fbfe74a6d2015f5d36bf3 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 public class CommentOperation extends Operation {
 
similarity index 86%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/CommitOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/CommitOperation.java
index e717ca2a5d13fe37ccc38e17168a467fa785cc9f..fec4e1f77945b6eaf95968710803639ab780e8ea 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 public class CommitOperation extends Operation {
 
similarity index 77%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/ConditionalOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/ConditionalOperation.java
index fae76a77a451999424759ab2551f9d70933e205b..fc10cce4d492cd6e37b676882d27448058b47335 100644 (file)
@@ -7,12 +7,12 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 import org.opendaylight.ovsdb.lib.notation.Condition;
 
 /**
- * Represents an Operation type that accepts acondition, for e.g Update, Select etc
+ * Represents an Operation type that accepts a condition, for e.g Update, Select etc
  */
 public interface ConditionalOperation {
 
similarity index 95%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/DeleteOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/DeleteOperation.java
index 612a5ebd1f43d89731bd27c0419936c4062a6948..6cafeb2fcf9a3f8098f3b65916048a51ced4841d 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 import java.util.List;
 
similarity index 88%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/Insert.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Insert.java
index 1ed6dd6993abe15d3eadc6841afc127857eac439..8a34a57b14bf4386d197cf46899a6a73e0e32423 100644 (file)
@@ -7,13 +7,12 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb;
+package org.opendaylight.ovsdb.lib.operations;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.common.collect.Maps;
-import org.opendaylight.ovsdb.lib.message.operations.Operation;
-import org.opendaylight.ovsdb.lib.meta.ColumnSchema;
-import org.opendaylight.ovsdb.lib.meta.TableSchema;
+import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
+import org.opendaylight.ovsdb.lib.schema.TableSchema;
 
 import java.util.Map;
 
@@ -74,6 +73,4 @@ public class Insert<E extends TableSchema<E>> extends Operation<E> {
         this.row = row;
     }
 
-
-
 }
similarity index 96%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/InsertOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/InsertOperation.java
index 57e507739aed0d4c27f5fc1e4e747d91c1b4af82..2c3c63969ad04f29ce1c25b4d60d1ce179a60bc0 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 import org.opendaylight.ovsdb.lib.table.internal.Table;
 
similarity index 96%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/MutateOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/MutateOperation.java
index 31b7c3c0358214140c43180cdf801f156a216cb4..24d99d9e3b3577d491a42c3a2a295e30edbb315c 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 import java.util.List;
 
similarity index 94%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/Operation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Operation.java
index 1330bb94c4d77ce0d7d1fa96c3102163e98b3597..1949d5db068611c7e53312d1f5406d7cc8de20db 100644 (file)
@@ -7,11 +7,11 @@
  *
  * Authors : Madhu Venugopal, Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import org.opendaylight.ovsdb.lib.meta.TableSchema;
+import org.opendaylight.ovsdb.lib.schema.TableSchema;
 
 public abstract class Operation<E extends TableSchema<E>> {
 
similarity index 97%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/OperationResult.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/OperationResult.java
index e019394894b497ebf61052d2352d5a52f388be9e..1c1b98eee7b21a6aa197e38f3cb51dba019dae87 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Operations.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Operations.java
new file mode 100644 (file)
index 0000000..18b07c7
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *
+ *  * Copyright (C) 2014 EBay Software Foundation
+ *  *
+ *  * This program and the accompanying materials are made available under the
+ *  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ *  * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ *  * Authors : Ashwin Raveendran
+ *
+ */
+
+package org.opendaylight.ovsdb.lib.operations;
+
+import org.opendaylight.ovsdb.lib.schema.TableSchema;
+
+public class Operations {
+    public static Operations op = new Operations();
+
+    public <E extends TableSchema<E>> Insert<E> insert(TableSchema<E> schema) {
+        return new Insert<>(schema);
+    }
+
+    public  <E extends TableSchema<E>> Update<E> update(TableSchema<E> schema) {
+        return new Update<>(schema);
+    }
+
+
+}
similarity index 96%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/SelectOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/SelectOperation.java
index edcfb2a949a9ebe2ead66f038c9c9359e6b46a86..5857e3372ba4c081f959b6203fdfdd73a12580ed 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 import java.util.List;
 
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/TransactionBuilder.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/TransactionBuilder.java
new file mode 100644 (file)
index 0000000..df6460f
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ *
+ *  * Copyright (C) 2014 EBay Software Foundation
+ *  *
+ *  * This program and the accompanying materials are made available under the
+ *  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ *  * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ *  * Authors : Ashwin Raveendran
+ *
+ */
+
+package org.opendaylight.ovsdb.lib.operations;
+
+import com.google.common.collect.Lists;
+import com.google.common.util.concurrent.ListenableFuture;
+import org.opendaylight.ovsdb.lib.OvsDBClientImpl;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TransactionBuilder {
+
+    private DatabaseSchema eDatabaseSchema;
+    OvsDBClientImpl ovs;
+    ArrayList<Operation> operations = Lists.newArrayList();
+
+    public TransactionBuilder(OvsDBClientImpl ovs) {
+        this.ovs = ovs;
+    }
+
+    public TransactionBuilder(DatabaseSchema eDatabaseSchema) {
+        this.eDatabaseSchema = eDatabaseSchema;
+    }
+
+    public TransactionBuilder add(Operation operation) {
+        operations.add(operation);
+        return this;
+    }
+
+    public List<Operation> build() {
+        return operations;
+    }
+
+    public ListenableFuture<List<OperationResult>> execute() {
+        return ovs.transact(operations);
+    }
+}
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Update.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Update.java
new file mode 100644 (file)
index 0000000..29c5d2d
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ *
+ *  * Copyright (C) 2014 EBay Software Foundation
+ *  *
+ *  * This program and the accompanying materials are made available under the
+ *  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ *  * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ *  * Authors : Ashwin Raveendran
+ *
+ */
+
+package org.opendaylight.ovsdb.lib.operations;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import org.opendaylight.ovsdb.lib.notation.Condition;
+import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
+import org.opendaylight.ovsdb.lib.schema.TableSchema;
+
+import java.util.List;
+import java.util.Map;
+
+public class Update<E extends TableSchema<E>> extends Operation<E> implements ConditionalOperation {
+
+    Map<String, Object> row = Maps.newHashMap();
+    String uuid;
+    //Where where;
+    List<Condition> where = Lists.newArrayList();
+
+    private String uuidName;
+
+    public Update(TableSchema<E> schema) {
+        super(schema, "update");
+    }
+
+    public Update<E> on(TableSchema schema){
+        return this;
+    }
+
+    public <T extends TableSchema<T>, D> Update<E> set(ColumnSchema<T, D> columnSchema, D value) {
+        columnSchema.validate(value);
+        this.row.put(columnSchema.getName(), value);
+        return this;
+    }
+
+    public Where where(Condition condition) {
+        return new Where(this);
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getUuidName() {
+        return uuidName;
+    }
+
+    public void setUuidName(String uuidName) {
+        this.uuidName = uuidName;
+    }
+
+    public Map<String, Object> getRow() {
+        return row;
+    }
+
+    public void setRow(Map<String, Object> row) {
+        this.row = row;
+    }
+
+    @Override
+    public void addCondition(Condition condition) {
+        this.where.add(condition);
+    }
+
+    public List<Condition> getWhere() {
+        return where;
+    }
+
+    public void setWhere(List<Condition> where) {
+        this.where = where;
+    }
+}
similarity index 96%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/UpdateOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/UpdateOperation.java
index e676f613ae1d20d54f2e50f1db33f38a3d6af875..800d4843ba54dd323d6e5fae55e51bd39cd6d024 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 import java.util.List;
 
similarity index 86%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/message/operations/WaitOperation.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/WaitOperation.java
index 49ecd5bf6b58e184ec26cd4fcc0af31733bab509..c152c82a4458cd539c1b036eb6b82a88b7b029b6 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Madhu Venugopal
  */
-package org.opendaylight.ovsdb.lib.message.operations;
+package org.opendaylight.ovsdb.lib.operations;
 
 public class WaitOperation extends Operation {
 
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Where.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/operations/Where.java
new file mode 100644 (file)
index 0000000..2791521
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ *
+ *  * Copyright (C) 2014 EBay Software Foundation
+ *  *
+ *  * This program and the accompanying materials are made available under the
+ *  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ *  * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ *  * Authors : Ashwin Raveendran
+ *
+ */
+
+package org.opendaylight.ovsdb.lib.operations;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import org.opendaylight.ovsdb.lib.notation.Condition;
+import org.opendaylight.ovsdb.lib.notation.Function;
+import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
+
+public class Where {
+
+    @JsonIgnore
+    ConditionalOperation operation;
+
+    public Where() {
+    }
+
+    public Where(ConditionalOperation operation) {
+        this.operation = operation;
+    }
+
+    public Where condition(Condition condition) {
+        operation.addCondition(condition);
+        return this;
+    }
+
+    public Where condition(ColumnSchema column, Function function, Object value) {
+        this.condition(new Condition(column.getName(), function, value));
+        return this;
+    }
+
+    public Where and(ColumnSchema column, Function function, Object value) {
+        condition(column, function, value);
+        return this;
+    }
+
+    public Where and(Condition condition) {
+        condition(condition);
+        return this;
+    }
+
+    public Operation operation() {
+        return (Operation) this.operation;
+    }
+
+}
diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/ATableSchema.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/ATableSchema.java
new file mode 100644 (file)
index 0000000..e6da17a
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ *
+ *  * Copyright (C) 2014 EBay Software Foundation
+ *  *
+ *  * This program and the accompanying materials are made available under the
+ *  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ *  * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ *  * Authors : Ashwin Raveendran
+ *
+ */
+
+package org.opendaylight.ovsdb.lib.schema;
+
+public class ATableSchema extends TableSchema<ATableSchema> {
+}
similarity index 94%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/BaseType.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/BaseType.java
index 88a9a75d07f7be5bbc2340823e14e8c59482963e..c900b38cad6b95ba5ce18cad8c2f97dc86e686c5 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.meta;
+package org.opendaylight.ovsdb.lib.schema;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.collect.Sets;
@@ -135,6 +135,11 @@ public abstract class BaseType<E extends BaseType<E>> {
         public void setEnums(Set<Integer> enums) {
             this.enums = enums;
         }
+
+        @Override
+        public String toString() {
+            return "IntegerBaseType";
+        }
     }
 
     public static class RealBaseType extends BaseType<RealBaseType> {
@@ -196,7 +201,10 @@ public abstract class BaseType<E extends BaseType<E>> {
             this.enums = enums;
         }
 
-
+        @Override
+        public String toString() {
+            return "RealBaseType";
+        }
     }
 
 
@@ -210,6 +218,11 @@ public abstract class BaseType<E extends BaseType<E>> {
         protected void getConstraints(BaseType baseType, JsonNode node) {
             //no op
         }
+
+        @Override
+        public String toString() {
+            return "BooleanBaseType";
+        }
     }
 
     public static class StringBaseType extends BaseType<StringBaseType> {
@@ -271,6 +284,11 @@ public abstract class BaseType<E extends BaseType<E>> {
         public void setEnums(Set<String> enums) {
             this.enums = enums;
         }
+
+        public String toString() {
+            return "StringBaseType";
+        }
+
     }
 
 
@@ -311,5 +329,9 @@ public abstract class BaseType<E extends BaseType<E>> {
         public void setRefType(RefType refType) {
             this.refType = refType;
         }
+
+        public String toString() {
+            return "UuidBaseType";
+        }
     }
 }
similarity index 93%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/ColumnSchema.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/ColumnSchema.java
index c13ce72d83bb90dcccd6dad4303d4ab203a25a14..d620c502a03bfdcf571b11c8606508498556ef72 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.meta;
+package org.opendaylight.ovsdb.lib.schema;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import org.opendaylight.ovsdb.lib.notation.Condition;
@@ -40,6 +40,8 @@ public class ColumnSchema<E extends TableSchema<E>, D> {
 
     public ColumnType getType() { return type; }
 
+    // --- Operations on the column ----------//
+
     public Condition opEqual(D data) {
         return new Condition(this.getName(), Function.EQUALS, data);
     }
@@ -56,6 +58,8 @@ public class ColumnSchema<E extends TableSchema<E>, D> {
         return new Condition(this.getName(), Function.LESS_THAN_OR_EQUALS, data);
     }
 
+    // --- Operations on the column ----------//:w
+
     @Override
     public String toString() {
         return "ColumnType [type=" + type + ", ephemeral=" + ephemeral
similarity index 96%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/ColumnType.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/ColumnType.java
index 4fde88c5602c38ad6bdfc80cd8295cdbd9ce8cdb..353c1e8aa0fd6c3e2f25d051d3b75203feb93d5e 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.meta;
+package org.opendaylight.ovsdb.lib.schema;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import org.opendaylight.ovsdb.lib.jsonrpc.JsonUtils;
@@ -32,6 +32,10 @@ public abstract class ColumnType {
         this.baseType = baseType;
     }
 
+    public BaseType getBaseType() {
+        return baseType;
+    }
+
     /**
             "type": {
                 "key": {
similarity index 71%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/DatabaseSchema.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/DatabaseSchema.java
index 82582306a38d93a6c571f04922e8d2709c32770b..6b6dd6b28aed426d6fc13111b769010cd81b869c 100644 (file)
@@ -7,10 +7,10 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.meta;
+package org.opendaylight.ovsdb.lib.schema;
 
 import com.fasterxml.jackson.databind.JsonNode;
-import org.opendaylight.ovsdb.OpenVswitch;
+import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -21,9 +21,8 @@ import java.util.Set;
 
 
 public class DatabaseSchema {
-    public static Logger logger = LoggerFactory.getLogger(DatabaseSchema.class);
 
-    public static String OPEN_VSWITCH_SCHEMA_NAME = "Open_vSwitch";
+    public static Logger logger = LoggerFactory.getLogger(DatabaseSchema.class);
 
     public Map<String, TableSchema> tables;
 
@@ -31,11 +30,17 @@ public class DatabaseSchema {
         this.tables = tables;
     }
 
-    public Set<String> getTables() { return this.tables.keySet(); }
+    public Set<String> getTables() {
+        return this.tables.keySet();
+    }
 
-    public boolean hasTable(String table) { return this.getTables().contains(table); }
+    public boolean hasTable(String table) {
+        return this.getTables().contains(table);
+    }
 
-    public TableSchema getTable(String table) { return this.tables.get(table); }
+    public TableSchema getTable(String table) {
+        return this.tables.get(table);
+    }
 
     public static DatabaseSchema fromJson(JsonNode json) {
         if (!json.isObject() || !json.has("tables")) {
@@ -45,9 +50,9 @@ public class DatabaseSchema {
 
         Map<String, TableSchema> tables = new HashMap<>();
         //Iterator<Map.Entry<String,JsonNode>> fields = json.fields();
-        for(Iterator<Map.Entry<String,JsonNode>> iter = json.get("tables").fields(); iter.hasNext();) {
+        for (Iterator<Map.Entry<String, JsonNode>> iter = json.get("tables").fields(); iter.hasNext(); ) {
             Map.Entry<String, JsonNode> table = iter.next();
-            logger.debug("Read schema for table[{}]:{}" , table.getKey(), table.getValue());
+            logger.debug("Read schema for table[{}]:{}", table.getKey(), table.getValue());
 
             tables.put(table.getKey(), TableSchema.fromJson(table.getKey(), table.getValue()));
         }
@@ -55,8 +60,8 @@ public class DatabaseSchema {
         return new DatabaseSchema(tables);
     }
 
-    public OpenVswitch.Transaction beginTransaction() {
-        return new OpenVswitch.Transaction(this);
+    public TransactionBuilder beginTransaction() {
+        return new TransactionBuilder(this);
     }
 
     public <E extends TableSchema<E>> TableSchema<E> table(String tableName) {
similarity index 75%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/TableSchema.java
rename to ovsdb/src/main/java/org/opendaylight/ovsdb/lib/schema/TableSchema.java
index c48d69961e29eca71c257639700dfb571fb8c24b..c9a57be707ae6e7822aab9f3468f0a60bba055a8 100644 (file)
@@ -7,10 +7,10 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.meta;
+package org.opendaylight.ovsdb.lib.schema;
 
 import com.fasterxml.jackson.databind.JsonNode;
-import org.opendaylight.ovsdb.Insert;
+import org.opendaylight.ovsdb.lib.operations.Insert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -22,6 +22,7 @@ import java.util.Set;
 
 
 public class TableSchema<E extends TableSchema<E>> {
+
     protected static final Logger logger = LoggerFactory.getLogger(TableSchema.class);
     private String name;
     private Map<String, ColumnSchema> columns;
@@ -34,13 +35,25 @@ public class TableSchema<E extends TableSchema<E>> {
         this.columns = columns;
     }
 
-    public Set<String> getColumns() { return this.columns.keySet(); }
+    public Set<String> getColumns() {
+        return this.columns.keySet();
+    }
 
-    public boolean hasColumn(String column) { return this.getColumns().contains(column); }
+    public Map<String, ColumnSchema> getColumnSchemas() {
+        return columns;
+    }
 
-    public ColumnSchema getColumn(String column) { return this.columns.get(column); }
+    public boolean hasColumn(String column) {
+        return this.getColumns().contains(column);
+    }
 
-    public ColumnType getColumnType(String column) { return this.columns.get(column).getType(); }
+    public ColumnSchema getColumn(String column) {
+        return this.columns.get(column);
+    }
+
+    public ColumnType getColumnType(String column) {
+        return this.columns.get(column).getType();
+    }
 
     public static TableSchema fromJson(String tableName, JsonNode json) {
 
@@ -56,8 +69,8 @@ public class TableSchema<E extends TableSchema<E>> {
             columns.put(column.getKey(), ColumnSchema.fromJson(column.getKey(), column.getValue()));
         }
 
-       TableSchema tableSchema = new TableSchema(tableName, columns);
-       return tableSchema;
+        TableSchema tableSchema = new TableSchema(tableName, columns);
+        return tableSchema;
     }
 
     public <E extends TableSchema<E>> E as(Class<E> clazz) {
@@ -73,9 +86,7 @@ public class TableSchema<E extends TableSchema<E>> {
         return new Insert<>(this);
     }
 
-
-
-    public <D> ColumnSchema<E, D> column(String column) {
+    public <D> ColumnSchema<E, D> column(String column, Class<D> type) {
         //todo exception handling
         return columns.get(column);
     }
@@ -88,5 +99,4 @@ public class TableSchema<E extends TableSchema<E>> {
         this.name = name;
     }
 
-    public static class AnyTableSchema extends TableSchema<AnyTableSchema>{}
 }
index ceaf284ba1f2e5f4b70325d2415a69a26fa6ea4b..7fe9fcb676ca3ddb8c94cd9be4d0a84863c743ed 100644 (file)
@@ -32,12 +32,12 @@ import org.opendaylight.controller.sal.utils.StatusCode;
 import org.opendaylight.ovsdb.lib.database.OVSInstance;
 import org.opendaylight.ovsdb.lib.database.OvsdbType;
 import org.opendaylight.ovsdb.lib.message.TransactBuilder;
-import org.opendaylight.ovsdb.lib.message.operations.DeleteOperation;
-import org.opendaylight.ovsdb.lib.message.operations.InsertOperation;
-import org.opendaylight.ovsdb.lib.message.operations.MutateOperation;
-import org.opendaylight.ovsdb.lib.message.operations.Operation;
-import org.opendaylight.ovsdb.lib.message.operations.OperationResult;
-import org.opendaylight.ovsdb.lib.message.operations.UpdateOperation;
+import org.opendaylight.ovsdb.lib.operations.DeleteOperation;
+import org.opendaylight.ovsdb.lib.operations.InsertOperation;
+import org.opendaylight.ovsdb.lib.operations.MutateOperation;
+import org.opendaylight.ovsdb.lib.operations.Operation;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
+import org.opendaylight.ovsdb.lib.operations.UpdateOperation;
 import org.opendaylight.ovsdb.lib.notation.Condition;
 import org.opendaylight.ovsdb.lib.notation.Function;
 import org.opendaylight.ovsdb.lib.notation.Mutation;
@@ -145,7 +145,7 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService,
     /**
      * Add a new bridge
      * @param node Node serving this configuration service
-     * @param bridgeConnectorIdentifier String representation of a Bridge Connector
+     * @param bridgeIdentifier String representation of a Bridge Connector
      * @return Bridge Connector configurations
      */
     @Override
@@ -390,7 +390,7 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService,
      * Implements the OVS Connection for Managers
      *
      * @param node Node serving this configuration service
-     * @param String with IP and connection types
+     * @param managerip with IP and connection types
      */
     @SuppressWarnings("unchecked")
     public boolean setManager(Node node, String managerip) {
diff --git a/ovsdb/src/test/java/org/opendaylight/ovsdb/OpenVswitchTestIT.java b/ovsdb/src/test/java/org/opendaylight/ovsdb/OpenVswitchTestIT.java
deleted file mode 100644 (file)
index 8118ca5..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2014 EBay Software Foundation
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Authors : Ashwin Raveendran
- */
-package org.opendaylight.ovsdb;
-
-import com.google.common.util.concurrent.ListenableFuture;
-import junit.framework.Assert;
-import org.junit.Test;
-import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
-import org.opendaylight.ovsdb.lib.message.operations.OperationResult;
-import org.opendaylight.ovsdb.lib.meta.ColumnSchema;
-import org.opendaylight.ovsdb.lib.meta.TableSchema;
-import org.opendaylight.ovsdb.plugin.OvsdbTestBase;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import static org.opendaylight.ovsdb.OpenVswitch.Operations.op;
-
-
-public class OpenVswitchTestIT extends OvsdbTestBase {
-    Logger logger = LoggerFactory.getLogger(OpenVswitchTestIT.class);
-
-    @Test
-    public void test() throws IOException, InterruptedException, ExecutionException {
-        OpenVswitch ovs = getVswitch();
-
-        TableSchema<TableSchema.AnyTableSchema> bridge = ovs.schema().table("Bridge");
-        ColumnSchema<TableSchema.AnyTableSchema, String> name = bridge.column("name");
-
-        ListenableFuture<List<OperationResult>> results = ovs.transact()
-                .add(op.insert(bridge).value(name, "br-int"))
-                .add(op.update(bridge)
-                        .set(name, "br-int")
-                        .where(name.opEqual("br-int"))
-                        .and(name.opEqual("br-int")).operation())
-                .execute();
-
-        List<OperationResult> operationResults = results.get();
-        Assert.assertFalse(operationResults.isEmpty());
-        System.out.println("operationResults = " + operationResults);
-    }
-
-
-    private OpenVswitch getVswitch() throws IOException, InterruptedException {
-        TestObjects testConnection = getTestConnection();
-        OvsdbRPC rpc = testConnection.connectionService.getConnection(testConnection.node).getRpc();
-
-        ExecutorService executorService = Executors.newFixedThreadPool(3);
-        OpenVswitch ovs = new OpenVswitch(rpc, executorService);
-        ovs.populateSchemaFromDevice();
-
-        for (int i = 0; i < 100; i++) {
-           if (ovs.isReady(0)) {
-              break;
-           }
-           Thread.sleep(1000);
-        }
-        return ovs;
-    }
-
-}
diff --git a/ovsdb/src/test/java/org/opendaylight/ovsdb/lib/OvsDBClientTestIT.java b/ovsdb/src/test/java/org/opendaylight/ovsdb/lib/OvsDBClientTestIT.java
new file mode 100644 (file)
index 0000000..8793b39
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2014 EBay Software Foundation
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Authors : Ashwin Raveendran
+ */
+package org.opendaylight.ovsdb.lib;
+
+import com.google.common.util.concurrent.ListenableFuture;
+import junit.framework.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
+import org.opendaylight.ovsdb.lib.schema.ATableSchema;
+import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+import org.opendaylight.ovsdb.lib.schema.TableSchema;
+import org.opendaylight.ovsdb.plugin.OvsdbTestBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import static org.opendaylight.ovsdb.lib.operations.Operations.op;
+
+
+public class OvsDBClientTestIT extends OvsdbTestBase {
+    Logger logger = LoggerFactory.getLogger(OvsDBClientTestIT.class);
+
+    OvsDBClientImpl ovs;
+
+
+
+    @Test
+    public void testTransact() throws IOException, InterruptedException, ExecutionException {
+
+        ListenableFuture<DatabaseSchema> schema = ovs.getSchema(OvsDBClient.OPEN_VSWITCH_SCHEMA, true);
+        TableSchema<ATableSchema> bridge = schema.get().table("Bridge");
+
+        for (Map.Entry<String, ColumnSchema> names : bridge.getColumnSchemas().entrySet()) {
+            System.out.println("names = " + names.getKey());
+            System.out.println("names.getValue().getType() = " + names.getValue().getType().getBaseType());
+        }
+
+        ColumnSchema<ATableSchema, String> name = bridge.column("name", String.class);
+        ColumnSchema<ATableSchema, String> fail_mode = bridge.column("fail_mode", String.class);
+
+        ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
+                .add(op.insert(bridge).value(name, "br-int"))
+                .add(op.update(bridge)
+                        .set(fail_mode, "secure")
+                        .where(name.opEqual("br-int"))
+                        //.and(name.opEqual("br-int"))
+                        .operation())
+                .execute();
+
+        List<OperationResult> operationResults = results.get();
+        Assert.assertFalse(operationResults.isEmpty());
+        System.out.println("operationResults = " + operationResults);
+    }
+
+    @Test
+    public void testGetDBs() throws ExecutionException, InterruptedException {
+        ListenableFuture<List<String>> databases = ovs.getDatabases();
+        List<String> dbNames = databases.get();
+        Assert.assertNotNull(dbNames);
+        Assert.assertTrue(dbNames.size() > 0);
+    }
+
+    @Before
+    public  void initalize() throws IOException {
+        if (ovs != null) {
+            return;
+        }
+        TestObjects testConnection = getTestConnection();
+        OvsdbRPC rpc = testConnection.connectionService.getConnection(testConnection.node).getRpc();
+
+        ExecutorService executorService = Executors.newFixedThreadPool(3);
+        ovs = new OvsDBClientImpl(rpc, executorService);
+    }
+
+}
similarity index 70%
rename from ovsdb/src/test/java/org/opendaylight/ovsdb/OpenVswitchTestITTyped.java
rename to ovsdb/src/test/java/org/opendaylight/ovsdb/lib/OvsDBClientTestITTyped.java
index 34570713b8d8032e314e87518af7a15a60e27f04..3e69df0a3ba37e1de2b880123323e441b76b9479 100644 (file)
@@ -7,16 +7,16 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb;
+package org.opendaylight.ovsdb.lib;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import junit.framework.Assert;
 import org.junit.Test;
 import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
-import org.opendaylight.ovsdb.lib.message.operations.OperationResult;
-import org.opendaylight.ovsdb.lib.meta.ColumnSchema;
-import org.opendaylight.ovsdb.lib.meta.TableSchema;
-import org.opendaylight.ovsdb.lib.meta.temp.Reference;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
+import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
+import org.opendaylight.ovsdb.lib.schema.TableSchema;
+import org.opendaylight.ovsdb.lib.schema.temp.Reference;
 import org.opendaylight.ovsdb.plugin.OvsdbTestBase;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -28,11 +28,11 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import static org.opendaylight.ovsdb.OpenVswitch.Operations.op;
+import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 
-public class OpenVswitchTestITTyped extends OvsdbTestBase {
+public class OvsDBClientTestITTyped extends OvsdbTestBase {
 
-    Logger logger = LoggerFactory.getLogger(OpenVswitchTestITTyped.class);
+    Logger logger = LoggerFactory.getLogger(OvsDBClientTestITTyped.class);
 
 
     static class Bridge extends TableSchema<Bridge> {
@@ -42,30 +42,30 @@ public class OpenVswitchTestITTyped extends OvsdbTestBase {
         }
 
         public ColumnSchema<Bridge, String> name() {
-            return column("name");
+            return column("name", String.class);
         }
 
         public ColumnSchema<Bridge, Integer> floodVlans() {
-            return column("flood_vlans");
+            return column("flood_vlans", Integer.class);
         }
 
         public ColumnSchema<Bridge, String> status() {
-            return column("status");
+            return column("status", String.class);
         }
 
         public ColumnSchema<Bridge, Reference> netflow() {
-            return column("netflow");
+            return column("netflow", Reference.class);
         }
     }
 
 
     @Test
     public void test() throws IOException, InterruptedException, ExecutionException {
-        OpenVswitch ovs = getVswitch();
+        OvsDBClientImpl ovs = getVswitch();
 
-        Bridge bridge = ovs.schema().table("Bridge", Bridge.class);
+        Bridge bridge = ovs.getSchema(OvsDBClient.OPEN_VSWITCH_SCHEMA, true).get().table("Bridge", Bridge.class);
 
-        ListenableFuture<List<OperationResult>> results = ovs.transact()
+        ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
                 .add(op.insert(bridge).value(bridge.name(), "br-int"))
                 .add(op.update(bridge)
                         .set(bridge.status(), "br-blah")
@@ -82,13 +82,12 @@ public class OpenVswitchTestITTyped extends OvsdbTestBase {
 
 
 
-    private OpenVswitch getVswitch() throws IOException, InterruptedException {
+    private OvsDBClientImpl getVswitch() throws IOException, InterruptedException {
         TestObjects testConnection = getTestConnection();
         OvsdbRPC rpc = testConnection.connectionService.getConnection(testConnection.node).getRpc();
 
         ExecutorService executorService = Executors.newFixedThreadPool(3);
-        OpenVswitch ovs = new OpenVswitch(rpc, executorService);
-        ovs.populateSchemaFromDevice();
+        OvsDBClientImpl ovs = new OvsDBClientImpl(rpc, executorService);
 
         for (int i = 0; i < 100; i++) {
            if (ovs.isReady(0)) {
index 35d79b5c77fa989ffbdb2337502d6b25ddf04539..d21f26686ede2234db1a8cb8755ec184f01447c2 100644 (file)
@@ -25,10 +25,10 @@ import org.junit.Test;
 import org.opendaylight.controller.sal.connection.ConnectionConstants;
 import org.opendaylight.controller.sal.core.Node;
 import org.opendaylight.ovsdb.lib.database.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.message.operations.InsertOperation;
-import org.opendaylight.ovsdb.lib.message.operations.MutateOperation;
-import org.opendaylight.ovsdb.lib.message.operations.Operation;
-import org.opendaylight.ovsdb.lib.message.operations.OperationResult;
+import org.opendaylight.ovsdb.lib.operations.InsertOperation;
+import org.opendaylight.ovsdb.lib.operations.MutateOperation;
+import org.opendaylight.ovsdb.lib.operations.Operation;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
 import org.opendaylight.ovsdb.lib.notation.Condition;
 import org.opendaylight.ovsdb.lib.notation.Function;
 import org.opendaylight.ovsdb.lib.notation.Mutation;
similarity index 96%
rename from ovsdb/src/test/java/org/opendaylight/ovsdb/lib/meta/OvsDBSchemaTest.java
rename to ovsdb/src/test/java/org/opendaylight/ovsdb/lib/schema/OvsDBSchemaTest.java
index 4d8ef6622c24d3b301f55b3d424ea0047669b835..c54a541b04a7adf1e42215c0812126e5bfcb776b 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.meta;
+package org.opendaylight.ovsdb.lib.schema;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
similarity index 87%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/temp/Reference.java
rename to ovsdb/src/test/java/org/opendaylight/ovsdb/lib/schema/temp/Reference.java
index f27a75816894fbda493e9296c4cad95862ebead2..eafb3117f22d3228b5c02266a83c50ad0f7496b3 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.meta.temp;
+package org.opendaylight.ovsdb.lib.schema.temp;
 
 
 public class Reference {
similarity index 65%
rename from ovsdb/src/main/java/org/opendaylight/ovsdb/lib/meta/temp/SchemaObjs.java
rename to ovsdb/src/test/java/org/opendaylight/ovsdb/lib/schema/temp/SchemaObjs.java
index 8761eeed2528be9c7258db7569f420eae2ad19ed..a93ba0bf3f499ef0d51979f99e4ca05a9ff84f86 100644 (file)
@@ -7,12 +7,15 @@
  *
  * Authors : Ashwin Raveendran
  */
-package org.opendaylight.ovsdb.lib.meta.temp;
+package org.opendaylight.ovsdb.lib.schema.temp;
 
-import org.opendaylight.ovsdb.OpenVswitch;
-import org.opendaylight.ovsdb.lib.meta.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.meta.ColumnSchema;
-import org.opendaylight.ovsdb.lib.meta.TableSchema;
+import org.opendaylight.ovsdb.lib.OvsDBClient;
+import org.opendaylight.ovsdb.lib.OvsDBClientImpl;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
+import org.opendaylight.ovsdb.lib.schema.TableSchema;
+
+import java.util.concurrent.ExecutionException;
 
 
 public class SchemaObjs {
@@ -27,8 +30,8 @@ public class SchemaObjs {
 
         public Bridge(TableSchema<Bridge> target) {
             this.target = target;
-            name = target.column("name");
-            flood_vlans = target.column("statistics");
+            name = target.column("name", String.class);
+            flood_vlans = target.column("statistics", Boolean.class);
         }
 
     }
@@ -42,16 +45,16 @@ public class SchemaObjs {
 
         public Port(TableSchema<Port> target) {
             this.target = target;
-            name = target.column("name");
-            statistics = target.column("statistics");
+            name = target.column("name", String.class);
+            statistics = target.column("statistics", String.class);
         }
 
     }
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws ExecutionException, InterruptedException {
 
-        OpenVswitch ovs = new OpenVswitch(null, null);
-        DatabaseSchema db = ovs.getSchema();
+        OvsDBClientImpl ovs = new OvsDBClientImpl(null, null);
+        DatabaseSchema db = ovs.getSchema(OvsDBClient.OPEN_VSWITCH_SCHEMA, true).get();
         Bridge bridge = db.table(Bridge.NAME, Bridge.class);
         Port port = db.table(Port.NAME, Port.class);