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

Reply via email to