Skip to content

Commit 6e38e11

Browse files
committed
addressed comments
1 parent c13a8db commit 6e38e11

File tree

5 files changed

+61
-58
lines changed

5 files changed

+61
-58
lines changed

gateway-ha/pom.xml

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@
7676
<artifactId>guice</artifactId>
7777
</dependency>
7878

79+
<dependency>
80+
<groupId>com.h2database</groupId>
81+
<artifactId>h2</artifactId>
82+
<version>1.4.192</version>
83+
</dependency>
84+
7985
<dependency>
8086
<groupId>com.mysql</groupId>
8187
<artifactId>mysql-connector-j</artifactId>
@@ -95,6 +101,12 @@
95101
<classifier>jdk11</classifier>
96102
</dependency>
97103

104+
<dependency>
105+
<groupId>com.oracle.database.jdbc</groupId>
106+
<artifactId>ojdbc11</artifactId>
107+
<version>23.7.0.25.01</version>
108+
</dependency>
109+
98110
<dependency>
99111
<groupId>com.squareup.okhttp3</groupId>
100112
<artifactId>okhttp</artifactId>
@@ -272,16 +284,14 @@
272284
</dependency>
273285

274286
<dependency>
275-
<groupId>org.weakref</groupId>
276-
<artifactId>jmxutils</artifactId>
287+
<groupId>org.postgresql</groupId>
288+
<artifactId>postgresql</artifactId>
289+
<version>42.7.5</version>
277290
</dependency>
278291

279292
<dependency>
280-
<groupId>com.oracle.database.jdbc</groupId>
281-
<artifactId>ojdbc11-production</artifactId>
282-
<version>23.7.0.25.01</version>
283-
<type>pom</type>
284-
<scope>runtime</scope>
293+
<groupId>org.weakref</groupId>
294+
<artifactId>jmxutils</artifactId>
285295
</dependency>
286296

287297
<!-- Required for ClusterStatsJdbcMonitor -->
@@ -313,21 +323,7 @@
313323
<scope>runtime</scope>
314324
</dependency>
315325

316-
<dependency>
317-
<groupId>org.postgresql</groupId>
318-
<artifactId>postgresql</artifactId>
319-
<version>42.7.5</version>
320-
<scope>runtime</scope>
321-
</dependency>
322-
323326
<!-- Test deps -->
324-
<dependency>
325-
<groupId>com.h2database</groupId>
326-
<artifactId>h2</artifactId>
327-
<version>1.4.192</version>
328-
<scope>test</scope>
329-
</dependency>
330-
331327
<dependency>
332328
<groupId>com.squareup.okhttp3</groupId>
333329
<artifactId>mockwebserver</artifactId>

gateway-ha/src/main/java/io/trino/gateway/ha/config/DataStoreConfiguration.java

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import java.sql.SQLException;
1919
import java.util.Enumeration;
2020

21+
import static java.util.Objects.requireNonNull;
22+
2123
public class DataStoreConfiguration
2224
{
2325
private String jdbcUrl;
@@ -34,7 +36,7 @@ public class DataStoreConfiguration
3436

3537
public DataStoreConfiguration(String jdbcUrl, String user, String password, String driver, Integer queryHistoryHoursRetention, boolean runMigrationsEnabled)
3638
{
37-
this.jdbcUrl = jdbcUrl;
39+
this.jdbcUrl = requireNonNull(jdbcUrl, "jdbc must be set");
3840
this.user = user;
3941
this.password = password;
4042
this.driver = driver;
@@ -119,27 +121,16 @@ public DataStoreType getDataStoreType()
119121
if (dataStoreType != null) {
120122
return dataStoreType;
121123
}
122-
if (jdbcUrl == null) {
123-
throw new IllegalStateException("jdbcUrl must be set");
124-
}
125-
124+
String jdbcUrl = getJdbcUrl();
126125
try {
127126
Enumeration<Driver> drivers = DriverManager.getDrivers();
128127
while (drivers.hasMoreElements()) {
129128
Driver driver = drivers.nextElement();
130129
if (driver.acceptsURL(jdbcUrl)) {
131-
String driverClass = driver.getClass().getName();
132-
if (driverClass.contains("oracle")) {
133-
return DataStoreType.ORACLE;
134-
}
135-
if (driverClass.contains("mysql")) {
136-
return DataStoreType.MYSQL;
137-
}
138-
if (driverClass.contains("postgresql")) {
139-
return DataStoreType.POSTGRES;
140-
}
141-
if (driverClass.contains("h2")) {
142-
return DataStoreType.H2;
130+
for (DataStoreType dataStoreType : DataStoreType.values()) {
131+
if (dataStoreType.getDriverClass().equals(driver.getClass())) {
132+
return dataStoreType;
133+
}
143134
}
144135
break;
145136
}

gateway-ha/src/main/java/io/trino/gateway/ha/config/DataStoreType.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,26 @@
1313
*/
1414
package io.trino.gateway.ha.config;
1515

16+
import java.sql.Driver;
17+
1618
public enum DataStoreType {
17-
ORACLE,
18-
MYSQL,
19-
POSTGRES,
20-
H2
19+
ORACLE(oracle.jdbc.driver.OracleDriver.class),
20+
MYSQL(com.mysql.cj.jdbc.Driver.class),
21+
POSTGRES(org.postgresql.Driver.class),
22+
H2(org.h2.Driver.class);
23+
24+
private final Class<? extends Driver> driverClass;
25+
26+
DataStoreType(Class<? extends Driver> driverClass)
27+
{
28+
this.driverClass = driverClass;
29+
}
30+
31+
/**
32+
* Returns the JDBC Driver class associated with this data store type.
33+
*/
34+
public Class<? extends Driver> getDriverClass()
35+
{
36+
return driverClass;
37+
}
2138
}

gateway-ha/src/main/java/io/trino/gateway/ha/persistence/JdbcPropertiesProviderFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@
1313
*/
1414
package io.trino.gateway.ha.persistence;
1515

16+
import com.google.common.collect.ImmutableList;
1617
import com.google.inject.Inject;
1718
import com.google.inject.Singleton;
1819
import io.trino.gateway.ha.config.DataStoreConfiguration;
1920

2021
import java.util.List;
2122

2223
import static java.lang.String.format;
24+
import static java.util.Objects.requireNonNull;
2325

2426
@Singleton
2527
public class JdbcPropertiesProviderFactory
@@ -29,7 +31,7 @@ public class JdbcPropertiesProviderFactory
2931
@Inject
3032
public JdbcPropertiesProviderFactory(List<JdbcPropertiesProvider> orderedProviders)
3133
{
32-
this.providers = List.copyOf(orderedProviders);
34+
this.providers = ImmutableList.copyOf(requireNonNull(orderedProviders, "providers is null"));
3335
}
3436

3537
public JdbcPropertiesProvider forConfig(DataStoreConfiguration config)

gateway-ha/src/test/java/io/trino/gateway/ha/persistence/TestJdbcPropertiesProviderFactory.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,11 @@
2222
import io.trino.gateway.ha.config.MySqlConfiguration;
2323
import io.trino.gateway.ha.module.RouterBaseModule;
2424
import org.junit.jupiter.api.Test;
25-
import org.junit.jupiter.api.TestInstance;
2625

2726
import java.util.Properties;
2827

2928
import static org.assertj.core.api.Assertions.assertThat;
3029

31-
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
3230
final class TestJdbcPropertiesProviderFactory
3331
{
3432
private static JdbcPropertiesProviderFactory factoryFor(DataStoreConfiguration dbConfig)
@@ -68,9 +66,9 @@ private DataStoreConfiguration makeH2Config()
6866
@Test
6967
void testBasicProviderWhenH2()
7068
{
71-
var cfg = makeH2Config();
72-
var factory = factoryFor(cfg);
73-
var provider = factory.forConfig(cfg);
69+
DataStoreConfiguration cfg = makeH2Config();
70+
JdbcPropertiesProviderFactory factory = factoryFor(cfg);
71+
DefaultJdbcPropertiesProvider provider = (DefaultJdbcPropertiesProvider) factory.forConfig(cfg);
7472
assertThat(provider).isInstanceOf(DefaultJdbcPropertiesProvider.class);
7573

7674
Properties properties = provider.getProperties(cfg);
@@ -83,10 +81,9 @@ void testBasicProviderWhenH2()
8381
@Test
8482
void testMysqlProviderWhenSslDisabled()
8583
{
86-
var cfg = makeMySqlConfig(SslMode.DISABLED);
87-
88-
var factory = factoryFor(cfg);
89-
var provider = factory.forConfig(cfg);
84+
DataStoreConfiguration cfg = makeMySqlConfig(SslMode.DISABLED);
85+
JdbcPropertiesProviderFactory factory = factoryFor(cfg);
86+
JdbcPropertiesProvider provider = factory.forConfig(cfg);
9087
assertThat(provider).isInstanceOf(MySqlJdbcPropertiesProvider.class);
9188

9289
Properties properties = provider.getProperties(cfg);
@@ -106,19 +103,19 @@ void testMysqlProviderWhenSslDisabled()
106103
@Test
107104
void testMysqlProviderWhenVerifyCa()
108105
{
109-
var cfg = makeMySqlConfig(SslMode.VERIFY_CA);
110-
var factory = factoryFor(cfg);
111-
var mySqlConfiguration = cfg.getMySqlConfiguration();
112-
mySqlConfiguration.setClientCertificateKeyStoreUrl("file:/tmp/cli.p12")
106+
DataStoreConfiguration cfg = makeMySqlConfig(SslMode.VERIFY_CA);
107+
JdbcPropertiesProviderFactory factory = factoryFor(cfg);
108+
MySqlConfiguration mysqlConfig = cfg.getMySqlConfiguration();
109+
mysqlConfig.setClientCertificateKeyStoreUrl("file:/tmp/cli.p12")
113110
.setClientCertificateKeyStorePassword("cpw")
114111
.setClientCertificateKeyStoreType("PKCS12")
115112
.setTrustCertificateKeyStoreUrl("file:/tmp/trs.p12")
116113
.setTrustCertificateKeyStorePassword("tpw");
117114

118-
var provider = factory.forConfig(cfg);
115+
JdbcPropertiesProvider provider = factory.forConfig(cfg);
119116
assertThat(provider).isInstanceOf(MySqlJdbcPropertiesProvider.class);
120117

121-
var properties = provider.getProperties(cfg);
118+
Properties properties = provider.getProperties(cfg);
122119
assertThat(properties.getProperty("user")).isEqualTo("root");
123120
assertThat(properties.getProperty(PropertyKey.sslMode.getKeyName()))
124121
.isEqualTo("VERIFY_CA");

0 commit comments

Comments
 (0)