From a6ab28ee0f1aa2b2d4c1a12c0ab5d6e4a5802370 Mon Sep 17 00:00:00 2001 From: Aravindhan Alagesan Date: Wed, 18 Sep 2024 10:16:30 +0530 Subject: [PATCH] [MOSIP-35065]Fixed the DB issues (#1093) * Fixed startup issue in docker Signed-off-by: Aravindhan Alagesan * Changed from PostgreSQL92Dialect to PostgreSQLDialect Signed-off-by: Aravindhan Alagesan * Fixed startup issue in salt generator Signed-off-by: Aravindhan Alagesan --------- Signed-off-by: Aravindhan Alagesan --- .../id-repository-salt-generator/pom.xml | 80 ++++++++----------- .../config/SaltGeneratorConfig.java | 46 ++++++++++- .../config/SaltGeneratorJobConfig.java | 28 +++---- 3 files changed, 87 insertions(+), 67 deletions(-) diff --git a/id-repository/id-repository-salt-generator/pom.xml b/id-repository/id-repository-salt-generator/pom.xml index 52623393b..8773fbf7b 100644 --- a/id-repository/id-repository-salt-generator/pom.xml +++ b/id-repository/id-repository-salt-generator/pom.xml @@ -30,8 +30,6 @@ 2.3 - 2.0.2.RELEASE - 2.0.7.RELEASE 5.0.5.RELEASE 2.0.4.RELEASE @@ -117,39 +115,31 @@ 1.4.2 1.2.1-java21-SNAPSHOT 1.2.1-java21-SNAPSHOT + 0.8.11 + 2.12.0 42.2.2 org.springframework.boot spring-boot-starter-batch - ${spring.boot.version} org.springframework.boot spring-boot-starter-data-jpa - ${spring.data.jpa.version} + + + org.springframework.boot + spring-boot-starter-web org.springframework.cloud spring-cloud-starter-config - ${spring-cloud-config.version} io.mosip.kernel kernel-core ${kernel-core.version} - - - org.springframework.cloud - spring-cloud-starter-sleuth - - - - - com.fasterxml.jackson.module - jackson-module-afterburner - 2.12.0 io.mosip.kernel @@ -159,45 +149,39 @@ org.postgresql postgresql - ${postgresql.version} - com.h2database - h2 - runtime - 1.4.200 + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + org.projectlombok + lombok + compile + + + org.hibernate.validator + hibernate-validator - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - 2.17.1 - - - - com.fasterxml.jackson.core - jackson-core - 2.17.1 - - - - com.fasterxml.jackson.core - jackson-databind - 2.17.1 - - - - com.fasterxml.jackson.core - jackson-annotations - 2.17.1 - - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - 2.17.1 + javax.xml.bind + jaxb-api + 2.3.1 diff --git a/id-repository/id-repository-salt-generator/src/main/java/io/mosip/idrepository/saltgenerator/config/SaltGeneratorConfig.java b/id-repository/id-repository-salt-generator/src/main/java/io/mosip/idrepository/saltgenerator/config/SaltGeneratorConfig.java index 377be8d81..d50db8c15 100644 --- a/id-repository/id-repository-salt-generator/src/main/java/io/mosip/idrepository/saltgenerator/config/SaltGeneratorConfig.java +++ b/id-repository/id-repository-salt-generator/src/main/java/io/mosip/idrepository/saltgenerator/config/SaltGeneratorConfig.java @@ -1,10 +1,14 @@ package io.mosip.idrepository.saltgenerator.config; import javax.sql.DataSource; +import java.util.HashMap; +import java.util.Map; +import org.hibernate.cfg.AvailableSettings; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.jdbc.datasource.DataSourceTransactionManager; @@ -12,6 +16,7 @@ import org.springframework.context.annotation.Primary; import org.springframework.core.env.Environment; import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.transaction.annotation.EnableTransactionManagement; import static io.mosip.idrepository.saltgenerator.constant.SaltGeneratorConstant.DATASOURCE_ALIAS; import static io.mosip.idrepository.saltgenerator.constant.SaltGeneratorConstant.DATASOURCE_DRIVERCLASSNAME; @@ -19,6 +24,13 @@ import static io.mosip.idrepository.saltgenerator.constant.SaltGeneratorConstant.DATASOURCE_URL; import static io.mosip.idrepository.saltgenerator.constant.SaltGeneratorConstant.DATASOURCE_USERNAME; import static io.mosip.idrepository.saltgenerator.constant.SaltGeneratorConstant.DB_SCHEMA_NAME; +import static io.mosip.idrepository.saltgenerator.constant.SaltGeneratorConstant.PACKAGE_TO_SCAN; + +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy; + +import jakarta.persistence.EntityManagerFactory; /** * The Class SaltGeneratorIdMapDataSourceConfig - Provides configuration for Salt * generator application. @@ -26,6 +38,8 @@ * @author Manoj SP */ @Configuration +@EnableTransactionManagement + public class SaltGeneratorConfig { @Autowired private Environment env; @@ -39,6 +53,30 @@ public class SaltGeneratorConfig { * @return the batch configurer */ + @Bean + @Primary + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); + em.setDataSource(dataSource()); + em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); + em.setPackagesToScan(PACKAGE_TO_SCAN.getValue()); + em.setJpaPropertyMap(additionalProperties()); + return em; + } + + /** + * Additional properties. + * + * @return the map + */ + private Map additionalProperties() { + Map jpaProperties = new HashMap<>(); + jpaProperties.put("hibernate.implicit_naming_strategy", SpringImplicitNamingStrategy.class.getName()); + jpaProperties.put("hibernate.physical_naming_strategy", namingResolver); + jpaProperties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect"); + return jpaProperties; + } + @Bean @Primary public DataSource dataSource() { @@ -48,11 +86,17 @@ public DataSource dataSource() { dataSource.setUsername(env.getProperty(String.format(DATASOURCE_USERNAME.getValue(), alias))); dataSource.setPassword(env.getProperty(String.format(DATASOURCE_PASSWORD.getValue(), alias))); dataSource.setSchema(env.getProperty(DB_SCHEMA_NAME.getValue())); - dataSource.setDriverClassName(env.getProperty(String.format(DATASOURCE_DRIVERCLASSNAME.getValue(), alias))); + dataSource.setDriverClassName("org.postgresql.Driver"); return dataSource; } + @Bean + @Primary + public JpaTransactionManager jpaTransactionManager(EntityManagerFactory emf) { + return new JpaTransactionManager(emf); + } + @Bean public PlatformTransactionManager transactionManager() { return new DataSourceTransactionManager(dataSource()); diff --git a/id-repository/id-repository-salt-generator/src/main/java/io/mosip/idrepository/saltgenerator/config/SaltGeneratorJobConfig.java b/id-repository/id-repository-salt-generator/src/main/java/io/mosip/idrepository/saltgenerator/config/SaltGeneratorJobConfig.java index 6dad8dd13..94fd52da8 100644 --- a/id-repository/id-repository-salt-generator/src/main/java/io/mosip/idrepository/saltgenerator/config/SaltGeneratorJobConfig.java +++ b/id-repository/id-repository-salt-generator/src/main/java/io/mosip/idrepository/saltgenerator/config/SaltGeneratorJobConfig.java @@ -5,8 +5,6 @@ import org.springframework.batch.core.Job; import org.springframework.batch.core.JobExecutionListener; import org.springframework.batch.core.Step; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.launch.support.RunIdIncrementer; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; @@ -15,9 +13,12 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; import org.springframework.core.env.Environment; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.job.builder.JobBuilder; +import org.springframework.batch.core.step.builder.StepBuilder; import io.mosip.idrepository.saltgenerator.entity.IdRepoSaltEntitiesComposite; - +import org.springframework.transaction.PlatformTransactionManager; /** * The Class SaltGeneratorJobConfig - provides configuration for Salt generator Job. * @@ -29,14 +30,6 @@ public class SaltGeneratorJobConfig { @Autowired private Environment env; - - /** The job builder factory. */ - @Autowired - private JobBuilderFactory jobBuilderFactory; - - /** The step builder factory. */ - @Autowired - private StepBuilderFactory stepBuilderFactory; /** The listener. */ @Autowired @@ -57,9 +50,8 @@ public class SaltGeneratorJobConfig { * @return the job */ @Bean - public Job job(Step step) { - return jobBuilderFactory - .get("job") + public Job job(JobRepository jobRepository, Step step) { + return new JobBuilder("job", jobRepository) .incrementer(new RunIdIncrementer()) .listener(listener) .flow(step) @@ -74,10 +66,10 @@ public Job job(Step step) { * @return the step */ @Bean - public Step step() { - return stepBuilderFactory - .get("step") - . chunk(env.getProperty(CHUNK_SIZE.getValue(), Integer.class)) + public Step step(JobRepository jobRepository, PlatformTransactionManager transactionManager) { + return new StepBuilder("step", jobRepository) + . chunk(env.getProperty(CHUNK_SIZE.getValue(), Integer.class), + transactionManager) .reader(reader) .writer(writer) .build();