Use an immutable global type Map 08/86108/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 3 Dec 2019 00:27:38 +0000 (01:27 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 3 Dec 2019 00:27:38 +0000 (01:27 +0100)
Rather than instantiating and populating this map for each
reader, use a simple constant map. Also clean up map type safety
a bit.

Change-Id: Ia70a9651e3bf27821b937964b63c80d47c7f07a5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/HwvtepTableReader.java

index 22b74fcc2ca43817417c16874a3d98b6b4977391..ecc497ad1516467123d6349094a57619ce69aac0 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.ovsdb.hwvtepsouthbound;
 
 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -83,9 +84,14 @@ public class HwvtepTableReader {
         UcastMacsRemote.class
     };
 
+    private static final ImmutableMap<Class<?>, Class<? extends TypedBaseTable<?>>> TABLE_MAP = ImmutableMap.of(
+        RemoteMcastMacs.class, McastMacsRemote.class,
+        RemoteUcastMacs.class, UcastMacsRemote.class,
+        LogicalSwitches.class, LogicalSwitch.class,
+        TerminationPoint.class, PhysicalLocator.class);
+
     private final Map<Class, Function<InstanceIdentifier, List<Condition>>> whereClauseGetterMap = new HashMap();
-    private final Map<Class, Class> tableMap = new HashMap();
-    private final Map<Class, TypedBaseTable> tables = new HashMap<>();
+    private final Map<Class<? extends TypedBaseTable<?>>, TypedBaseTable> tables = new HashMap<>();
 
     private final HwvtepConnectionInstance connectionInstance;
 
@@ -99,11 +105,6 @@ public class HwvtepTableReader {
                     HwvtepSchemaConstants.HARDWARE_VTEP, connectionInstance.getConnectionInfo(), e);
         }
 
-        tableMap.put(RemoteMcastMacs.class, McastMacsRemote.class);
-        tableMap.put(RemoteUcastMacs.class, UcastMacsRemote.class);
-        tableMap.put(LogicalSwitches.class, LogicalSwitch.class);
-        tableMap.put(TerminationPoint.class, PhysicalLocator.class);
-
         whereClauseGetterMap.put(RemoteMcastMacs.class, new RemoteMcastMacWhereClauseGetter());
         whereClauseGetterMap.put(RemoteUcastMacs.class, new RemoteUcastMacWhereClauseGetter());
         whereClauseGetterMap.put(LogicalSwitches.class, new LogicalSwitchWhereClauseGetter());
@@ -192,7 +193,7 @@ public class HwvtepTableReader {
             return Optional.empty();
         }
 
-        final Class<TypedBaseTable> tableClass = tableMap.get(cls);
+        final Class<? extends TypedBaseTable<?>> tableClass = TABLE_MAP.get(cls);
         final GenericTableSchema hwvtepSchema = dbSchema.getTableSchema(tableClass);
 
         final Select<GenericTableSchema> selectOperation = op.select(hwvtepSchema);
@@ -257,7 +258,7 @@ public class HwvtepTableReader {
             return null;
         }
 
-        final Class<TypedBaseTable> tableClass = tableMap.get(cls);
+        final Class<? extends TypedBaseTable<?>> tableClass = TABLE_MAP.get(cls);
         final GenericTableSchema hwvtepSchema = dbSchema.getTableSchema(tableClass);
         final Select<GenericTableSchema> selectOperation = op.select(hwvtepSchema);
         selectOperation.setColumns(new ArrayList<>(hwvtepSchema.getColumns()));