You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ik...@apache.org on 2019/08/25 17:10:38 UTC

[fineract-cn-postgresql] 02/12: Revert to Hibernate ORM until migration to Postgres is complete

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-postgresql.git

commit 779aaa65b2ad3d35fcc4f0ea177b378fc162130b
Author: Isaac Kamga <u2...@gmail.com>
AuthorDate: Fri Mar 22 23:34:31 2019 +0100

    Revert to Hibernate ORM until migration to Postgres is complete
---
 build.gradle                                       |  3 +-
 .../config/PostgreSQLJavaConfiguration.java        |  8 ++-
 .../cn/postgresql/util/JdbcUrlBuilder.java         | 32 ++++------
 .../cn/postgresql/util/PostgreSQLConstants.java    |  4 +-
 .../cn/postgresql/util/JdbcUrlBuilderTest.java     | 68 ++++++----------------
 5 files changed, 36 insertions(+), 79 deletions(-)

diff --git a/build.gradle b/build.gradle
index ac19102..64ac70f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -60,8 +60,7 @@ dependencies {
             [group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: versions.springboot],
             [group: 'com.jolbox', name: 'bonecp', version: '0.8.0.RELEASE'],
             [group: 'org.flywaydb', name: 'flyway-core', version: '4.0.1'],
-            [group: 'org.postgresql', name: 'postgresql', version: '42.2.5'],
-            [group: 'org.apache.openjpa', name: 'openjpa', version: '3.0.0']
+            [group: 'org.postgresql', name: 'postgresql', version: '42.2.5']
     )
     testCompile(
             [group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: versions.springboot]
diff --git a/src/main/java/org/apache/fineract/cn/postgresql/config/PostgreSQLJavaConfiguration.java b/src/main/java/org/apache/fineract/cn/postgresql/config/PostgreSQLJavaConfiguration.java
index 9e114dd..09d7a9f 100644
--- a/src/main/java/org/apache/fineract/cn/postgresql/config/PostgreSQLJavaConfiguration.java
+++ b/src/main/java/org/apache/fineract/cn/postgresql/config/PostgreSQLJavaConfiguration.java
@@ -35,7 +35,7 @@ import org.springframework.dao.annotation.PersistenceExceptionTranslationPostPro
 import org.springframework.orm.jpa.JpaTransactionManager;
 import org.springframework.orm.jpa.JpaVendorAdapter;
 import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter;
+import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
 import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
@@ -70,7 +70,7 @@ public class PostgreSQLJavaConfiguration {
     em.setDataSource(dataSource);
     em.setPackagesToScan("org.apache.fineract.cn.**.repository");
 
-    final JpaVendorAdapter vendorAdapter = new OpenJpaVendorAdapter();
+    final JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
     em.setJpaVendorAdapter(vendorAdapter);
     em.setJpaProperties(additionalProperties());
 
@@ -108,6 +108,8 @@ public class PostgreSQLJavaConfiguration {
             .build());
     boneCPDataSource.setUsername(
             this.env.getProperty(PostgreSQLConstants.POSTGRESQL_USER_PROP, PostgreSQLConstants.POSTGRESQL_USER_DEFAULT));
+    boneCPDataSource.setPassword(
+            this.env.getProperty(PostgreSQLConstants.POSTGRESQL_PASSWORD_PROP, PostgreSQLConstants.POSTGRESQL_PASSWORD_DEFAULT));
     boneCPDataSource.setIdleConnectionTestPeriodInMinutes(
             Long.valueOf(this.env.getProperty(PostgreSQLConstants.BONECP_IDLE_CONNECTION_TEST_PROP, PostgreSQLConstants.BONECP_IDLE_CONNECTION_TEST_DEFAULT)));
     boneCPDataSource.setIdleMaxAgeInMinutes(
@@ -131,7 +133,7 @@ public class PostgreSQLJavaConfiguration {
 
   private Properties additionalProperties() {
     final Properties properties = new Properties();
-    properties.setProperty("openjpa.jdbc.DBDictionary", "org.apache.openjpa.jdbc.sql.PostgresDictionary");
+    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
     return properties;
   }
 }
diff --git a/src/main/java/org/apache/fineract/cn/postgresql/util/JdbcUrlBuilder.java b/src/main/java/org/apache/fineract/cn/postgresql/util/JdbcUrlBuilder.java
index d7b6d7b..78ebd0d 100644
--- a/src/main/java/org/apache/fineract/cn/postgresql/util/JdbcUrlBuilder.java
+++ b/src/main/java/org/apache/fineract/cn/postgresql/util/JdbcUrlBuilder.java
@@ -50,32 +50,20 @@ public final class JdbcUrlBuilder {
   }
 
   public String build() {
+    final String[] hostList = this.host.split(",");
     switch (this.type) {
       case POSTGRESQL:
-        final StringBuilder jdbcUrl = new StringBuilder(this.type.getSubProtocol());
-        if (this.host == null){
-          if (this.instanceName == null){
-            jdbcUrl.append("/");
+        final StringBuilder jdbcUrl = new StringBuilder();
+        final String jdbcProtocol = this.type.getSubProtocol() + (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(",");
           }
-          else
-            jdbcUrl.append(instanceName);
         }
-        else {
-          if (this.port == null){
-            if (this.instanceName == null){
-              jdbcUrl.append("//").append(this.host).append("/");
-            }
-            else
-              jdbcUrl.append("//").append(this.host).append("/").append(this.instanceName);
-          }
-          else {
-            if (this.instanceName == null){
-              jdbcUrl.append("//").append(this.host).append(":").append(this.port).append("/");
-            }
-            else {
-              jdbcUrl.append("//").append(this.host).append(":").append(this.port).append("/").append(instanceName);
-            }
-          }
+        if (this.instanceName != null) {
+          jdbcUrl.append("/").append(this.instanceName);
         }
         return jdbcUrl.toString();
       default:
diff --git a/src/main/java/org/apache/fineract/cn/postgresql/util/PostgreSQLConstants.java b/src/main/java/org/apache/fineract/cn/postgresql/util/PostgreSQLConstants.java
index 5ed5aa0..824c03a 100644
--- a/src/main/java/org/apache/fineract/cn/postgresql/util/PostgreSQLConstants.java
+++ b/src/main/java/org/apache/fineract/cn/postgresql/util/PostgreSQLConstants.java
@@ -23,7 +23,7 @@ public interface PostgreSQLConstants {
   String LOGGER_NAME = "postgresql-logger";
 
   String POSTGRESQL_DRIVER_CLASS_PROP = "postgresql.driverClass";
-  String POSTGRESQL_DRIVER_CLASS_DEFAULT = "org.postgresql.jdbc.Driver";
+  String POSTGRESQL_DRIVER_CLASS_DEFAULT = "org.postgresql.Driver";
   String POSTGRESQL_DATABASE_NAME_PROP = "postgresql.database";
   String POSTGRESQL_DATABASE_NAME_DEFAULT = "seshat";
   String POSTGRESQL_HOST_PROP = "postgresql.host";
@@ -32,6 +32,8 @@ public interface PostgreSQLConstants {
   String POSTGRESQL_PORT_DEFAULT = "5432";
   String POSTGRESQL_USER_PROP = "postgresql.user";
   String POSTGRESQL_USER_DEFAULT = "postgres";
+  String POSTGRESQL_PASSWORD_PROP = "postgresql.password";
+  String POSTGRESQL_PASSWORD_DEFAULT = "postgres";
 
   String BONECP_IDLE_MAX_AGE_PROP = "bonecp.idleMaxAgeInMinutes";
   String BONECP_IDLE_MAX_AGE_DEFAULT = "240";
diff --git a/src/test/java/org/apache/fineract/cn/postgresql/util/JdbcUrlBuilderTest.java b/src/test/java/org/apache/fineract/cn/postgresql/util/JdbcUrlBuilderTest.java
index b78a0b4..c5ffe4b 100644
--- a/src/test/java/org/apache/fineract/cn/postgresql/util/JdbcUrlBuilderTest.java
+++ b/src/test/java/org/apache/fineract/cn/postgresql/util/JdbcUrlBuilderTest.java
@@ -33,35 +33,13 @@ public class JdbcUrlBuilderTest {
   }
 
   @Test
-  public void shouldCreatePostgresqlUrlNeitherHostNorPort() {
-    final String expectedJdbcUrl = "jdbc:postgresql:comp_test";
-
-    final String postgresqlJdbcUrl = JdbcUrlBuilder
-            .create(JdbcUrlBuilder.DatabaseType.POSTGRESQL)
-            .instanceName("comp_test")
-            .build();
-
-    Assert.assertEquals(expectedJdbcUrl, postgresqlJdbcUrl);
-  }
-
-  @Test
-  public void shouldCreatePostgresqlUrlNeitherHostNorInstance() {
-    final String expectedJdbcUrl = "jdbc:postgresql:/";
-
-    final String postgresqlJdbcUrl = JdbcUrlBuilder
-            .create(JdbcUrlBuilder.DatabaseType.POSTGRESQL)
-            .build();
-
-    Assert.assertEquals(expectedJdbcUrl, postgresqlJdbcUrl);
-  }
-
-  @Test
-  public void shouldCreatePostgresqlUrlWithHostAndInstance() {
-    final String expectedJdbcUrl = "jdbc:postgresql://localhost/comp_test";
+  public void shouldCreatePostgresqlUrl() {
+    final String expectedJdbcUrl = "jdbc:postgresql://localhost:5432/comp_test";
 
     final String postgresqlJdbcUrl = JdbcUrlBuilder
         .create(JdbcUrlBuilder.DatabaseType.POSTGRESQL)
         .host("localhost")
+        .port("5432")
         .instanceName("comp_test")
         .build();
 
@@ -69,40 +47,28 @@ public class JdbcUrlBuilderTest {
   }
 
   @Test
-  public void shouldCreatePostgresqlUrlNoPort() {
-    final String expectedJdbcUrl = "jdbc:postgresql://localhost/";
+  public void shouldCreateMysqlUrlNoInstance() {
+    final String expectedJdbcUrl = "jdbc:postgresql://localhost:5432";
 
     final String postgresqlJdbcUrl = JdbcUrlBuilder
-        .create(JdbcUrlBuilder.DatabaseType.POSTGRESQL)
-        .host("localhost")
-        .build();
-
-    Assert.assertEquals(expectedJdbcUrl, postgresqlJdbcUrl);
-  }
-
-  @Test
-  public void shouldCreatePostgresqlUrl() {
-    final String expectedJdbcUrl = "jdbc:postgresql://localhost:5432/comp_test";
-
-    final String postgresqlJdbcUrl = JdbcUrlBuilder
-        .create(JdbcUrlBuilder.DatabaseType.POSTGRESQL)
-        .host("localhost")
-        .port("5432")
-        .instanceName("comp_test")
-        .build();
+            .create(JdbcUrlBuilder.DatabaseType.POSTGRESQL)
+            .host("localhost")
+            .port("5432").build();
 
     Assert.assertEquals(expectedJdbcUrl, postgresqlJdbcUrl);
   }
 
   @Test
-  public void shouldCreatePostgresqlUrlNoInstance() {
-    final String expectedJdbcUrl = "jdbc:postgresql://localhost:5432/";
+  public void shouldCreateMysqlReplicationUrl() {
+    final String expectedJdbcUrl = "jdbc:postgresql:replication://localhost:5432,anotherhost:5432/comp_test";
 
-    final String postgresqlJdbcUrl = JdbcUrlBuilder
-        .create(JdbcUrlBuilder.DatabaseType.POSTGRESQL)
-        .host("localhost")
-        .port("5432").build();
+    final String mariaDbJdbcUrl = JdbcUrlBuilder
+            .create(JdbcUrlBuilder.DatabaseType.POSTGRESQL)
+            .host("localhost, anotherhost")
+            .port("5432")
+            .instanceName("comp_test")
+            .build();
 
-    Assert.assertEquals(expectedJdbcUrl, postgresqlJdbcUrl);
+    Assert.assertEquals(expectedJdbcUrl, mariaDbJdbcUrl);
   }
 }
\ No newline at end of file