diff --git a/src/common/codeine/db/mysql/connectors/AlertsMysqlConnectorDatabaseConnectorListProvider.java b/src/common/codeine/db/mysql/connectors/AlertsMysqlConnectorDatabaseConnectorListProvider.java index 3f4fe697..cea2fd86 100644 --- a/src/common/codeine/db/mysql/connectors/AlertsMysqlConnectorDatabaseConnectorListProvider.java +++ b/src/common/codeine/db/mysql/connectors/AlertsMysqlConnectorDatabaseConnectorListProvider.java @@ -1,36 +1,43 @@ package codeine.db.mysql.connectors; -import java.util.List; - -import javax.inject.Inject; - import codeine.db.mysql.DbUtils; import codeine.db.mysql.StaticMysqlHostSelector; import codeine.jsons.global.ExperimentalConfJsonStore; import codeine.jsons.global.GlobalConfigurationJsonStore; import codeine.jsons.global.MysqlConfigurationJson; - import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.gson.Gson; +import java.util.List; +import java.util.Map; +import javax.inject.Inject; public class AlertsMysqlConnectorDatabaseConnectorListProvider { - - @Inject private GlobalConfigurationJsonStore globalConfigurationJsonStore; - @Inject private Gson gson; - @Inject private ExperimentalConfJsonStore webConfJsonStore; - - public List get() { - List $ = Lists.newArrayList(); - for (MysqlConfigurationJson m : globalConfigurationJsonStore.get().mysql()) { - DbUtils dbUtils = new DbUtils(new StaticMysqlHostSelector(m), globalConfigurationJsonStore); - AlertsMysqlConnector c = new AlertsMysqlConnector(dbUtils, gson, webConfJsonStore); - $.add(c); - } - return $; - } - - - - + + @Inject + private GlobalConfigurationJsonStore globalConfigurationJsonStore; + @Inject + private Gson gson; + @Inject + private ExperimentalConfJsonStore webConfJsonStore; + + private Map dbUtilsMap = Maps.newHashMap(); + + public List get() { + List $ = Lists.newArrayList(); + for (MysqlConfigurationJson m : globalConfigurationJsonStore.get().mysql()) { + DbUtils dbUtils = getDbUtils(m); + AlertsMysqlConnector c = new AlertsMysqlConnector(dbUtils, gson, webConfJsonStore); + $.add(c); + } + return $; + } + + private DbUtils getDbUtils(MysqlConfigurationJson m) { + return dbUtilsMap.computeIfAbsent(m, + mysqlConfigurationJson -> new DbUtils(new StaticMysqlHostSelector(m), + globalConfigurationJsonStore)); + } + } diff --git a/src/common/codeine/db/mysql/connectors/NotificationsMysqlConnectorDatabaseConnectorListProvider.java b/src/common/codeine/db/mysql/connectors/NotificationsMysqlConnectorDatabaseConnectorListProvider.java index a4e35a26..79b6b0ee 100644 --- a/src/common/codeine/db/mysql/connectors/NotificationsMysqlConnectorDatabaseConnectorListProvider.java +++ b/src/common/codeine/db/mysql/connectors/NotificationsMysqlConnectorDatabaseConnectorListProvider.java @@ -1,7 +1,9 @@ package codeine.db.mysql.connectors; +import com.google.common.collect.Maps; import java.util.List; +import java.util.Map; import javax.inject.Inject; import codeine.configuration.FeatureFlags; @@ -16,19 +18,21 @@ public class NotificationsMysqlConnectorDatabaseConnectorListProvider { - @Inject - private GlobalConfigurationJsonStore globalConfigurationJsonStore; @Inject private Gson gson; @Inject private ExperimentalConfJsonStore webConfJsonStore; @Inject private FeatureFlags featureFlags; + @Inject + private GlobalConfigurationJsonStore globalConfigurationJsonStore; + + private Map dbUtilsMap = Maps.newHashMap(); public List get() { List $ = Lists.newArrayList(); for (MysqlConfigurationJson m : globalConfigurationJsonStore.get().mysql()) { - DbUtils dbUtils = new DbUtils(new StaticMysqlHostSelector(m), globalConfigurationJsonStore); + DbUtils dbUtils = getDbUtils(m); NotificationsMysqlConnector c = new NotificationsMysqlConnector(dbUtils, gson, webConfJsonStore, featureFlags); $.add(c); @@ -36,5 +40,11 @@ public List get() { return $; } + private DbUtils getDbUtils(MysqlConfigurationJson m) { + return dbUtilsMap.computeIfAbsent(m, + mysqlConfigurationJson -> new DbUtils(new StaticMysqlHostSelector(m), + globalConfigurationJsonStore)); + } + } diff --git a/src/common/codeine/db/mysql/connectors/ProjectConfigurationDatabaseConnectorListProvider.java b/src/common/codeine/db/mysql/connectors/ProjectConfigurationDatabaseConnectorListProvider.java index 8cfb5d03..61b4d9bb 100644 --- a/src/common/codeine/db/mysql/connectors/ProjectConfigurationDatabaseConnectorListProvider.java +++ b/src/common/codeine/db/mysql/connectors/ProjectConfigurationDatabaseConnectorListProvider.java @@ -1,7 +1,9 @@ package codeine.db.mysql.connectors; +import com.google.common.collect.Maps; import java.util.List; +import java.util.Map; import javax.inject.Inject; import codeine.db.ProjectsConfigurationConnector; @@ -20,18 +22,23 @@ public class ProjectConfigurationDatabaseConnectorListProvider { @Inject private Gson gson; @Inject private ExperimentalConfJsonStore webConfJsonStore; + private Map dbUtilsMap = Maps.newHashMap(); + public List get() { List $ = Lists.newArrayList(); for (MysqlConfigurationJson m : globalConfigurationJsonStore.get().mysql()) { - DbUtils dbUtils = new DbUtils(new StaticMysqlHostSelector(m), globalConfigurationJsonStore); + DbUtils dbUtils = getDbUtils(m); ProjectsConfigurationConnector c = new ProjectsConfigurationMysqlConnector(dbUtils, gson, webConfJsonStore); $.add(c); } return $; } - - - + private DbUtils getDbUtils(MysqlConfigurationJson m) { + return dbUtilsMap.computeIfAbsent(m, + mysqlConfigurationJson -> new DbUtils(new StaticMysqlHostSelector(m), + globalConfigurationJsonStore)); + } + } diff --git a/src/common/codeine/db/mysql/connectors/StatusDatabaseConnectorListProvider.java b/src/common/codeine/db/mysql/connectors/StatusDatabaseConnectorListProvider.java index 04e8798c..b8a02123 100644 --- a/src/common/codeine/db/mysql/connectors/StatusDatabaseConnectorListProvider.java +++ b/src/common/codeine/db/mysql/connectors/StatusDatabaseConnectorListProvider.java @@ -1,7 +1,9 @@ package codeine.db.mysql.connectors; +import com.google.common.collect.Maps; import java.util.List; +import java.util.Map; import javax.inject.Inject; import codeine.db.IStatusDatabaseConnector; @@ -20,18 +22,23 @@ public class StatusDatabaseConnectorListProvider { @Inject private Gson gson; @Inject private ExperimentalConfJsonStore webConfJsonStore; + private Map dbUtilsMap = Maps.newHashMap(); + public List get() { List $ = Lists.newArrayList(); for (MysqlConfigurationJson m : globalConfigurationJsonStore.get().mysql()) { - DbUtils dbUtils = new DbUtils(new StaticMysqlHostSelector(m), globalConfigurationJsonStore); + DbUtils dbUtils = getDbUtils(m); IStatusDatabaseConnector c = new StatusMysqlConnector(dbUtils, gson, webConfJsonStore); $.add(c); } return $; } - - - + private DbUtils getDbUtils(MysqlConfigurationJson m) { + return dbUtilsMap.computeIfAbsent(m, + mysqlConfigurationJson -> new DbUtils(new StaticMysqlHostSelector(m), + globalConfigurationJsonStore)); + } + }