This is an automated email from the ASF dual-hosted git repository. ikamga pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/fineract-cn-mariadb.git
commit edbd5b2f2cf2612a922d0c24d7353be42cf2b716 Author: mgeiss <[email protected]> AuthorDate: Tue Apr 25 16:24:12 2017 +0200 added replication capability to mariadb jdbc url --- .../io/mifos/core/mariadb/util/JdbcUrlBuilder.java | 20 ++++++++++---- .../core/mariadb/util/JdbcUrlBuilderTest.java | 32 ++++++++++++++++++++-- 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/mifos/core/mariadb/util/JdbcUrlBuilder.java b/src/main/java/io/mifos/core/mariadb/util/JdbcUrlBuilder.java index 3c2576d..dc376c0 100644 --- a/src/main/java/io/mifos/core/mariadb/util/JdbcUrlBuilder.java +++ b/src/main/java/io/mifos/core/mariadb/util/JdbcUrlBuilder.java @@ -47,19 +47,29 @@ public final class JdbcUrlBuilder { } public String build() { + final String[] hostList = this.host.split(","); switch (this.type) { case MARIADB: - return this.type.prefix() - + this.host + ":" - + this.port - + (this.instanceName != null ? "/" + this.instanceName : ""); + final StringBuilder jdbcUrl = new StringBuilder(); + final String jdbcProtocol = this.type.prefix() + (hostList.length > 1 ? "replication://" : "//"); + jdbcUrl.append(jdbcProtocol); + for (int i = 0; i < hostList.length; i++) { + jdbcUrl.append(hostList[i].trim()).append(":").append(this.port); + if ((i + 1) < hostList.length) { + jdbcUrl.append(","); + } + } + if (this.instanceName != null) { + jdbcUrl.append("/").append(this.instanceName); + } + return jdbcUrl.toString(); default: throw new IllegalArgumentException("Unknown database type '" + this.type.name() + "'"); } } public enum DatabaseType { - MARIADB("jdbc:mariadb://"); + MARIADB("jdbc:mariadb:"); private final String prefix; diff --git a/src/test/java/io/mifos/core/mariadb/util/JdbcUrlBuilderTest.java b/src/test/java/io/mifos/core/mariadb/util/JdbcUrlBuilderTest.java index 550e5bc..ca8848c 100644 --- a/src/test/java/io/mifos/core/mariadb/util/JdbcUrlBuilderTest.java +++ b/src/test/java/io/mifos/core/mariadb/util/JdbcUrlBuilderTest.java @@ -20,21 +20,47 @@ import org.junit.Test; public class JdbcUrlBuilderTest { - private final static String MARIADB_JDBC_URL = "jdbc:mariadb://localhost:3306/comp_test"; - public JdbcUrlBuilderTest() { super(); } @Test public void shouldCreateMysqlUrl() { + final String expectedJdbcUrl = "jdbc:mariadb://localhost:3306/comp_test"; + + final String mariaDbJdbcUrl = JdbcUrlBuilder + .create(JdbcUrlBuilder.DatabaseType.MARIADB) + .host("localhost") + .port("3306") + .instanceName("comp_test") + .build(); + + Assert.assertEquals(expectedJdbcUrl, mariaDbJdbcUrl); + } + + @Test + public void shouldCreateMysqlUrlNoInstance() { + final String expectedJdbcUrl = "jdbc:mariadb://localhost:3306"; + final String mariaDbJdbcUrl = JdbcUrlBuilder .create(JdbcUrlBuilder.DatabaseType.MARIADB) .host("localhost") + .port("3306").build(); + + Assert.assertEquals(expectedJdbcUrl, mariaDbJdbcUrl); + } + + @Test + public void shouldCreateMysqlReplicationUrl() { + final String expectedJdbcUrl = "jdbc:mariadb:replication://localhost:3306,anotherhost:3306/comp_test"; + + final String mariaDbJdbcUrl = JdbcUrlBuilder + .create(JdbcUrlBuilder.DatabaseType.MARIADB) + .host("localhost, anotherhost") .port("3306") .instanceName("comp_test") .build(); - Assert.assertEquals(MARIADB_JDBC_URL, mariaDbJdbcUrl); + Assert.assertEquals(expectedJdbcUrl, mariaDbJdbcUrl); } } \ No newline at end of file
