Skip to content

Commit 7011359

Browse files
committed
add driverClass option
1 parent d08e9b7 commit 7011359

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

modules/oceanbase-ce/src/main/java/org/testcontainers/containers/OceanBaseContainer.java

+26-2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class OceanBaseContainer extends JdbcDatabaseContainer<OceanBaseContainer
3434
private boolean enableFastboot;
3535
private String mode;
3636
private String tenantName = DEFAULT_TEST_TENANT_NAME;
37+
private String driverClassName = "com.mysql.cj.jdbc.Driver";
3738

3839
public OceanBaseContainer(String dockerImageName) {
3940
this(DockerImageName.parse(dockerImageName));
@@ -53,7 +54,7 @@ public Integer getMappedPort(int originalPort) {
5354

5455
@Override
5556
public String getDriverClassName() {
56-
return "com.mysql.cj.jdbc.Driver";
57+
return driverClassName;
5758
}
5859

5960
@Override
@@ -63,7 +64,8 @@ public String getJdbcUrl() {
6364

6465
public String getJdbcUrl(String databaseName) {
6566
String additionalUrlParams = constructUrlParameters("?", "&");
66-
return "jdbc:mysql://" + getHost() + ":" + getMappedPort(SQL_PORT) + "/" + databaseName + additionalUrlParams;
67+
String prefix = driverClassName.contains("mysql") ? "jdbc:mysql://" : "jdbc:oceanbase://";
68+
return prefix + getHost() + ":" + getMappedPort(SQL_PORT) + "/" + databaseName + additionalUrlParams;
6769
}
6870

6971
@Override
@@ -124,6 +126,28 @@ public OceanBaseContainer withTenant(String tenantName) {
124126
return self();
125127
}
126128

129+
/**
130+
* Set the driver class name.
131+
*
132+
* @param driverClassName the driver class name
133+
* @return this
134+
*/
135+
public OceanBaseContainer withDriverClassName(String driverClassName) {
136+
if (StringUtils.isEmpty(driverClassName)) {
137+
throw new IllegalArgumentException("Driver class name cannot be null or empty");
138+
}
139+
if (!driverClassName.contains("mysql") && !driverClassName.contains("oceanbase")) {
140+
throw new IllegalArgumentException("Driver class name should contains 'mysql' or 'oceanbase'");
141+
}
142+
try {
143+
Class.forName(driverClassName);
144+
} catch (ClassNotFoundException e) {
145+
throw new IllegalArgumentException("Driver class not found", e);
146+
}
147+
this.driverClassName = driverClassName;
148+
return self();
149+
}
150+
127151
@Override
128152
protected void configure() {
129153
if (StringUtils.isNotBlank(mode)) {

0 commit comments

Comments
 (0)