Constrain TypedDatabaseSchema proxy argument 99/86199/19
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 4 Dec 2019 20:36:58 +0000 (21:36 +0100)
committerStephen Kitt <skitt@redhat.com>
Tue, 7 Jan 2020 16:04:52 +0000 (16:04 +0000)
We do not operate on any old interface, arguments need to extend
TypedBaseType -- capture that in the API contract.

Change-Id: I978332ef5e0485763b8e04461aaaf12a00891466
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
library/impl/src/main/java/org/opendaylight/ovsdb/lib/operations/TransactionBuilder.java
library/impl/src/main/java/org/opendaylight/ovsdb/lib/schema/typed/TypedDatabaseSchema.java
library/impl/src/main/java/org/opendaylight/ovsdb/lib/schema/typed/TypedDatabaseSchemaImpl.java
library/impl/src/main/java/org/opendaylight/ovsdb/lib/schema/typed/TyperUtils.java

index 4b5b4f2e112398c0195e6ece8b34b4f51aa1dabc..d5971aea0e99880ffbc842c13de22c00032cc38d 100644 (file)
@@ -15,6 +15,7 @@ import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.ovsdb.lib.OvsdbClient;
 import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+import org.opendaylight.ovsdb.lib.schema.typed.TypedBaseTable;
 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 
 public class TransactionBuilder {
@@ -48,11 +49,11 @@ public class TransactionBuilder {
         return databaseSchema;
     }
 
-    public <T> T getTypedRowWrapper(final Class<T> klazz) {
+    public <T extends TypedBaseTable<?>> T getTypedRowWrapper(final Class<T> klazz) {
         return TyperUtils.getTypedRowWrapper(databaseSchema, klazz);
     }
 
-    public <T> T getTypedRowSchema(final Class<T> klazz) {
+    public <T extends TypedBaseTable<?>> T getTypedRowSchema(final Class<T> klazz) {
         return TyperUtils.getTypedRowWrapper(databaseSchema, klazz, null);
     }
 }
index 14f52fa9c2e65bb981338d3b628b800ec7c8d8a8..27e020f37515e0f31923be96c7623d155602db59 100644 (file)
@@ -49,7 +49,7 @@ public interface TypedDatabaseSchema extends DatabaseSchema {
      *
      * @param klazz Typed Class that represents a Table
      */
-    default <T> T getTypedRowWrapper(final Class<T> klazz) {
+    default <T extends TypedBaseTable<?>> T getTypedRowWrapper(final Class<T> klazz) {
         return getTypedRowWrapper(klazz, new Row<>());
     }
 
@@ -71,7 +71,7 @@ public interface TypedDatabaseSchema extends DatabaseSchema {
      * @param row The actual Row that the wrapper is operating on. It can be null if the caller
      *            is just interested in getting ColumnSchema.
      */
-    <T> T getTypedRowWrapper(Class<T> klazz, Row<GenericTableSchema> row);
+    <T extends TypedBaseTable<?>> T getTypedRowWrapper(Class<T> klazz, Row<GenericTableSchema> row);
 
     /**
      * This method extracts all row updates of Class&lt;T&gt; klazz from a TableUpdates
@@ -85,7 +85,7 @@ public interface TypedDatabaseSchema extends DatabaseSchema {
      * @param updates TableUpdates from which to extract rowUpdates
      * @return Map&lt;UUID,T&gt; for the type of things being sought
      */
-    <T> Map<UUID, T> extractRowsOld(Class<T> klazz, TableUpdates updates);
+    <T extends TypedBaseTable<?>> Map<UUID, T> extractRowsOld(Class<T> klazz, TableUpdates updates);
 
     /**
      * This method extracts all row updates of Class&lt;T&gt; klazz from a TableUpdates
@@ -99,7 +99,7 @@ public interface TypedDatabaseSchema extends DatabaseSchema {
      * @param updates TableUpdates from which to extract rowUpdates
      * @return Map&lt;UUID,T&gt; for the type of things being sought
      */
-    <T> Map<UUID,T> extractRowsRemoved(Class<T> klazz, TableUpdates updates);
+    <T extends TypedBaseTable<?>> Map<UUID,T> extractRowsRemoved(Class<T> klazz, TableUpdates updates);
 
     /**
      * This method extracts all row updates of Class&lt;T&gt; klazz from a TableUpdates
@@ -113,5 +113,5 @@ public interface TypedDatabaseSchema extends DatabaseSchema {
      * @param updates TableUpdates from which to extract rowUpdates
      * @return Map&lt;UUID,T&gt; for the type of things being sought
      */
-    <T> Map<UUID, T> extractRowsUpdated(Class<T> klazz, TableUpdates updates);
+    <T extends TypedBaseTable<?>> Map<UUID, T> extractRowsUpdated(Class<T> klazz, TableUpdates updates);
 }
index 686d074373fab18d086c27c5fa10e3f59d2fcf97..3e2ceddfb80dd0842014f44c574a92f25c758814 100644 (file)
@@ -60,7 +60,7 @@ final class TypedDatabaseSchemaImpl extends ForwardingDatabaseSchema implements
     }
 
     @Override
-    public <T> T getTypedRowWrapper(final Class<T> klazz, final Row<GenericTableSchema> row) {
+    public <T extends TypedBaseTable<?>> T getTypedRowWrapper(final Class<T> klazz, final Row<GenericTableSchema> row) {
         // Check validity of  of the parameter passed to getTypedRowWrapper:
         // -  checks for a valid Database Schema matching the expected Database for a given table
         // - checks for the presence of the Table in Database Schema.
@@ -79,7 +79,7 @@ final class TypedDatabaseSchemaImpl extends ForwardingDatabaseSchema implements
     }
 
     @Override
-    public <T> Map<UUID, T> extractRowsOld(final Class<T> klazz, final TableUpdates updates) {
+    public <T extends TypedBaseTable<?>> Map<UUID, T> extractRowsOld(final Class<T> klazz, final TableUpdates updates) {
         Map<UUID,T> result = new HashMap<>();
         for (RowUpdate<GenericTableSchema> rowUpdate : extractRowUpdates(klazz, updates).values()) {
             if (rowUpdate != null && rowUpdate.getOld() != null) {
@@ -91,7 +91,8 @@ final class TypedDatabaseSchemaImpl extends ForwardingDatabaseSchema implements
     }
 
     @Override
-    public <T> Map<UUID, T> extractRowsUpdated(final Class<T> klazz, final TableUpdates updates) {
+    public <T extends TypedBaseTable<?>> Map<UUID, T> extractRowsUpdated(final Class<T> klazz,
+            final TableUpdates updates) {
         final Map<UUID, T> result = new HashMap<>();
         for (RowUpdate<GenericTableSchema> rowUpdate : extractRowUpdates(klazz, updates).values()) {
             if (rowUpdate != null && rowUpdate.getNew() != null) {
@@ -102,7 +103,8 @@ final class TypedDatabaseSchemaImpl extends ForwardingDatabaseSchema implements
     }
 
     @Override
-    public <T> Map<UUID, T> extractRowsRemoved(final Class<T> klazz, final TableUpdates updates) {
+    public <T extends TypedBaseTable<?>> Map<UUID, T> extractRowsRemoved(final Class<T> klazz,
+            final TableUpdates updates) {
         final Map<UUID, T> result = new HashMap<>();
         for (RowUpdate<GenericTableSchema> rowUpdate : extractRowUpdates(klazz, updates).values()) {
             if (rowUpdate != null && rowUpdate.getNew() == null && rowUpdate.getOld() != null) {
index 6ce57b71dc22ab9c141dc4be94980552bced74a2..a38e59a93af2fddbba6cfba09ad38dc9cf91625b 100644 (file)
@@ -73,7 +73,8 @@ public final class TyperUtils {
      * @param klazz Typed Class that represents a Table
      */
     @Deprecated
-    public static <T> T getTypedRowWrapper(final DatabaseSchema dbSchema, final Class<T> klazz) {
+    public static <T extends TypedBaseTable<?>> T getTypedRowWrapper(final DatabaseSchema dbSchema,
+            final Class<T> klazz) {
         return getTypedRowWrapper(dbSchema, klazz, new Row<>());
     }
 
@@ -97,8 +98,8 @@ public final class TyperUtils {
      *            is just interested in getting ColumnSchema.
      */
     @Deprecated
-    public static <T> T getTypedRowWrapper(final DatabaseSchema dbSchema, final Class<T> klazz,
-                                           final Row<GenericTableSchema> row) {
+    public static <T extends TypedBaseTable<?>> T getTypedRowWrapper(final DatabaseSchema dbSchema,
+            final Class<T> klazz, final Row<GenericTableSchema> row) {
         return dbSchema == null ? null : getTyped(dbSchema).getTypedRowWrapper(klazz, row);
     }
 
@@ -115,8 +116,8 @@ public final class TyperUtils {
      * @param dbSchema Dbschema for the TableUpdates
      * @return Map&lt;UUID,T&gt; for the type of things being sought
      */
-    public static <T> Map<UUID,T> extractRowsUpdated(final Class<T> klazz, final TableUpdates updates,
-            final DatabaseSchema dbSchema) {
+    public static <T extends TypedBaseTable<?>> Map<UUID,T> extractRowsUpdated(final Class<T> klazz,
+            final TableUpdates updates, final DatabaseSchema dbSchema) {
         return getTyped(dbSchema).extractRowsUpdated(klazz, updates);
     }
 
@@ -133,8 +134,8 @@ public final class TyperUtils {
      * @param dbSchema Dbschema for the TableUpdates
      * @return Map&lt;UUID,T&gt; for the type of things being sought
      */
-    public static <T> Map<UUID, T> extractRowsOld(final Class<T> klazz, final TableUpdates updates,
-            final DatabaseSchema dbSchema) {
+    public static <T extends TypedBaseTable<?>> Map<UUID, T> extractRowsOld(final Class<T> klazz,
+            final TableUpdates updates, final DatabaseSchema dbSchema) {
         return getTyped(dbSchema).extractRowsOld(klazz, updates);
     }
 
@@ -151,8 +152,8 @@ public final class TyperUtils {
      * @param dbSchema Dbschema for the TableUpdates
      * @return Map&lt;UUID,T&gt; for the type of things being sought
      */
-    public static <T> Map<UUID,T> extractRowsRemoved(final Class<T> klazz, final TableUpdates updates,
-            final DatabaseSchema dbSchema) {
+    public static <T extends TypedBaseTable<?>> Map<UUID,T> extractRowsRemoved(final Class<T> klazz,
+            final TableUpdates updates, final DatabaseSchema dbSchema) {
         return getTyped(dbSchema).extractRowsRemoved(klazz, updates);
     }