diff --git a/build.gradle b/build.gradle index ea65956608d..e29d494e244 100644 --- a/build.gradle +++ b/build.gradle @@ -95,7 +95,7 @@ buildscript { dependencies { classpath 'com.bmuschko:gradle-cargo-plugin:2.9.0' - classpath 'org.eclipse.persistence:eclipselink:4.0.9' + classpath 'org.eclipse.persistence:eclipselink:5.0.1' classpath 'jakarta.ws.rs:jakarta.ws.rs-api:3.1.0' classpath 'com.google.cloud.tools:jib-layer-filter-extension-gradle:0.3.0' classpath 'org.apache.commons:commons-lang3:3.20.0' @@ -110,10 +110,9 @@ plugins { id 'com.adarshr.test-logger' version '4.0.0' id 'com.diffplug.spotless' version '6.25.0' apply false id 'org.nosphere.apache.rat' version '0.8.1' apply false - id 'com.github.hierynomus.license' version '0.16.1' apply false id 'com.github.jk1.dependency-license-report' version '2.9' apply false id 'org.zeroturnaround.gradle.jrebel' version '1.2.2' apply false - id 'org.springframework.boot' version '3.5.15' apply false + id 'org.springframework.boot' version '4.0.7' apply false id 'net.ltgt.errorprone' version '4.4.0' apply false id 'io.swagger.core.v3.swagger-gradle-plugin' version '2.2.49' apply false id 'com.gorylenko.gradle-git-properties' version '2.5.7' apply false @@ -163,6 +162,9 @@ gitVersioning.apply { ext['groovy.version'] = '4.0.17' ext['swaggerFile'] = "$rootDir/fineract-provider/build/resources/main/static/fineract.json".toString() +ext['apacheLicenseHeader'] = "/**\n" + rootProject.file("$rootDir/APACHE_LICENSETEXT.md").readLines() + .collect { it.isEmpty() ? " *" : " * $it" } + .join("\n") + "\n */\n" // Apply static weaving configuration to all subprojects subprojects { subproject -> @@ -197,10 +199,12 @@ allprojects { apply plugin: 'com.adarshr.test-logger' apply plugin: 'com.diffplug.spotless' - apply plugin: 'com.github.hierynomus.license' apply plugin: 'net.ltgt.errorprone' tasks.withType(JavaCompile).configureEach { + inputs.file(rootProject.file('lombok.config')) + .withPropertyName('lombokConfig') + .withPathSensitivity(PathSensitivity.RELATIVE) options.errorprone { disableWarningsInGeneratedCode = true disable( @@ -250,29 +254,6 @@ allprojects { lineEndings 'UNIX' } - // Configuration for Gradle license plug-in - // https://github.com/hierynomus/license-gradle-plugin - license { - header rootProject.file("$rootDir/APACHE_LICENSETEXT.md") - excludes([ - "**/gradlew*", - "**/git.properties", - "**/*.html", - "**/templates/**", - "**/features/**", - "**/results/**", - "**/package-info.java", - "**/keystore.jks", - "**/legacy-docs/**", - "**/banner.txt", - "**/build.gradle.mustache", - "**/pom.mustache", - "**/avro/**/*.java", - "**/org/apache/fineract/client/**/*.java" - ]) - strictCheck true - } - licenseReport { outputDir = "$projectDir/licenses" } @@ -408,6 +389,11 @@ configure(project.fineractJavaProjects) { cacheChangingModulesFor 0, 'seconds' cacheDynamicVersionsFor 0, 'seconds' } + // com.sun.activation:jakarta.activation is superseded by jakarta.activation-api + + // org.eclipse.angus:angus-activation; multiple third-party libraries (e.g. jaxb-runtime + // via tika, via hibernate-core) pull it in transitively without excluding it themselves, + // so it must be excluded globally to avoid classpath duplicates + exclude group: 'com.sun.activation', module: 'jakarta.activation' } tasks.withType(JavaCompile).configureEach { @@ -493,7 +479,7 @@ configure(project.fineractJavaProjects) { } check { - dependsOn(rat, licenseMain, licenseTest) + dependsOn(rat) } dependencies { @@ -540,6 +526,13 @@ configure(project.fineractJavaProjects) { } } + format 'javaLicenseHeader', { + target sourceSets.main.java, sourceSets.test.java + targetExclude '**/build/**', '**/bin/**', '**/out/**', '**/package-info.java', '**/avro/**/*.java', + '**/org/apache/fineract/client/**/*.java' + licenseHeader(rootProject.ext['apacheLicenseHeader'], 'package ') + } + lineEndings 'UNIX' } @@ -691,7 +684,7 @@ configure(project.fineractJavaProjects) { } check { - dependsOn(rat, licenseMain, licenseTest) + dependsOn(rat) } dependencies { @@ -700,6 +693,7 @@ configure(project.fineractJavaProjects) { 'org.slf4j:slf4j-api', 'org.slf4j:log4j-over-slf4j', 'org.slf4j:jul-to-slf4j', + 'org.slf4j:jcl-over-slf4j', ) implementation ("ch.qos.logback:logback-classic") { exclude(module: "slf4j-api") diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index b1278dfa5e4..fdba1d28f47 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -51,8 +51,8 @@ configurations.all { } dependencies { - implementation 'com.sun.activation:jakarta.activation' - implementation 'com.sun.mail:jakarta.mail' + implementation 'org.eclipse.angus:angus-activation' + implementation 'org.eclipse.angus:angus-mail' implementation 'org.freemarker:freemarker' implementation ('com.tmatesoft.svnkit:svnkit') { exclude group: 'net.i2p.crypto', module: 'eddsa' diff --git a/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle b/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle index ea9ab7d2585..9a823f612d1 100644 --- a/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle +++ b/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle @@ -25,11 +25,11 @@ dependencyManagement { mavenBom 'com.squareup.okhttp3:okhttp-bom:4.12.0' mavenBom 'org.slf4j:slf4j-bom:2.0.17' mavenBom 'io.micrometer:micrometer-bom:1.16.5' - mavenBom 'org.springframework.boot:spring-boot-dependencies:3.5.15' + mavenBom 'org.springframework.boot:spring-boot-dependencies:4.0.7' mavenBom 'io.awspring.cloud:spring-cloud-aws-dependencies:4.0.2' mavenBom 'io.opentelemetry:opentelemetry-bom:1.62.0' mavenBom 'org.jetbrains.kotlin:kotlin-bom:2.3.21' - mavenBom 'org.junit:junit-bom:5.14.4' + mavenBom 'org.junit:junit-bom:6.0.3' mavenBom 'com.fasterxml.jackson:jackson-bom:2.22.1' mavenBom 'io.cucumber:cucumber-bom:7.34.3' mavenBom 'org.mockito:mockito-bom:5.23.0' @@ -50,7 +50,7 @@ dependencyManagement { dependency 'ch.qos.logback.contrib:logback-jackson:0.1.5' dependency 'org.codehaus.janino:janino:3.1.12' - dependency 'org.eclipse.persistence:org.eclipse.persistence.jpa:4.0.9' + dependency 'org.eclipse.persistence:org.eclipse.persistence.jpa:5.0.1' dependency 'com.google.guava:guava:33.6.0-jre' dependency 'com.google.code.gson:gson:2.14.0' dependency 'com.google.googlejavaformat:google-java-format:1.35.0' @@ -63,6 +63,7 @@ dependencyManagement { exclude 'com.sun.mail:javax.mail' exclude 'javax.activation:activation' } + dependency 'org.apache.commons:commons-email2-jakarta:2.0.0-M1' dependency 'commons-io:commons-io:2.22.0' dependency 'com.github.librepdf:openpdf:3.0.4' dependency ('org.mnode.ical4j:ical4j:3.2.19') { @@ -180,7 +181,7 @@ dependencyManagement { dependency 'com.vdurmont:semver4j:3.1.0' dependency 'org.beryx:text-io:3.4.1' - dependency ('org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.17') { + dependency ('org.springdoc:springdoc-openapi-starter-webmvc-ui:3.0.2') { exclude 'io.swagger.core.v3:swagger-core' } @@ -198,10 +199,7 @@ dependencyManagement { dependency 'jakarta.annotation:jakarta.annotation-api:3.0.0' dependency 'jakarta.activation:jakarta.activation-api:2.1.4' - dependency ('com.sun.mail:jakarta.mail:2.0.2') { - // Spring needs this version - exclude 'com.sun.activation:jakarta.activation' - } + dependency 'org.eclipse.angus:angus-activation:2.0.3' dependency ('jakarta.xml.bind:jakarta.xml.bind-api:4.0.5') { exclude 'jakarta.activation:jakarta.activation-api' } @@ -270,10 +268,9 @@ dependencyManagement { dependency 'org.openjdk.jmh:jmh-core:1.37' dependency 'org.openjdk.jmh:jmh-generator-annprocess:1.37' - dependency 'org.springframework.restdocs:spring-restdocs-asciidoctor:3.0.5' - dependency 'org.springframework.restdocs:spring-restdocs-mockmvc:3.0.5' - dependency 'org.springframework.restdocs:spring-restdocs-webtestclient:3.0.5' - dependency 'org.springframework.restdocs:spring-restdocs-restassured:3.0.5' + dependency 'org.springframework.restdocs:spring-restdocs-asciidoctor:4.0.1' + dependency 'org.springframework.restdocs:spring-restdocs-mockmvc:4.0.1' + dependency 'org.springframework.restdocs:spring-restdocs-webtestclient:4.0.1' dependency 'com.lmax:disruptor:4.0.0' @@ -287,8 +284,11 @@ dependencyManagement { dependency 'org.yakworks:spring-icu4j:0.5.2' dependency 'org.apache.commons:commons-lang3:3.20.0' dependency 'com.nimbusds:nimbus-jose-jwt:10.9' - dependency 'org.springframework:spring-core:6.2.18' - dependency 'org.springframework.security:spring-security-core:6.5.10' + dependency 'org.springframework:spring-core:7.0.8' + dependency 'org.springframework.security:spring-security-core:7.0.6' + dependency 'io.github.resilience4j:resilience4j-spring-boot4:2.4.0' + // New in Boot 4; the dependency-management plugin does not pick up its version from the Boot BOM. + dependency 'org.springframework.boot:spring-boot-starter-liquibase:4.0.7' // Keep Netty on the 4.1 line for MockServer compatibility. dependency 'io.netty:netty-buffer:4.1.135.Final' dependency 'io.netty:netty-common:4.1.135.Final' @@ -309,8 +309,8 @@ dependencyManagement { dependency 'at.yawk.lz4:lz4-java:1.11.0' dependency 'org.thymeleaf:thymeleaf:3.1.5.RELEASE' dependency 'org.thymeleaf:thymeleaf-spring6:3.1.5.RELEASE' - dependency 'org.apache.tomcat.embed:tomcat-embed-core:10.1.55' - dependency 'org.apache.tomcat.embed:tomcat-embed-el:10.1.55' - dependency 'org.apache.tomcat.embed:tomcat-embed-websocket:10.1.55' + dependency 'org.apache.tomcat.embed:tomcat-embed-core:11.0.22' + dependency 'org.apache.tomcat.embed:tomcat-embed-el:11.0.22' + dependency 'org.apache.tomcat.embed:tomcat-embed-websocket:11.0.22' } } diff --git a/custom/acme/loan/job/dependencies.gradle b/custom/acme/loan/job/dependencies.gradle index 60b496193d9..44a1e14b2fa 100644 --- a/custom/acme/loan/job/dependencies.gradle +++ b/custom/acme/loan/job/dependencies.gradle @@ -21,6 +21,7 @@ dependencies { implementation(project(':fineract-core')) implementation(project(':fineract-loan')) implementation(project(':fineract-provider')) + implementation('org.springframework.boot:spring-boot-starter-batch') implementation('org.springframework.batch:spring-batch-integration') implementation('org.springframework.boot:spring-boot-starter-data-jpa') } diff --git a/custom/acme/loan/job/src/main/java/com/acme/fineract/loan/job/AcmeNoopJobConfiguration.java b/custom/acme/loan/job/src/main/java/com/acme/fineract/loan/job/AcmeNoopJobConfiguration.java index e6545cdc0ee..abf7ec0cfac 100644 --- a/custom/acme/loan/job/src/main/java/com/acme/fineract/loan/job/AcmeNoopJobConfiguration.java +++ b/custom/acme/loan/job/src/main/java/com/acme/fineract/loan/job/AcmeNoopJobConfiguration.java @@ -19,11 +19,11 @@ package com.acme.fineract.loan.job; import lombok.RequiredArgsConstructor; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/custom/acme/loan/job/src/main/java/com/acme/fineract/loan/job/AcmeNoopJobTasklet.java b/custom/acme/loan/job/src/main/java/com/acme/fineract/loan/job/AcmeNoopJobTasklet.java index 4c644e1cec2..2c6cb78f19a 100644 --- a/custom/acme/loan/job/src/main/java/com/acme/fineract/loan/job/AcmeNoopJobTasklet.java +++ b/custom/acme/loan/job/src/main/java/com/acme/fineract/loan/job/AcmeNoopJobTasklet.java @@ -19,10 +19,10 @@ package com.acme.fineract.loan.job; import lombok.extern.slf4j.Slf4j; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.stereotype.Component; @Slf4j diff --git a/custom/acme/loan/job/src/test/java/AcmeNoopJobTaskletTest.java b/custom/acme/loan/job/src/test/java/com/acme/fineract/loan/job/AcmeNoopJobTaskletTest.java similarity index 87% rename from custom/acme/loan/job/src/test/java/AcmeNoopJobTaskletTest.java rename to custom/acme/loan/job/src/test/java/com/acme/fineract/loan/job/AcmeNoopJobTaskletTest.java index 4b8f076ec7d..32489707022 100644 --- a/custom/acme/loan/job/src/test/java/AcmeNoopJobTaskletTest.java +++ b/custom/acme/loan/job/src/test/java/com/acme/fineract/loan/job/AcmeNoopJobTaskletTest.java @@ -1,4 +1,3 @@ - /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -17,18 +16,19 @@ * specific language governing permissions and limitations * under the License. */ +package com.acme.fineract.loan.job; + import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.springframework.batch.repeat.RepeatStatus.FINISHED; +import static org.springframework.batch.infrastructure.repeat.RepeatStatus.FINISHED; -import com.acme.fineract.loan.job.AcmeNoopJobTasklet; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @ExtendWith(MockitoExtension.class) public class AcmeNoopJobTaskletTest { diff --git a/fineract-accounting/build.gradle b/fineract-accounting/build.gradle index 9f7ab3ab4e1..fbc0c3563bb 100644 --- a/fineract-accounting/build.gradle +++ b/fineract-accounting/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-accounting/dependencies.gradle b/fineract-accounting/dependencies.gradle index 907e72eac20..3646e1b1da5 100644 --- a/fineract-accounting/dependencies.gradle +++ b/fineract-accounting/dependencies.gradle @@ -32,7 +32,7 @@ dependencies { ) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'org.springframework.boot:spring-boot-starter-batch', 'org.springframework.batch:spring-batch-integration', @@ -53,7 +53,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' compileOnly 'org.projectlombok:lombok' @@ -76,5 +76,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepositoryWrapper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepositoryWrapper.java index 6ff241e711e..a072e637887 100644 --- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepositoryWrapper.java +++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepositoryWrapper.java @@ -20,7 +20,6 @@ import java.util.List; import org.apache.fineract.accounting.financialactivityaccount.exception.FinancialActivityAccountNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -33,7 +32,6 @@ public class FinancialActivityAccountRepositoryWrapper { private final FinancialActivityAccountRepository repository; - @Autowired public FinancialActivityAccountRepositoryWrapper(final FinancialActivityAccountRepository repository) { this.repository = repository; } diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java index 41836a3ac03..c35a269091b 100644 --- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java +++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.accounting.glaccount.domain; import jakarta.persistence.Column; diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepository.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepository.java index dd83fc4f6d6..c270465c7bb 100644 --- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepository.java +++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepository.java @@ -23,12 +23,13 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.NativeQuery; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; public interface TrialBalanceRepository extends JpaRepository, JpaSpecificationExecutor { - @Query(value = "select * from m_trial_balance where office_id=:officeId and account_id=:accountId and closing_balance is null order by created_date, entry_date", nativeQuery = true) + @NativeQuery("select * from m_trial_balance where office_id=:officeId and account_id=:accountId and closing_balance is null order by created_date, entry_date") List findNewByOfficeAndAccount(@Param("officeId") Long officeId, @Param("accountId") Long accountId); @Query("SELECT MAX(tb.transactionDate) FROM TrialBalance tb") diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepositoryWrapper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepositoryWrapper.java index 28cae367941..8a93a6038e2 100644 --- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepositoryWrapper.java +++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepositoryWrapper.java @@ -20,7 +20,6 @@ import java.util.List; import org.apache.fineract.accounting.trialbalance.exception.TrialBalanceNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -28,7 +27,6 @@ public class TrialBalanceRepositoryWrapper { private final TrialBalanceRepository repository; - @Autowired public TrialBalanceRepositoryWrapper(final TrialBalanceRepository repository) { this.repository = repository; } diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsConfig.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsConfig.java index cb327cfb10e..2fbe59de054 100644 --- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsConfig.java +++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsConfig.java @@ -24,11 +24,11 @@ import org.apache.fineract.accounting.journalentry.domain.JournalEntryRepository; import org.apache.fineract.infrastructure.core.service.database.RoutingDataSourceServiceFactory; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsTasklet.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsTasklet.java index e4718f3f580..e4cf5e6c857 100644 --- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsTasklet.java +++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsTasklet.java @@ -30,10 +30,10 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.infrastructure.core.service.database.RoutingDataSourceServiceFactory; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.util.CollectionUtils; diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryDataValidator.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryDataValidator.java index e8ded465b95..e44df8a9d03 100644 --- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryDataValidator.java +++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryDataValidator.java @@ -32,7 +32,6 @@ import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -43,7 +42,6 @@ public class JournalEntryDataValidator { private static final Set RUNNING_BALANCE_UPDATE_REQUEST_DATA_PARAMETERS = new HashSet<>( Collections.singletonList(JournalEntryJsonInputParams.OFFICE_ID.getValue())); - @Autowired public JournalEntryDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepositoryWrapper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepositoryWrapper.java index 09cdbf4f94a..b3ca395e794 100644 --- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepositoryWrapper.java +++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.accounting.rule.domain; import org.apache.fineract.accounting.rule.exception.AccountingRuleNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -32,7 +31,6 @@ public class AccountingRuleRepositoryWrapper { private final AccountingRuleRepository repository; - @Autowired public AccountingRuleRepositoryWrapper(final AccountingRuleRepository repository) { this.repository = repository; } diff --git a/fineract-avro-schemas/build.gradle b/fineract-avro-schemas/build.gradle index b9a277b201c..9eeefbea0dd 100644 --- a/fineract-avro-schemas/build.gradle +++ b/fineract-avro-schemas/build.gradle @@ -103,11 +103,19 @@ compileJava { } java { - // keep this at Java 8, not 17 + // keep this at Java 8, not 17; see https://issues.apache.org/jira/browse/FINERACT-1214 sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } +// Same rationale as fineract-client: keep the published artifact at Java 8 while +// letting the (empty) test classpath resolve Java 17 test dependencies. +[configurations.testCompileClasspath, configurations.testRuntimeClasspath].each { + it.attributes { + attribute(org.gradle.api.attributes.java.TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 17) + } +} + tasks.withType(JavaCompile).configureEach { options.errorprone { enabled = false // Disable ErrorProne for this module since it contains generated code @@ -124,10 +132,15 @@ test { useJUnitPlatform() } -licenseFormatMain.dependsOn buildJavaSdk -licenseMain.dependsOn licenseFormatMain +spotlessJavaApply.dependsOn buildJavaSdk +spotlessJavaCheck.dependsOn spotlessJavaApply tasks.named('sourcesJar') { dependsOn tasks.named('buildJavaSdk') duplicatesStrategy = DuplicatesStrategy.EXCLUDE } + +dependencies { + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" + runtimeOnly "javax.xml.bind:jaxb-api:2.3.1" +} diff --git a/fineract-branch/build.gradle b/fineract-branch/build.gradle index 068ca03aeff..421759723d2 100644 --- a/fineract-branch/build.gradle +++ b/fineract-branch/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-branch/dependencies.gradle b/fineract-branch/dependencies.gradle index c5c3ff7b67d..204d37145aa 100644 --- a/fineract-branch/dependencies.gradle +++ b/fineract-branch/dependencies.gradle @@ -28,7 +28,7 @@ dependencies { implementation(project(path: ':fineract-accounting')) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'jakarta.ws.rs:jakarta.ws.rs-api', 'org.glassfish.jersey.media:jersey-media-multipart', @@ -47,7 +47,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' @@ -71,5 +71,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionDataValidator.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionDataValidator.java index 7667fdfba50..14e6efcfb0b 100644 --- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionDataValidator.java +++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/data/CashierTransactionDataValidator.java @@ -36,7 +36,6 @@ import org.apache.fineract.useradministration.domain.AppUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; @@ -48,7 +47,6 @@ public class CashierTransactionDataValidator { private final NamedParameterJdbcTemplate jdbcTemplate; private static final Logger LOG = LoggerFactory.getLogger(CashierTransactionDataValidator.class); - @Autowired public CashierTransactionDataValidator(final TellerManagementReadPlatformService tellerManagementReadPlatformService, final NamedParameterJdbcTemplate jdbcTemplate) { this.tellerManagementReadPlatformService = tellerManagementReadPlatformService; diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/CashierRepositoryWrapper.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/CashierRepositoryWrapper.java index 147c29ad234..391d20bfc80 100644 --- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/CashierRepositoryWrapper.java +++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/CashierRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.organisation.teller.domain; import org.apache.fineract.organisation.teller.exception.TellerNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -27,7 +26,6 @@ public class CashierRepositoryWrapper { private final CashierRepository repository; - @Autowired public CashierRepositoryWrapper(final CashierRepository repository) { this.repository = repository; } diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java index f0b335d1e41..17519c97452 100644 --- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java +++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.organisation.teller.domain; import org.apache.fineract.organisation.teller.exception.TellerNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,7 +27,6 @@ public class TellerRepositoryWrapper { private final TellerRepository repository; - @Autowired public TellerRepositoryWrapper(final TellerRepository repository) { this.repository = repository; } diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/model/CashiersForTeller.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/model/CashiersForTeller.java index bc855cb4d17..3739c170c39 100644 --- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/model/CashiersForTeller.java +++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/model/CashiersForTeller.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.organisation.teller.domain.model; import java.io.Serializable; diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/serialization/TellerCommandFromApiJsonDeserializer.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/serialization/TellerCommandFromApiJsonDeserializer.java index 5b6f3f57047..8260932f880 100644 --- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/serialization/TellerCommandFromApiJsonDeserializer.java +++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/serialization/TellerCommandFromApiJsonDeserializer.java @@ -37,7 +37,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.organisation.teller.exception.InvalidDateInputException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -77,7 +76,6 @@ public final class TellerCommandFromApiJsonDeserializer { TXN_DATE, TXN_NOTE, ENTITY_TYPE, ENTITY_ID, CURRENCY_CODE)); private final FromJsonHelper fromApiJsonHelper; - @Autowired public TellerCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-branch/src/test/java/org/apache/fineract/organisation/teller/serialization/TellerCommandFromApiJsonDeserializerTest.java b/fineract-branch/src/test/java/org/apache/fineract/organisation/teller/serialization/TellerCommandFromApiJsonDeserializerTest.java index d883a0b4d49..bed07b8638f 100644 --- a/fineract-branch/src/test/java/org/apache/fineract/organisation/teller/serialization/TellerCommandFromApiJsonDeserializerTest.java +++ b/fineract-branch/src/test/java/org/apache/fineract/organisation/teller/serialization/TellerCommandFromApiJsonDeserializerTest.java @@ -21,8 +21,6 @@ import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertThrows; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; @@ -30,11 +28,14 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.function.Executable; -import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; class TellerCommandFromApiJsonDeserializerTest { @@ -42,7 +43,7 @@ class TellerCommandFromApiJsonDeserializerTest { private final TellerCommandFromApiJsonDeserializer underTest = new TellerCommandFromApiJsonDeserializer(fromJsonHelper); @Test - public void testCashTxnValidJsonPassesValidation() throws JsonProcessingException { + public void testCashTxnValidJsonPassesValidation() throws JacksonException { String json = cashTxnJson(BigDecimal.valueOf(1000), "10 September 2022", "Test note", "USD"); assertDoesNotThrow(() -> underTest.validateForCashTxnForCashier(json)); } @@ -83,7 +84,7 @@ public void testCashTxnCurrencyCodeExceedingMaxLengthThrowsValidationException() @NonNull private String cashTxnJson(@Nullable BigDecimal txnAmount, @Nullable String txnDate, @Nullable String txnNote, - @Nullable String currencyCode) throws JsonProcessingException { + @Nullable String currencyCode) throws JacksonException { Map map = new HashMap<>(); map.put("dateFormat", "dd MMMM yyyy"); map.put("locale", "en"); @@ -95,8 +96,8 @@ private String cashTxnJson(@Nullable BigDecimal txnAmount, @Nullable String txnD } @NonNull - private String createJsonCommand(Map jsonMap) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); + private String createJsonCommand(Map jsonMap) throws JacksonException { + ObjectMapper objectMapper = new JsonMapper(); return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonMap); } diff --git a/fineract-charge/build.gradle b/fineract-charge/build.gradle index 2bc9d7e294d..afdeace0cbc 100644 --- a/fineract-charge/build.gradle +++ b/fineract-charge/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-charge/dependencies.gradle b/fineract-charge/dependencies.gradle index 13291535f11..11d842bb2d6 100644 --- a/fineract-charge/dependencies.gradle +++ b/fineract-charge/dependencies.gradle @@ -28,7 +28,7 @@ dependencies { implementation(project(path: ':fineract-tax')) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'jakarta.ws.rs:jakarta.ws.rs-api', 'org.glassfish.jersey.media:jersey-media-multipart', @@ -47,7 +47,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' @@ -71,5 +71,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationTypeConverter.java b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationTypeConverter.java index a942da3b3bf..81149e57a6e 100644 --- a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationTypeConverter.java +++ b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationTypeConverter.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.charge.domain; import jakarta.persistence.AttributeConverter; diff --git a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentModeConverter.java b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentModeConverter.java index 96bce140cf8..174f5c07971 100644 --- a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentModeConverter.java +++ b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentModeConverter.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.charge.domain; import jakarta.persistence.AttributeConverter; diff --git a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java index 68cb44c44d5..0b1ce7fabff 100644 --- a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java +++ b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java @@ -20,7 +20,6 @@ import org.apache.fineract.portfolio.charge.exception.ChargeIsNotActiveException; import org.apache.fineract.portfolio.charge.exception.ChargeNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -39,7 +38,6 @@ public class ChargeRepositoryWrapper { private final ChargeRepository repository; - @Autowired public ChargeRepositoryWrapper(final ChargeRepository repository) { this.repository = repository; } diff --git a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java index b95e4da8eb7..a711bdfe4a7 100644 --- a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java +++ b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java @@ -42,7 +42,6 @@ import org.apache.fineract.portfolio.charge.domain.ChargeCalculationType; import org.apache.fineract.portfolio.charge.domain.ChargePaymentMode; import org.apache.fineract.portfolio.charge.domain.ChargeTimeType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -83,7 +82,6 @@ public final class ChargeDefinitionCommandFromApiJsonDeserializer { ENABLE_PAYMENT_TYPE, ChargesApiConstants.glAccountIdParamName, ChargesApiConstants.taxGroupIdParamName)); private final FromJsonHelper fromApiJsonHelper; - @Autowired public ChargeDefinitionCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-client-feign/build.gradle b/fineract-client-feign/build.gradle index 7c28cda3f8e..503924ad1d6 100644 --- a/fineract-client-feign/build.gradle +++ b/fineract-client-feign/build.gradle @@ -119,8 +119,8 @@ task cleanupGeneratedJavaFiles() { tasks.named('compileJava') { outputs.cacheIf { true } - dependsOn(buildJavaSdk, cleanupGeneratedJavaFiles, licenseFormatMain, spotlessMiscApply) - mustRunAfter(licenseFormatMain, cleanupGeneratedJavaFiles) + dependsOn(buildJavaSdk, cleanupGeneratedJavaFiles, spotlessMiscApply) + mustRunAfter(cleanupGeneratedJavaFiles) } tasks.named('sourcesJar') { @@ -132,17 +132,6 @@ tasks.named('sourcesJar') { } } -tasks.named('licenseFormatMain') { - dependsOn(cleanupGeneratedJavaFiles) - mustRunAfter(cleanupGeneratedJavaFiles) - source = sourceSets.main.java.srcDirs -} - -tasks.named('licenseMain') { - dependsOn(licenseFormatMain) - mustRunAfter(licenseFormatMain) -} - tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' options.compilerArgs << '-parameters' @@ -198,3 +187,8 @@ jacocoTestReport { test { finalizedBy jacocoTestReport } + +dependencies { + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" + runtimeOnly "javax.xml.bind:jaxb-api:2.3.1" +} diff --git a/fineract-client-feign/dependencies.gradle b/fineract-client-feign/dependencies.gradle index 6772283952b..fdcd5ed0354 100644 --- a/fineract-client-feign/dependencies.gradle +++ b/fineract-client-feign/dependencies.gradle @@ -30,6 +30,7 @@ dependencies { 'com.fasterxml.jackson.core:jackson-databind', 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310', 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8', + 'tools.jackson.core:jackson-databind', 'org.openapitools:jackson-databind-nullable:0.2.6', 'jakarta.annotation:jakarta.annotation-api', 'io.swagger.core.v3:swagger-annotations-jakarta', diff --git a/fineract-client-feign/src/main/java/org/apache/fineract/client/adapter/ExternalIdAdapter.java b/fineract-client-feign/src/main/java/org/apache/fineract/client/adapter/ExternalIdAdapter.java index 00bd2f0ee0c..3161e57ef9c 100644 --- a/fineract-client-feign/src/main/java/org/apache/fineract/client/adapter/ExternalIdAdapter.java +++ b/fineract-client-feign/src/main/java/org/apache/fineract/client/adapter/ExternalIdAdapter.java @@ -18,15 +18,15 @@ */ package org.apache.fineract.client.adapter; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.module.SimpleModule; -import java.io.IOException; import org.apache.fineract.client.models.ExternalId; +import tools.jackson.core.JacksonException; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueDeserializer; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.module.SimpleModule; /** * Custom Jackson adapter for ExternalId type serialization and deserialization. This adapter ensures that ExternalId @@ -40,10 +40,10 @@ private ExternalIdAdapter() {} * Jackson Serializer for ExternalId. Serializes an ExternalId object to its string value, or null if the ExternalId * or its value is null. */ - public static class Serializer extends JsonSerializer { + public static class Serializer extends ValueSerializer { @Override - public void serialize(ExternalId value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + public void serialize(ExternalId value, JsonGenerator gen, SerializationContext ctxt) throws JacksonException { if (value == null || value.getValue() == null) { gen.writeNull(); } else { @@ -56,10 +56,10 @@ public void serialize(ExternalId value, JsonGenerator gen, SerializerProvider se * Jackson Deserializer for ExternalId. Deserializes a string value to an ExternalId object, or null if the input is * null. */ - public static class Deserializer extends JsonDeserializer { + public static class Deserializer extends ValueDeserializer { @Override - public ExternalId deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + public ExternalId deserialize(JsonParser p, DeserializationContext ctxt) throws JacksonException { String value = p.getValueAsString(); if (value == null) { return null; diff --git a/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/FineractErrorDecoder.java b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/FineractErrorDecoder.java index 49ea02dbc45..13c6269c4a5 100644 --- a/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/FineractErrorDecoder.java +++ b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/FineractErrorDecoder.java @@ -18,12 +18,13 @@ */ package org.apache.fineract.client.feign; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import feign.Response; import feign.codec.ErrorDecoder; import java.io.IOException; import java.io.InputStream; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public class FineractErrorDecoder implements ErrorDecoder { @@ -53,7 +54,7 @@ public Exception decode(String methodKey, Response response) { response.request(), bodyData, enhancedDeveloperMessage, userMessage, userMessageGlobalisationCode, response.headers()); } - } catch (IOException e) { + } catch (JacksonException e) { return defaultDecoder.decode(methodKey, response); } } diff --git a/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/FineractFeignClientConfig.java b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/FineractFeignClientConfig.java index 098dadfbb58..0d262fb606d 100644 --- a/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/FineractFeignClientConfig.java +++ b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/FineractFeignClientConfig.java @@ -24,8 +24,6 @@ import feign.Retryer; import feign.codec.Encoder; import feign.hc5.ApacheHttp5Client; -import feign.jackson.JacksonDecoder; -import feign.jackson.JacksonEncoder; import feign.slf4j.Slf4jLogger; import java.security.cert.X509Certificate; import java.util.concurrent.TimeUnit; @@ -92,11 +90,11 @@ public static Builder builder() { } public T createClient(Class apiType) { - JacksonEncoder jacksonEncoder = new JacksonEncoder(ObjectMapperFactory.getShared()); + Jackson3Encoder jacksonEncoder = new Jackson3Encoder(ObjectMapperFactory.getShared()); Encoder multipartEncoder = new FineractMultipartEncoder(jacksonEncoder); return Feign.builder().client(getOrCreateHttpClient()).encoder(multipartEncoder) - .decoder(new ApiResponseDecoder(new JacksonDecoder(ObjectMapperFactory.getShared()))) + .decoder(new ApiResponseDecoder(new Jackson3Decoder(ObjectMapperFactory.getShared()))) .errorDecoder(new FineractErrorDecoder()) .options(new Request.Options(connectTimeout, TimeUnit.MILLISECONDS, readTimeout, TimeUnit.MILLISECONDS, true)) .retryer(Retryer.NEVER_RETRY).requestInterceptor(new BasicAuthRequestInterceptor(username, password)) diff --git a/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/Jackson3Decoder.java b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/Jackson3Decoder.java new file mode 100644 index 00000000000..9043ce934b6 --- /dev/null +++ b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/Jackson3Decoder.java @@ -0,0 +1,53 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.client.feign; + +import feign.Response; +import feign.codec.DecodeException; +import feign.codec.Decoder; +import java.io.IOException; +import java.io.Reader; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; + +public class Jackson3Decoder implements Decoder { + + private final ObjectMapper mapper; + + public Jackson3Decoder(ObjectMapper mapper) { + this.mapper = mapper; + } + + @Override + public Object decode(Response response, Type type) throws IOException, DecodeException { + if (response.body() == null) { + return null; + } + try (Reader reader = response.body().asReader(StandardCharsets.UTF_8)) { + if (!reader.ready()) { + return null; + } + return mapper.readValue(reader, mapper.constructType(type)); + } catch (JacksonException e) { + throw new DecodeException(response.status(), e.getMessage(), response.request(), e); + } + } +} diff --git a/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/Jackson3Encoder.java b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/Jackson3Encoder.java new file mode 100644 index 00000000000..12c18bcf1c5 --- /dev/null +++ b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/Jackson3Encoder.java @@ -0,0 +1,45 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.client.feign; + +import feign.RequestTemplate; +import feign.codec.EncodeException; +import feign.codec.Encoder; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; + +public class Jackson3Encoder implements Encoder { + + private final ObjectMapper mapper; + + public Jackson3Encoder(ObjectMapper mapper) { + this.mapper = mapper; + } + + @Override + public void encode(Object object, Type bodyType, RequestTemplate template) throws EncodeException { + try { + template.body(mapper.writeValueAsBytes(object), StandardCharsets.UTF_8); + } catch (JacksonException e) { + throw new EncodeException(e.getMessage(), e); + } + } +} diff --git a/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/ObjectMapperFactory.java b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/ObjectMapperFactory.java index 2acfc9fe037..8ccc7670b16 100644 --- a/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/ObjectMapperFactory.java +++ b/fineract-client-feign/src/main/java/org/apache/fineract/client/feign/ObjectMapperFactory.java @@ -19,12 +19,9 @@ package org.apache.fineract.client.feign; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.apache.fineract.client.adapter.ExternalIdAdapter; -import org.openapitools.jackson.nullable.JsonNullableModule; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; /** * Factory for creating and configuring Jackson ObjectMapper instances. @@ -43,26 +40,10 @@ private ObjectMapperFactory() { * @return A new configured ObjectMapper instance */ public static ObjectMapper createObjectMapper() { - ObjectMapper mapper = new ObjectMapper(); - - // Configure the ObjectMapper - mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - mapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true); - mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); - - // Register Java 8 date/time support - mapper.registerModule(new JavaTimeModule()); - - // Support OpenAPI-generated JsonNullable fields - mapper.registerModule(new JsonNullableModule()); - - // Register ExternalId adapter - mapper.registerModule(ExternalIdAdapter.createModule()); - - // Disable FAIL_ON_EMPTY_BEANS for empty responses - mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); - return mapper; + return JsonMapper.builder() + .changeDefaultPropertyInclusion( + v -> JsonInclude.Value.construct(JsonInclude.Include.NON_NULL, JsonInclude.Include.NON_NULL)) + .addModule(ExternalIdAdapter.createModule()).build(); } /** diff --git a/fineract-client-feign/src/test/java/org/apache/fineract/client/adapter/ExternalIdAdapterTest.java b/fineract-client-feign/src/test/java/org/apache/fineract/client/adapter/ExternalIdAdapterTest.java index 0840a1aa2c2..9282f4d8d63 100644 --- a/fineract-client-feign/src/test/java/org/apache/fineract/client/adapter/ExternalIdAdapterTest.java +++ b/fineract-client-feign/src/test/java/org/apache/fineract/client/adapter/ExternalIdAdapterTest.java @@ -20,11 +20,11 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.fineract.client.feign.ObjectMapperFactory; import org.apache.fineract.client.models.ExternalId; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; class ExternalIdAdapterTest { diff --git a/fineract-client-feign/src/test/java/org/apache/fineract/client/feign/ObjectMapperFactoryTest.java b/fineract-client-feign/src/test/java/org/apache/fineract/client/feign/ObjectMapperFactoryTest.java index 237ee4779fd..793a18ad0e4 100644 --- a/fineract-client-feign/src/test/java/org/apache/fineract/client/feign/ObjectMapperFactoryTest.java +++ b/fineract-client-feign/src/test/java/org/apache/fineract/client/feign/ObjectMapperFactoryTest.java @@ -23,11 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.IOException; import java.time.LocalDate; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; class ObjectMapperFactoryTest { @@ -45,7 +44,7 @@ void testSharedObjectMapperSingleton() { } @Test - void testJava8DateTimeSerialization() throws JsonProcessingException { + void testJava8DateTimeSerialization() throws JacksonException { ObjectMapper mapper = ObjectMapperFactory.getShared(); LocalDate date = LocalDate.of(2024, 1, 15); @@ -54,7 +53,7 @@ void testJava8DateTimeSerialization() throws JsonProcessingException { } @Test - void testJava8DateTimeDeserialization() throws IOException { + void testJava8DateTimeDeserialization() throws JacksonException { ObjectMapper mapper = ObjectMapperFactory.getShared(); String json = "{\"date\":\"2024-01-15\"}"; @@ -65,7 +64,7 @@ void testJava8DateTimeDeserialization() throws IOException { } @Test - void testNullHandling() throws JsonProcessingException { + void testNullHandling() throws JacksonException { ObjectMapper mapper = ObjectMapperFactory.getShared(); TestObject obj = new TestObject(null); @@ -74,7 +73,7 @@ void testNullHandling() throws JsonProcessingException { } @Test - void testDeserializeNullValue() throws IOException { + void testDeserializeNullValue() throws JacksonException { ObjectMapper mapper = ObjectMapperFactory.getShared(); String json = "{\"date\":null}"; @@ -84,7 +83,7 @@ void testDeserializeNullValue() throws IOException { } @Test - void testUnknownPropertiesIgnored() throws IOException { + void testUnknownPropertiesIgnored() throws JacksonException { ObjectMapper mapper = ObjectMapperFactory.getShared(); String json = "{\"date\":\"2024-01-15\",\"unknownField\":\"value\"}"; diff --git a/fineract-client-feign/src/test/java/org/apache/fineract/client/feign/support/ApiResponseDecoderTest.java b/fineract-client-feign/src/test/java/org/apache/fineract/client/feign/support/ApiResponseDecoderTest.java index 575a1b7f4d1..44649abaa14 100644 --- a/fineract-client-feign/src/test/java/org/apache/fineract/client/feign/support/ApiResponseDecoderTest.java +++ b/fineract-client-feign/src/test/java/org/apache/fineract/client/feign/support/ApiResponseDecoderTest.java @@ -22,18 +22,18 @@ import feign.Request; import feign.Response; -import feign.jackson.JacksonDecoder; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.nio.charset.StandardCharsets; import java.util.Collections; +import org.apache.fineract.client.feign.Jackson3Decoder; import org.apache.fineract.client.feign.ObjectMapperFactory; import org.apache.fineract.client.models.ApiResponse; import org.junit.jupiter.api.Test; class ApiResponseDecoderTest { - private final ApiResponseDecoder decoder = new ApiResponseDecoder(new JacksonDecoder(ObjectMapperFactory.getShared())); + private final ApiResponseDecoder decoder = new ApiResponseDecoder(new Jackson3Decoder(ObjectMapperFactory.getShared())); @Test void decodeStringReturnsRawResponseBody() throws Exception { diff --git a/fineract-client/build.gradle b/fineract-client/build.gradle index 89177438163..a05ea8e1a6a 100644 --- a/fineract-client/build.gradle +++ b/fineract-client/build.gradle @@ -76,7 +76,8 @@ task buildJavaSdk(type: org.openapitools.generator.gradle.plugin.tasks.GenerateT library: 'retrofit2', hideGenerationTimestamp: 'true', containerDefaultToNull: 'true', - oauth2Implementation: 'none' + oauth2Implementation: 'none', + useJakartaEe: 'true' ] generateModelTests = false generateApiTests = false @@ -224,38 +225,38 @@ task cleanupGeneratedJavaFiles() { // Configure Java compilation tasks.named('compileJava') { outputs.cacheIf { true } - dependsOn(buildJavaSdk, buildTypescriptAngularSdk, buildAsciidoc, cleanupGeneratedJavaFiles, licenseFormatMain, spotlessMiscApply) - mustRunAfter(licenseFormatMain, cleanupGeneratedJavaFiles) + dependsOn(buildJavaSdk, buildTypescriptAngularSdk, buildAsciidoc, cleanupGeneratedJavaFiles, spotlessMiscApply) + mustRunAfter(cleanupGeneratedJavaFiles) } // Configure sources jar task tasks.named('sourcesJar') { dependsOn(cleanupGeneratedJavaFiles) mustRunAfter(cleanupGeneratedJavaFiles) - + from(sourceSets.main.java.srcDirs) { include "**/*.java" } } -// Configure license formatting -tasks.named('licenseFormatMain') { - dependsOn(cleanupGeneratedJavaFiles) - mustRunAfter(cleanupGeneratedJavaFiles) - source = sourceSets.main.java.srcDirs -} - -tasks.named('licenseMain') { - dependsOn(licenseFormatMain) - mustRunAfter(licenseFormatMain) -} - java { // keep this at Java 8, not 17; see https://issues.apache.org/jira/browse/FINERACT-1214 sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } +// Tests are not published and run on the JDK 21 toolchain, so they may use +// Java 17+ test dependencies (JUnit 6) without affecting the Java 8 client artifact. +tasks.named('compileTestJava') { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} +[configurations.testCompileClasspath, configurations.testRuntimeClasspath].each { + it.attributes { + attribute(org.gradle.api.attributes.java.TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 17) + } +} + tasks.withType(JavaCompile).configureEach { options.errorprone { excludedPaths = '.*/build/generated/java/src/main/java/.*' @@ -270,3 +271,8 @@ configurations { generatedCompileClasspath.extendsFrom implementation generatedRuntimeClasspath.extendsFrom runtimeClasspath } + +dependencies { + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" + runtimeOnly "javax.xml.bind:jaxb-api:2.3.1" +} diff --git a/fineract-client/dependencies.gradle b/fineract-client/dependencies.gradle index a7f02ff9cd6..76940ab6522 100644 --- a/fineract-client/dependencies.gradle +++ b/fineract-client/dependencies.gradle @@ -19,7 +19,7 @@ dependencies { // this needs to stay on exactly this version because the OpenAPI Generator // only handles javax annotations, not jakarta ones - implementation 'jakarta.annotation:jakarta.annotation-api:1.3.5' + implementation 'jakarta.annotation:jakarta.annotation-api:2.1.1' implementation( 'io.swagger.core.v3:swagger-annotations-jakarta', diff --git a/fineract-cob/build.gradle b/fineract-cob/build.gradle index 35b92ce025d..64cd34cd3d8 100644 --- a/fineract-cob/build.gradle +++ b/fineract-cob/build.gradle @@ -74,3 +74,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-cob/dependencies.gradle b/fineract-cob/dependencies.gradle index 1e45fb8ef21..87266a65c80 100644 --- a/fineract-cob/dependencies.gradle +++ b/fineract-cob/dependencies.gradle @@ -54,7 +54,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', ) implementation ('org.springframework.boot:spring-boot-starter-data-jpa') { @@ -68,6 +68,7 @@ dependencies { exclude group: 'org.glassfish.hk2', module: 'hk2-runlevel' exclude group: 'org.hibernate.validator', module: 'hibernate-validator' exclude group: 'jakarta.activation', module: 'jakarta.activation-api' + exclude group: 'org.glassfish.jersey.media', module: 'jersey-media-json-jackson' } implementation('org.dom4j:dom4j') { exclude group: 'javax.xml.bind' diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/COBBusinessStepService.java b/fineract-cob/src/main/java/org/apache/fineract/cob/COBBusinessStepService.java index 2b815260cbd..6ec059bed24 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/COBBusinessStepService.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/COBBusinessStepService.java @@ -22,7 +22,7 @@ import java.util.TreeMap; import org.apache.fineract.cob.data.BusinessStepNameAndOrder; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public interface COBBusinessStepService { diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/COBBusinessStepServiceImpl.java b/fineract-cob/src/main/java/org/apache/fineract/cob/COBBusinessStepServiceImpl.java index 74cf32105ed..a4c9031f31a 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/COBBusinessStepServiceImpl.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/COBBusinessStepServiceImpl.java @@ -36,9 +36,9 @@ import org.apache.fineract.infrastructure.core.domain.ActionContext; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService; +import org.jspecify.annotations.NonNull; import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.context.ApplicationContext; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; @Service diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/common/CommonPartitioner.java b/fineract-cob/src/main/java/org/apache/fineract/cob/common/CommonPartitioner.java index 5d27f3973d7..312da4999d9 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/common/CommonPartitioner.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/common/CommonPartitioner.java @@ -33,11 +33,11 @@ import org.apache.fineract.cob.resolver.BusinessDateResolver; import org.apache.fineract.cob.resolver.CatchUpFlagResolver; import org.apache.fineract.cob.service.RetrieveIdService; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.launch.JobExecutionNotRunningException; import org.springframework.batch.core.launch.JobOperator; import org.springframework.batch.core.launch.NoSuchJobExecutionException; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; import org.springframework.util.StopWatch; @Slf4j diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/common/CustomJobParameterResolver.java b/fineract-cob/src/main/java/org/apache/fineract/cob/common/CustomJobParameterResolver.java index 05896b47859..eebe285ad24 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/common/CustomJobParameterResolver.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/common/CustomJobParameterResolver.java @@ -34,11 +34,11 @@ import org.apache.fineract.infrastructure.jobs.domain.CustomJobParameter; import org.apache.fineract.infrastructure.jobs.domain.CustomJobParameterRepository; import org.apache.fineract.infrastructure.springbatch.SpringBatchJobConstants; -import org.springframework.batch.core.JobParameter; -import org.springframework.batch.core.StepContribution; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.job.parameters.JobParameter; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; import org.springframework.stereotype.Component; @Slf4j @@ -89,8 +89,8 @@ public Optional> getCustomJobParameterSet(StepExecution ste */ private Map getJobParameters(StepExecution stepExecution) { Map result = new HashMap<>(); - for (Map.Entry> entry : stepExecution.getJobParameters().getParameters().entrySet()) { - result.put(entry.getKey(), entry.getValue().getValue()); + for (JobParameter parameter : stepExecution.getJobParameters().parameters()) { + result.put(parameter.name(), parameter.value()); } return Collections.unmodifiableMap(result); } diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/common/InitialisationTasklet.java b/fineract-cob/src/main/java/org/apache/fineract/cob/common/InitialisationTasklet.java index 4093608b7cd..cc04e0500ea 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/common/InitialisationTasklet.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/common/InitialisationTasklet.java @@ -30,11 +30,11 @@ import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.useradministration.domain.AppUser; import org.apache.fineract.useradministration.domain.AppUserRepositoryWrapper; -import org.springframework.batch.core.StepContribution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; -import org.springframework.lang.NonNull; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/common/ResetContextTasklet.java b/fineract-cob/src/main/java/org/apache/fineract/cob/common/ResetContextTasklet.java index bf2f9f90634..6469ba580e0 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/common/ResetContextTasklet.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/common/ResetContextTasklet.java @@ -22,11 +22,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.core.domain.ActionContext; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; -import org.springframework.batch.core.StepContribution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; -import org.springframework.lang.NonNull; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/AbstractLoanItemListener.java b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/AbstractLoanItemListener.java index cfd853703bd..dc258451041 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/AbstractLoanItemListener.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/AbstractLoanItemListener.java @@ -32,7 +32,7 @@ import org.springframework.batch.core.annotation.OnSkipInRead; import org.springframework.batch.core.annotation.OnSkipInWrite; import org.springframework.batch.core.annotation.OnWriteError; -import org.springframework.batch.item.Chunk; +import org.springframework.batch.infrastructure.item.Chunk; import org.springframework.lang.NonNull; import org.springframework.transaction.support.TransactionTemplate; diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/COBExecutionListenerRunner.java b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/COBExecutionListenerRunner.java index 998da6e0e39..3bce6c6f462 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/COBExecutionListenerRunner.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/COBExecutionListenerRunner.java @@ -22,8 +22,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobExecutionListener; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.listener.JobExecutionListener; import org.springframework.context.ApplicationContext; public class COBExecutionListenerRunner implements JobExecutionListener { diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/CobWorkerStepListener.java b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/CobWorkerStepListener.java index 2079b31c8f8..68b34d7e9e0 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/CobWorkerStepListener.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/CobWorkerStepListener.java @@ -21,13 +21,13 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.StepContribution; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.StepExecutionListener; +import org.springframework.batch.core.listener.StepExecutionListener; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.scope.context.StepContext; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.core.step.StepExecution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.lang.NonNull; /** diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/FineractCOBAfterJobListener.java b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/FineractCOBAfterJobListener.java index feb7cf319e2..620666211e6 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/FineractCOBAfterJobListener.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/FineractCOBAfterJobListener.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.cob.listener; -import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.job.JobExecution; public interface FineractCOBAfterJobListener { diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/FineractCOBBeforeJobListener.java b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/FineractCOBBeforeJobListener.java index 4261b05f882..a64702be479 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/FineractCOBBeforeJobListener.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/FineractCOBBeforeJobListener.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.cob.listener; -import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.job.JobExecution; public interface FineractCOBBeforeJobListener { diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/JobExecutionContextCopyListener.java b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/JobExecutionContextCopyListener.java index 021ff8884f1..e9545f38a7f 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/listener/JobExecutionContextCopyListener.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/listener/JobExecutionContextCopyListener.java @@ -21,9 +21,9 @@ import java.util.List; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.BooleanUtils; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.StepExecutionListener; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.core.listener.StepExecutionListener; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; /** * {@link StepExecutionListener} to copy values from Job execution context into Step execution context. diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/processor/AbstractItemProcessor.java b/fineract-cob/src/main/java/org/apache/fineract/cob/processor/AbstractItemProcessor.java index 9efdeb1d7e9..e30829ceddd 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/processor/AbstractItemProcessor.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/processor/AbstractItemProcessor.java @@ -30,12 +30,12 @@ import org.apache.fineract.cob.data.BusinessStepNameAndOrder; import org.apache.fineract.cob.resolver.BusinessDateResolver; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.annotation.AfterStep; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.batch.item.ItemProcessor; -import org.springframework.lang.NonNull; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; +import org.springframework.batch.infrastructure.item.ItemProcessor; @RequiredArgsConstructor public abstract class AbstractItemProcessor> implements ItemProcessor { diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/resolver/BusinessDateResolver.java b/fineract-cob/src/main/java/org/apache/fineract/cob/resolver/BusinessDateResolver.java index 7b57f89407e..4dc2067b15a 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/resolver/BusinessDateResolver.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/resolver/BusinessDateResolver.java @@ -20,7 +20,7 @@ import java.time.LocalDate; import org.apache.fineract.cob.COBConstant; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.step.StepExecution; public final class BusinessDateResolver { diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/resolver/CatchUpFlagResolver.java b/fineract-cob/src/main/java/org/apache/fineract/cob/resolver/CatchUpFlagResolver.java index 6ddf59df585..fa139e4dd34 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/resolver/CatchUpFlagResolver.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/resolver/CatchUpFlagResolver.java @@ -19,7 +19,7 @@ package org.apache.fineract.cob.resolver; import org.apache.fineract.cob.COBConstant; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.step.StepExecution; public final class CatchUpFlagResolver { diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/service/BeforeStepLockingItemReaderHelper.java b/fineract-cob/src/main/java/org/apache/fineract/cob/service/BeforeStepLockingItemReaderHelper.java index faae8819d74..efd165b075e 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/service/BeforeStepLockingItemReaderHelper.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/service/BeforeStepLockingItemReaderHelper.java @@ -30,9 +30,9 @@ import org.apache.fineract.cob.domain.LockOwner; import org.apache.fineract.cob.domain.LockingService; import org.apache.fineract.cob.resolver.CatchUpFlagResolver; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; @RequiredArgsConstructor public class BeforeStepLockingItemReaderHelper { diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/tasklet/ApplyCommonLockTasklet.java b/fineract-cob/src/main/java/org/apache/fineract/cob/tasklet/ApplyCommonLockTasklet.java index cb996a93605..3c54c6c60d9 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/tasklet/ApplyCommonLockTasklet.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/tasklet/ApplyCommonLockTasklet.java @@ -34,12 +34,12 @@ import org.apache.fineract.cob.resolver.CatchUpFlagResolver; import org.apache.fineract.cob.service.RetrieveIdService; import org.apache.fineract.infrastructure.core.config.FineractProperties; -import org.springframework.batch.core.StepContribution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.batch.repeat.RepeatStatus; -import org.springframework.lang.NonNull; +import org.springframework.batch.infrastructure.item.ExecutionContext; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallbackWithoutResult; import org.springframework.transaction.support.TransactionTemplate; diff --git a/fineract-cob/src/main/java/org/apache/fineract/cob/tasklet/UnlockProcessedAccountsTasklet.java b/fineract-cob/src/main/java/org/apache/fineract/cob/tasklet/UnlockProcessedAccountsTasklet.java index a93afd13d6b..0c0d6febd9e 100644 --- a/fineract-cob/src/main/java/org/apache/fineract/cob/tasklet/UnlockProcessedAccountsTasklet.java +++ b/fineract-cob/src/main/java/org/apache/fineract/cob/tasklet/UnlockProcessedAccountsTasklet.java @@ -22,11 +22,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.cob.domain.AccountLock; import org.apache.fineract.cob.service.AccountLockService; -import org.springframework.batch.core.StepContribution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; -import org.springframework.lang.NonNull; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; /** * Tasklet that unlocks accounts which were successfully processed during COB but whose locks were not removed. diff --git a/fineract-command-async/build.gradle b/fineract-command-async/build.gradle index bd91a349870..452d7fcc474 100644 --- a/fineract-command-async/build.gradle +++ b/fineract-command-async/build.gradle @@ -79,4 +79,13 @@ jmh { fork = 1 // Number of forks timeOnIteration = '2s' // Time per iteration benchmarkMode = ['thrpt'] // Default benchmark mode +} +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" } \ No newline at end of file diff --git a/fineract-command-async/dependencies.gradle b/fineract-command-async/dependencies.gradle index 5bb81412b22..93feeb78e6b 100644 --- a/fineract-command-async/dependencies.gradle +++ b/fineract-command-async/dependencies.gradle @@ -24,7 +24,7 @@ dependencies { implementation( 'org.springframework.boot:spring-boot-starter', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.commons:commons-lang3', @@ -38,6 +38,7 @@ dependencies { jmhAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess' testImplementation(project(path: ':fineract-command-test')) + testImplementation 'org.springframework.boot:spring-boot-jdbc' testImplementation ('org.springframework.boot:spring-boot-starter-test') { exclude group: 'com.jayway.jsonpath', module: 'json-path' exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' @@ -46,7 +47,7 @@ dependencies { exclude group: 'org.skyscreamer' } testImplementation ( - 'org.mockito:mockito-inline', + 'org.mockito:mockito-core', 'org.openjdk.jmh:jmh-core', 'org.testcontainers:junit-jupiter', ) diff --git a/fineract-command-async/src/test/java/org/apache/fineract/command/async/TestConfiguration.java b/fineract-command-async/src/test/java/org/apache/fineract/command/async/TestConfiguration.java index d9fe06b9490..3710ec8d99b 100644 --- a/fineract-command-async/src/test/java/org/apache/fineract/command/async/TestConfiguration.java +++ b/fineract-command-async/src/test/java/org/apache/fineract/command/async/TestConfiguration.java @@ -24,8 +24,8 @@ import org.apache.fineract.command.core.CommandProperties; import org.apache.fineract.command.core.CommandStore; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/fineract-command-audit/build.gradle b/fineract-command-audit/build.gradle index 91a025c0a1b..3d730e357de 100644 --- a/fineract-command-audit/build.gradle +++ b/fineract-command-audit/build.gradle @@ -70,3 +70,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-command-audit/dependencies.gradle b/fineract-command-audit/dependencies.gradle index 36df91c4558..ddc4f345efb 100644 --- a/fineract-command-audit/dependencies.gradle +++ b/fineract-command-audit/dependencies.gradle @@ -24,7 +24,7 @@ dependencies { implementation( 'org.springframework.boot:spring-boot-starter', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.commons:commons-lang3', @@ -36,6 +36,7 @@ dependencies { annotationProcessor 'org.mapstruct:mapstruct-processor' testImplementation(project(path: ':fineract-command-test')) + testImplementation 'org.springframework.boot:spring-boot-jdbc' testImplementation ('org.springframework.boot:spring-boot-starter-test') { exclude group: 'com.jayway.jsonpath', module: 'json-path' exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' @@ -44,7 +45,7 @@ dependencies { exclude group: 'org.skyscreamer' } testImplementation ( - 'org.mockito:mockito-inline', + 'org.mockito:mockito-core', 'org.testcontainers:junit-jupiter', ) } diff --git a/fineract-command-audit/src/test/java/org/apache/fineract/command/audit/TestConfiguration.java b/fineract-command-audit/src/test/java/org/apache/fineract/command/audit/TestConfiguration.java index b186364ef65..1b80d840b8f 100644 --- a/fineract-command-audit/src/test/java/org/apache/fineract/command/audit/TestConfiguration.java +++ b/fineract-command-audit/src/test/java/org/apache/fineract/command/audit/TestConfiguration.java @@ -24,8 +24,8 @@ import org.apache.fineract.command.core.CommandProperties; import org.apache.fineract.command.core.CommandStore; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/fineract-command-disruptor/build.gradle b/fineract-command-disruptor/build.gradle index faad0c5508d..5d912e88c12 100644 --- a/fineract-command-disruptor/build.gradle +++ b/fineract-command-disruptor/build.gradle @@ -80,3 +80,12 @@ jmh { timeOnIteration = '2s' // Time per iteration benchmarkMode = ['thrpt'] // Default benchmark mode } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-command-disruptor/dependencies.gradle b/fineract-command-disruptor/dependencies.gradle index 9314e5ecee3..3faed768070 100644 --- a/fineract-command-disruptor/dependencies.gradle +++ b/fineract-command-disruptor/dependencies.gradle @@ -24,7 +24,7 @@ dependencies { implementation( 'org.springframework.boot:spring-boot-starter', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.commons:commons-lang3', @@ -47,7 +47,7 @@ dependencies { exclude group: 'org.skyscreamer' } testImplementation ( - 'org.mockito:mockito-inline', + 'org.mockito:mockito-core', 'org.openjdk.jmh:jmh-core', 'org.testcontainers:junit-jupiter', ) diff --git a/fineract-command-jdbc/build.gradle b/fineract-command-jdbc/build.gradle index 204002d59b1..dd0b9ce00c5 100644 --- a/fineract-command-jdbc/build.gradle +++ b/fineract-command-jdbc/build.gradle @@ -70,3 +70,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-command-jdbc/dependencies.gradle b/fineract-command-jdbc/dependencies.gradle index ccbad997b79..821c35b0424 100644 --- a/fineract-command-jdbc/dependencies.gradle +++ b/fineract-command-jdbc/dependencies.gradle @@ -25,11 +25,11 @@ dependencies { implementation( 'org.springframework.boot:spring-boot-starter', 'org.springframework.boot:spring-boot-starter-data-jdbc', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', - 'com.fasterxml.jackson.core:jackson-databind', + 'tools.jackson.core:jackson-databind', - 'org.liquibase:liquibase-core', + 'org.springframework.boot:spring-boot-starter-liquibase', 'org.postgresql:postgresql', @@ -55,7 +55,7 @@ dependencies { 'com.mysql:mysql-connector-j', ) testImplementation ( - 'org.mockito:mockito-inline', + 'org.mockito:mockito-core', 'org.testcontainers:junit-jupiter', 'org.testcontainers:postgresql', 'org.testcontainers:mariadb', diff --git a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/JdbcCommandProperties.java b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/JdbcCommandProperties.java index 7f908a21879..d7e0e2ebace 100644 --- a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/JdbcCommandProperties.java +++ b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/JdbcCommandProperties.java @@ -1,4 +1,3 @@ - /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file diff --git a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/JdbcCommandStore.java b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/JdbcCommandStore.java index 929fbd423ed..c943b0578e6 100644 --- a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/JdbcCommandStore.java +++ b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/JdbcCommandStore.java @@ -23,7 +23,6 @@ import static org.apache.fineract.command.core.CommandConstants.COMMAND_JSON_CLASS_ATTRIBUTE; import static org.apache.fineract.command.core.CommandState.UNKNOWN; -import com.fasterxml.jackson.databind.ObjectMapper; import io.github.resilience4j.retry.annotation.Retry; import java.io.IOException; import java.nio.file.Path; @@ -44,6 +43,7 @@ import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; +import tools.jackson.databind.ObjectMapper; @Slf4j @RequiredArgsConstructor @@ -60,14 +60,14 @@ public class JdbcCommandStore implements CommandStore { @SuppressWarnings("unchecked") public T getRequestById(Long id) { return (T) repository.findById(id).map(CommandEntity::getRequest) - .map(json -> objectMapper.convertValue(json, forName(json.get(COMMAND_JSON_CLASS_ATTRIBUTE).asText()))).orElse(null); + .map(json -> objectMapper.convertValue(json, forName(json.get(COMMAND_JSON_CLASS_ATTRIBUTE).asString()))).orElse(null); } @Override @SuppressWarnings("unchecked") public T getResponseById(Long id) { return (T) repository.findById(id).map(CommandEntity::getResponse) - .map(json -> objectMapper.convertValue(json, forName(json.get(COMMAND_JSON_CLASS_ATTRIBUTE).asText()))).orElse(null); + .map(json -> objectMapper.convertValue(json, forName(json.get(COMMAND_JSON_CLASS_ATTRIBUTE).asString()))).orElse(null); } @Override @@ -79,14 +79,14 @@ public org.apache.fineract.command.core.CommandState getStateById(Long id) { @SuppressWarnings("unchecked") public T getRequestByKey(String key) { return (T) repository.findOneByIdempotencyKey(key).map(CommandEntity::getRequest) - .map(json -> objectMapper.convertValue(json, forName(json.get(COMMAND_JSON_CLASS_ATTRIBUTE).asText()))).orElse(null); + .map(json -> objectMapper.convertValue(json, forName(json.get(COMMAND_JSON_CLASS_ATTRIBUTE).asString()))).orElse(null); } @Override @SuppressWarnings("unchecked") public T getResponseByKey(String key) { return (T) repository.findOneByIdempotencyKey(key).map(CommandEntity::getResponse) - .map(json -> objectMapper.convertValue(json, forName(json.get(COMMAND_JSON_CLASS_ATTRIBUTE).asText()))).orElse(null); + .map(json -> objectMapper.convertValue(json, forName(json.get(COMMAND_JSON_CLASS_ATTRIBUTE).asString()))).orElse(null); } @Override diff --git a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/converter/JsonNodeReadingConverter.java b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/converter/JsonNodeReadingConverter.java index 2cd7e738ec4..bd9eeaf62e3 100644 --- a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/converter/JsonNodeReadingConverter.java +++ b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/converter/JsonNodeReadingConverter.java @@ -18,13 +18,13 @@ */ package org.apache.fineract.command.jdbc.store.converter; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import org.springframework.core.convert.converter.Converter; import org.springframework.data.convert.ReadingConverter; import org.springframework.stereotype.Component; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; @Component @RequiredArgsConstructor diff --git a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/converter/JsonNodeWritingConverter.java b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/converter/JsonNodeWritingConverter.java index 25ff040245e..ae4c23447e3 100644 --- a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/converter/JsonNodeWritingConverter.java +++ b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/converter/JsonNodeWritingConverter.java @@ -18,13 +18,13 @@ */ package org.apache.fineract.command.jdbc.store.converter; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import org.springframework.core.convert.converter.Converter; import org.springframework.data.convert.WritingConverter; import org.springframework.stereotype.Component; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; @Component @RequiredArgsConstructor diff --git a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/domain/CommandEntity.java b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/domain/CommandEntity.java index b9e5929a54f..c25c79baa74 100644 --- a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/domain/CommandEntity.java +++ b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/domain/CommandEntity.java @@ -18,7 +18,6 @@ */ package org.apache.fineract.command.jdbc.store.domain; -import com.fasterxml.jackson.databind.JsonNode; import java.io.Serial; import java.io.Serializable; import java.time.Instant; @@ -29,6 +28,7 @@ import org.springframework.data.annotation.Id; import org.springframework.data.relational.core.mapping.Column; import org.springframework.data.relational.core.mapping.Table; +import tools.jackson.databind.JsonNode; @Getter @Setter diff --git a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/mapping/CommandJsonMapper.java b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/mapping/CommandJsonMapper.java index f2fa378b9ce..dfcd2103836 100644 --- a/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/mapping/CommandJsonMapper.java +++ b/fineract-command-jdbc/src/main/java/org/apache/fineract/command/jdbc/store/mapping/CommandJsonMapper.java @@ -20,13 +20,13 @@ import static org.apache.fineract.command.core.CommandConstants.COMMAND_JSON_CLASS_ATTRIBUTE; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.databind.node.TextNode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; +import tools.jackson.databind.node.StringNode; @Slf4j @RequiredArgsConstructor @@ -41,7 +41,7 @@ public T map(JsonNode source) { return null; } - var canonicalName = source.get(COMMAND_JSON_CLASS_ATTRIBUTE).asText(); + var canonicalName = source.get(COMMAND_JSON_CLASS_ATTRIBUTE).asString(); try { return (T) mapper.convertValue(source, Class.forName(canonicalName)); @@ -59,7 +59,7 @@ public JsonNode map(Object source) { var json = mapper.convertValue(source, ObjectNode.class); - json.set(COMMAND_JSON_CLASS_ATTRIBUTE, new TextNode(source.getClass().getCanonicalName())); + json.set(COMMAND_JSON_CLASS_ATTRIBUTE, new StringNode(source.getClass().getCanonicalName())); return json; } diff --git a/fineract-command-test/build.gradle b/fineract-command-test/build.gradle index 2dd8dea2d29..9d5a35b0cca 100644 --- a/fineract-command-test/build.gradle +++ b/fineract-command-test/build.gradle @@ -70,3 +70,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-command-test/dependencies.gradle b/fineract-command-test/dependencies.gradle index f7cb1bb8e72..3f3d1ce30e2 100644 --- a/fineract-command-test/dependencies.gradle +++ b/fineract-command-test/dependencies.gradle @@ -27,11 +27,11 @@ dependencies { 'org.springframework.boot:spring-boot-starter-data-jdbc', 'org.springframework.boot:spring-boot-starter-web', 'org.springframework.boot:spring-boot-starter-validation', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'com.fasterxml.jackson.core:jackson-databind', - 'org.liquibase:liquibase-core', + 'org.springframework.boot:spring-boot-starter-liquibase', 'com.mysql:mysql-connector-j', 'org.postgresql:postgresql', @@ -50,7 +50,7 @@ dependencies { exclude group: 'org.skyscreamer' } implementation ( - 'org.mockito:mockito-inline', + 'org.mockito:mockito-core', 'org.testcontainers:junit-jupiter', 'org.testcontainers:postgresql', 'org.testcontainers:mariadb', diff --git a/fineract-command-test/src/main/java/org/apache/fineract/command/test/CommandBaseTest.java b/fineract-command-test/src/main/java/org/apache/fineract/command/test/CommandBaseTest.java index 51d2df0b967..f02dd146257 100644 --- a/fineract-command-test/src/main/java/org/apache/fineract/command/test/CommandBaseTest.java +++ b/fineract-command-test/src/main/java/org/apache/fineract/command/test/CommandBaseTest.java @@ -40,16 +40,16 @@ public abstract class CommandBaseTest { protected static final Network network = Network.newNetwork(); @Container - protected static final PostgreSQLContainer POSTGRES_CONTAINER = new PostgreSQLContainer<>(DockerImageName.parse("postgres:18.3")) + protected static final PostgreSQLContainer POSTGRES_CONTAINER = new PostgreSQLContainer<>(DockerImageName.parse("postgres:18.3")) .withNetwork(network).withUsername("root").withPassword("mifos").withDatabaseName("fineract-test"); @Container - protected static final MariaDBContainer MARIADB_CONTAINER = new MariaDBContainer<>(DockerImageName.parse("mariadb:12.2")) + protected static final MariaDBContainer MARIADB_CONTAINER = new MariaDBContainer<>(DockerImageName.parse("mariadb:12.2")) .withNetwork(network).withUsername("root").withPassword("mifos").withDatabaseName("fineract-test") .withCommand("--innodb-snapshot-isolation=OFF").waitingFor(Wait.forListeningPort()); @Container - protected static final MySQLContainer MYSQL_CONTAINER = new MySQLContainer<>(DockerImageName.parse("mysql:8")).withNetwork(network) + protected static final MySQLContainer MYSQL_CONTAINER = new MySQLContainer<>(DockerImageName.parse("mysql:8")).withNetwork(network) .withUsername("root").withPassword("mifos").withDatabaseName("fineract-test"); @DynamicPropertySource diff --git a/fineract-command/build.gradle b/fineract-command/build.gradle index aff455591e6..5f6602b8ac8 100644 --- a/fineract-command/build.gradle +++ b/fineract-command/build.gradle @@ -70,3 +70,15 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" + + testImplementation "org.springframework.boot:spring-boot-resttestclient:4.0.7" + testImplementation "org.springframework.boot:spring-boot-starter-restclient:4.0.7" +} diff --git a/fineract-command/dependencies.gradle b/fineract-command/dependencies.gradle index 363996356b8..d7a595e5f35 100644 --- a/fineract-command/dependencies.gradle +++ b/fineract-command/dependencies.gradle @@ -23,7 +23,7 @@ dependencies { 'org.springframework.boot:spring-boot-starter-validation', 'org.springframework.boot:spring-boot-starter-web', 'org.springframework.security:spring-security-core', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'com.google.guava:guava', @@ -37,6 +37,7 @@ dependencies { annotationProcessor 'org.mapstruct:mapstruct-processor' testImplementation(project(path: ':fineract-command-test')) + testImplementation 'org.springframework.boot:spring-boot-jdbc' testImplementation ('org.springframework.boot:spring-boot-starter-test') { exclude group: 'com.jayway.jsonpath', module: 'json-path' exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' @@ -50,6 +51,5 @@ dependencies { 'org.testcontainers:junit-jupiter', 'org.springframework.restdocs:spring-restdocs-mockmvc', 'org.springframework.restdocs:spring-restdocs-webtestclient', - 'org.springframework.restdocs:spring-restdocs-restassured', ) } diff --git a/fineract-command/src/test/java/org/apache/fineract/command/CommandSampleApiTest.java b/fineract-command/src/test/java/org/apache/fineract/command/CommandSampleApiTest.java index 6694bc4f528..e3ca09f2151 100644 --- a/fineract-command/src/test/java/org/apache/fineract/command/CommandSampleApiTest.java +++ b/fineract-command/src/test/java/org/apache/fineract/command/CommandSampleApiTest.java @@ -43,8 +43,9 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.resttestclient.TestRestTemplate; +import org.springframework.boot.resttestclient.autoconfigure.AutoConfigureTestRestTemplate; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -52,6 +53,7 @@ import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.test.context.ContextConfiguration; +@AutoConfigureTestRestTemplate @Slf4j @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @ContextConfiguration(classes = TestConfiguration.class) diff --git a/fineract-command/src/test/java/org/apache/fineract/command/TestConfiguration.java b/fineract-command/src/test/java/org/apache/fineract/command/TestConfiguration.java index 7abcbad3504..ab11516bb4f 100644 --- a/fineract-command/src/test/java/org/apache/fineract/command/TestConfiguration.java +++ b/fineract-command/src/test/java/org/apache/fineract/command/TestConfiguration.java @@ -21,8 +21,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.command.core.CommandProperties; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; diff --git a/fineract-core/build.gradle b/fineract-core/build.gradle index 1a7d533afae..a0903bb15ec 100644 --- a/fineract-core/build.gradle +++ b/fineract-core/build.gradle @@ -74,3 +74,14 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + implementation "org.apache.httpcomponents.client5:httpclient5:5.4.4" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-core/dependencies.gradle b/fineract-core/dependencies.gradle index 688b002c1dd..192c93dbe00 100644 --- a/fineract-core/dependencies.gradle +++ b/fineract-core/dependencies.gradle @@ -53,7 +53,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', ) implementation ('org.springframework.boot:spring-boot-starter-data-jpa') { @@ -67,6 +67,7 @@ dependencies { exclude group: 'org.glassfish.hk2', module: 'hk2-runlevel' exclude group: 'org.hibernate.validator', module: 'hibernate-validator' exclude group: 'jakarta.activation', module: 'jakarta.activation-api' + exclude group: 'org.glassfish.jersey.media', module: 'jersey-media-json-jackson' } implementation('org.dom4j:dom4j') { exclude group: 'javax.xml.bind' diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountRepositoryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountRepositoryWrapper.java index b66345ef672..9d209e06e9a 100644 --- a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountRepositoryWrapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.accounting.glaccount.domain; import org.apache.fineract.accounting.glaccount.exception.GLAccountNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -32,7 +31,6 @@ public class GLAccountRepositoryWrapper { private final GLAccountRepository repository; - @Autowired public GLAccountRepositoryWrapper(final GLAccountRepository repository) { this.repository = repository; } diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/AdvancedMappingToExpenseAccountData.java b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/AdvancedMappingToExpenseAccountData.java index 0bfa3ca1ba5..86a9bc0cade 100644 --- a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/AdvancedMappingToExpenseAccountData.java +++ b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/AdvancedMappingToExpenseAccountData.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.accounting.producttoaccountmapping.data; +import java.io.Serial; import java.io.Serializable; import lombok.Data; import lombok.NoArgsConstructor; @@ -30,6 +31,7 @@ @Accessors(chain = true) public class AdvancedMappingToExpenseAccountData implements Serializable { + @Serial private static final long serialVersionUID = 1L; private CodeValueData reasonCodeValue; private GLAccountData expenseAccount; diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ChargeToGLAccountMapper.java b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ChargeToGLAccountMapper.java index 4159d5e7f5f..1821cb76283 100644 --- a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ChargeToGLAccountMapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ChargeToGLAccountMapper.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.accounting.producttoaccountmapping.data; +import java.io.Serial; import java.io.Serializable; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -32,6 +33,7 @@ @Accessors(chain = true) public class ChargeToGLAccountMapper implements Serializable { + @Serial private static final long serialVersionUID = 1L; private ChargeData charge; private GLAccountData incomeAccount; diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ClassificationToGLAccountData.java b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ClassificationToGLAccountData.java index fcec6272cd1..cc43d092bd4 100644 --- a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ClassificationToGLAccountData.java +++ b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ClassificationToGLAccountData.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.accounting.producttoaccountmapping.data; +import java.io.Serial; import java.io.Serializable; import lombok.Data; import lombok.NoArgsConstructor; @@ -30,6 +31,7 @@ @Accessors(chain = true) public class ClassificationToGLAccountData implements Serializable { + @Serial private static final long serialVersionUID = 1L; private CodeValueData classificationCodeValue; private GLAccountData incomeAccount; diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/PaymentTypeToGLAccountMapper.java b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/PaymentTypeToGLAccountMapper.java index f2f40c6fe9a..00ad5b652c1 100644 --- a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/PaymentTypeToGLAccountMapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/PaymentTypeToGLAccountMapper.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.accounting.producttoaccountmapping.data; +import java.io.Serial; import java.io.Serializable; import lombok.Data; import lombok.NoArgsConstructor; @@ -30,6 +31,7 @@ @Accessors(chain = true) public class PaymentTypeToGLAccountMapper implements Serializable { + @Serial private static final long serialVersionUID = 1L; private PaymentTypeData paymentType; private GLAccountData fundSourceAccount; diff --git a/fineract-core/src/main/java/org/apache/fineract/batch/command/internal/UnknownCommandStrategy.java b/fineract-core/src/main/java/org/apache/fineract/batch/command/internal/UnknownCommandStrategy.java index 5468254c724..37d59be2f62 100644 --- a/fineract-core/src/main/java/org/apache/fineract/batch/command/internal/UnknownCommandStrategy.java +++ b/fineract-core/src/main/java/org/apache/fineract/batch/command/internal/UnknownCommandStrategy.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.batch.command.internal; -import static org.apache.http.HttpStatus.SC_NOT_IMPLEMENTED; +import static org.apache.hc.core5.http.HttpStatus.SC_NOT_IMPLEMENTED; import jakarta.ws.rs.core.UriInfo; import org.apache.fineract.batch.command.CommandStrategy; diff --git a/fineract-core/src/main/java/org/apache/fineract/batch/service/BatchApiServiceImpl.java b/fineract-core/src/main/java/org/apache/fineract/batch/service/BatchApiServiceImpl.java index 04330e622a8..e72c4fb964d 100644 --- a/fineract-core/src/main/java/org/apache/fineract/batch/service/BatchApiServiceImpl.java +++ b/fineract-core/src/main/java/org/apache/fineract/batch/service/BatchApiServiceImpl.java @@ -18,8 +18,8 @@ */ package org.apache.fineract.batch.service; -import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; -import static org.apache.http.HttpStatus.SC_OK; +import static org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; +import static org.apache.hc.core5.http.HttpStatus.SC_OK; import com.google.gson.Gson; import com.jayway.jsonpath.JsonPathException; @@ -59,10 +59,10 @@ import org.apache.fineract.infrastructure.core.filters.BatchFilter; import org.apache.fineract.infrastructure.core.filters.BatchRequestPreprocessor; import org.apache.fineract.infrastructure.core.persistence.ExtendedJpaTransactionManager; +import org.jspecify.annotations.NonNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.ConcurrencyFailureException; import org.springframework.dao.NonTransientDataAccessException; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionException; diff --git a/fineract-core/src/main/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsConfig.java b/fineract-core/src/main/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsConfig.java index a0ff3247e79..194c0cbf957 100644 --- a/fineract-core/src/main/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsConfig.java +++ b/fineract-core/src/main/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsConfig.java @@ -20,11 +20,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.jobs.service.StepName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-core/src/main/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsTasklet.java b/fineract-core/src/main/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsTasklet.java index de7dc4bf2e4..420791a43b8 100644 --- a/fineract-core/src/main/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsTasklet.java +++ b/fineract-core/src/main/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsTasklet.java @@ -25,10 +25,10 @@ import org.apache.fineract.commands.domain.CommandSourceRepository; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.core.service.DateUtils; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.stereotype.Component; @Slf4j diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/cache/service/CacheWritePlatformServiceJpaRepositoryImpl.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/cache/service/CacheWritePlatformServiceJpaRepositoryImpl.java index 5afe226a311..8f111cb09a9 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/cache/service/CacheWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/cache/service/CacheWritePlatformServiceJpaRepositoryImpl.java @@ -21,7 +21,6 @@ import java.util.Map; import org.apache.fineract.infrastructure.cache.domain.CacheType; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -32,7 +31,6 @@ public class CacheWritePlatformServiceJpaRepositoryImpl implements CacheWritePla private final ConfigurationDomainService configurationDomainService; private final RuntimeDelegatingCacheManager cacheService; - @Autowired public CacheWritePlatformServiceJpaRepositoryImpl(final ConfigurationDomainService configurationDomainService, @Qualifier("runtimeDelegatingCacheManager") final RuntimeDelegatingCacheManager cacheService) { this.configurationDomainService = configurationDomainService; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepositoryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepositoryWrapper.java index 5f363c25acc..5301219f880 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepositoryWrapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValueRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.infrastructure.codes.domain; import org.apache.fineract.infrastructure.codes.exception.CodeValueNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -39,7 +38,6 @@ public class CodeValueRepositoryWrapper { private final CodeValueRepository repository; - @Autowired public CodeValueRepositoryWrapper(final CodeValueRepository repository) { this.repository = repository; } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationDataValidator.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationDataValidator.java index 668d6196a9f..27adf48b8c8 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationDataValidator.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationDataValidator.java @@ -36,7 +36,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -48,7 +47,6 @@ public class GlobalConfigurationDataValidator { GlobalConfigurationApiConstant.ENABLED, GlobalConfigurationApiConstant.VALUE, GlobalConfigurationApiConstant.DATE_VALUE, GlobalConfigurationApiConstant.STRING_VALUE)); - @Autowired public GlobalConfigurationDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationRepositoryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationRepositoryWrapper.java index 3d91820f72d..3753c9eaef8 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationRepositoryWrapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationRepositoryWrapper.java @@ -20,7 +20,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.configuration.exception.GlobalConfigurationPropertyNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -36,7 +35,6 @@ public class GlobalConfigurationRepositoryWrapper { private final GlobalConfigurationRepository repository; - @Autowired public GlobalConfigurationRepositoryWrapper(final GlobalConfigurationRepository repository) { this.repository = repository; } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java index b8bcf01b68d..105a1ee49b0 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import java.io.Serial; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/ApiGlobalErrorResponse.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/ApiGlobalErrorResponse.java index ecd2c9c509e..daaf440a679 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/ApiGlobalErrorResponse.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/ApiGlobalErrorResponse.java @@ -19,15 +19,15 @@ package org.apache.fineract.infrastructure.core.data; import static lombok.AccessLevel.PROTECTED; -import static org.apache.http.HttpStatus.SC_BAD_REQUEST; -import static org.apache.http.HttpStatus.SC_CONFLICT; -import static org.apache.http.HttpStatus.SC_FORBIDDEN; -import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; -import static org.apache.http.HttpStatus.SC_METHOD_NOT_ALLOWED; -import static org.apache.http.HttpStatus.SC_NOT_FOUND; -import static org.apache.http.HttpStatus.SC_NOT_IMPLEMENTED; -import static org.apache.http.HttpStatus.SC_SERVICE_UNAVAILABLE; -import static org.apache.http.HttpStatus.SC_UNAUTHORIZED; +import static org.apache.hc.core5.http.HttpStatus.SC_BAD_REQUEST; +import static org.apache.hc.core5.http.HttpStatus.SC_CONFLICT; +import static org.apache.hc.core5.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; +import static org.apache.hc.core5.http.HttpStatus.SC_METHOD_NOT_ALLOWED; +import static org.apache.hc.core5.http.HttpStatus.SC_NOT_FOUND; +import static org.apache.hc.core5.http.HttpStatus.SC_NOT_IMPLEMENTED; +import static org.apache.hc.core5.http.HttpStatus.SC_SERVICE_UNAVAILABLE; +import static org.apache.hc.core5.http.HttpStatus.SC_UNAUTHORIZED; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.gson.Gson; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/ApiParameterError.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/ApiParameterError.java index 29f9d2effa8..564a0e735cb 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/ApiParameterError.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/ApiParameterError.java @@ -94,9 +94,9 @@ private ApiParameterError(final String globalisationMessageCode, final String de final List messageArgs = new ArrayList<>(); if (defaultUserMessageArgs != null) { for (final Object object : defaultUserMessageArgs) { - if (object instanceof LocalDate) { + if (object instanceof LocalDate date) { final DateTimeFormatter dateFormatter = new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd").toFormatter(); - final String formattedDate = dateFormatter.format((LocalDate) object); + final String formattedDate = dateFormatter.format(date); messageArgs.add(ApiErrorMessageArg.from(formattedDate)); } else { messageArgs.add(ApiErrorMessageArg.from(object)); @@ -117,9 +117,9 @@ private ApiParameterError(final String globalisationMessageCode, final String de final List messageArgs = new ArrayList<>(); if (defaultUserMessageArgs != null) { for (final Object object : defaultUserMessageArgs) { - if (object instanceof LocalDate) { + if (object instanceof LocalDate date) { final DateTimeFormatter dateFormatter = new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd").toFormatter(); - final String formattedDate = dateFormatter.format((LocalDate) object); + final String formattedDate = dateFormatter.format(date); messageArgs.add(ApiErrorMessageArg.from(formattedDate)); } else { messageArgs.add(ApiErrorMessageArg.from(object)); diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/DataValidatorBuilder.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/DataValidatorBuilder.java index 8ee77509e55..71f45bb3b49 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/DataValidatorBuilder.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/data/DataValidatorBuilder.java @@ -245,7 +245,7 @@ public DataValidatorBuilder notExceedingListLengthOf(final Integer maxLength) { return this; } - if (this.value instanceof List && ((List) this.value).size() > maxLength) { + if (this.value instanceof List list && list.size() > maxLength) { String validationErrorCode = "validation.msg." + this.resource + "." + this.parameter + ".exceeds.max.length.allowed"; String defaultEnglishMessage = "The parameter `" + this.parameter + "` exceeds allowed max length of " + maxLength + "."; final ApiParameterError error = ApiParameterError.parameterError(validationErrorCode, defaultEnglishMessage, this.parameter); diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/diagnostics/performance/MeasuringUtil.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/diagnostics/performance/MeasuringUtil.java index b6891d12aa1..7167b46c483 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/diagnostics/performance/MeasuringUtil.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/diagnostics/performance/MeasuringUtil.java @@ -42,13 +42,9 @@ public static T measure(Supplier s, Consumer c) { public static T measure(Supplier s, BiConsumer c) { StopWatch sw = new StopWatch(); sw.start(); - T result = null; - try { - result = s.get(); - } finally { - sw.stop(); - c.accept(result, Duration.ofMillis(sw.getTotalTimeMillis())); - } + T result = s.get(); + sw.stop(); + c.accept(result, Duration.ofMillis(sw.getTotalTimeMillis())); return result; } } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java index 7aa1315e28c..9d6c6842503 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java @@ -26,6 +26,7 @@ import jakarta.persistence.Column; import jakarta.persistence.MappedSuperclass; import jakarta.validation.constraints.NotNull; +import java.io.Serial; import java.io.Serializable; import java.time.OffsetDateTime; import java.util.Optional; @@ -50,6 +51,7 @@ public abstract class AbstractAuditableWithUTCDateTimeCustom extends AbstractPersistableCustom implements Auditable { + @Serial private static final long serialVersionUID = 141481953116476081L; @Column(name = CREATED_BY_DB_FIELD, updatable = false, nullable = false) diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java index 8f0e756d3fa..f44ed729c0f 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java @@ -22,11 +22,9 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.MappedSuperclass; -import jakarta.persistence.PostLoad; -import jakarta.persistence.PrePersist; import jakarta.persistence.Transient; +import java.io.Serial; import java.io.Serializable; -import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -50,6 +48,7 @@ @NoArgsConstructor public abstract class AbstractPersistableCustom implements Persistable, Serializable { + @Serial private static final long serialVersionUID = 9181640245194392646L; @Id @@ -57,14 +56,9 @@ public abstract class AbstractPersistableCustom implemen @Getter private T id; + @Override @Transient - @Setter(value = AccessLevel.NONE) - @Getter - private boolean isNew = true; - - @PrePersist - @PostLoad - void markNotNew() { - this.isNew = false; + public boolean isNew() { + return id == null; } } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformException.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformException.java index 11d10748d80..8010a2c608b 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformException.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformException.java @@ -58,8 +58,8 @@ private static Throwable findThrowableCause(Object[] defaultUserMessageArgs) { return null; } for (Object defaultUserMessageArg : defaultUserMessageArgs) { - if (defaultUserMessageArg instanceof Throwable) { - return (Throwable) defaultUserMessageArg; + if (defaultUserMessageArg instanceof Throwable throwable) { + return throwable; } } return null; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/ErrorHandler.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/ErrorHandler.java index bb8d7f6c29b..997291c6243 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/ErrorHandler.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/ErrorHandler.java @@ -133,10 +133,9 @@ public ErrorInfo handle(@NotNull RuntimeException exception) { MultivaluedMap headers = response.getHeaders(); Set
batchHeaders = headers == null ? null : headers.keySet().stream().map(e -> new Header(e, response.getHeaderString(e))).collect(Collectors.toSet()); - Integer errorCode = exceptionMapper instanceof FineractExceptionMapper ? ((FineractExceptionMapper) exceptionMapper).errorCode() - : null; + Integer errorCode = exceptionMapper instanceof FineractExceptionMapper fem ? fem.errorCode() : null; Object msg = response.getEntity(); - return new ErrorInfo(response.getStatus(), errorCode, msg instanceof String ? (String) msg : JSON_HELPER.toJson(msg), batchHeaders); + return new ErrorInfo(response.getStatus(), errorCode, msg instanceof String s ? s : JSON_HELPER.toJson(msg), batchHeaders); } public static RuntimeException getMappable(@NotNull Throwable thr) { diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/IdempotentCommandProcessFailedException.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/IdempotentCommandProcessFailedException.java index bd0f969fd0d..816509c9f81 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/IdempotentCommandProcessFailedException.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/IdempotentCommandProcessFailedException.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.infrastructure.core.exception; -import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; +import static org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; import jakarta.validation.constraints.NotNull; import org.apache.fineract.commands.domain.CommandSource; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/ConcurrencyFailureExceptionMapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/ConcurrencyFailureExceptionMapper.java index bf3d6b35570..f25662796da 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/ConcurrencyFailureExceptionMapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/ConcurrencyFailureExceptionMapper.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.infrastructure.core.exceptionmapper; -import static org.apache.http.HttpStatus.SC_CONFLICT; +import static org.apache.hc.core5.http.HttpStatus.SC_CONFLICT; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/DefaultExceptionMapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/DefaultExceptionMapper.java index 38c5e1eea2a..25b43dbc6ca 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/DefaultExceptionMapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/DefaultExceptionMapper.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.infrastructure.core.exceptionmapper; -import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; +import static org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/IdempotentCommandExceptionMapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/IdempotentCommandExceptionMapper.java index b969e4e1953..2e5d4df761b 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/IdempotentCommandExceptionMapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/IdempotentCommandExceptionMapper.java @@ -19,8 +19,8 @@ package org.apache.fineract.infrastructure.core.exceptionmapper; import static org.apache.fineract.infrastructure.core.exception.AbstractIdempotentCommandException.IDEMPOTENT_CACHE_HEADER; -import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; -import static org.apache.http.HttpStatus.SC_OK; +import static org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; +import static org.apache.hc.core5.http.HttpStatus.SC_OK; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JakartaOptimisticLockExceptionMapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JakartaOptimisticLockExceptionMapper.java index f773b2baf08..f7b84de4c45 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JakartaOptimisticLockExceptionMapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JakartaOptimisticLockExceptionMapper.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.infrastructure.core.exceptionmapper; -import static org.apache.http.HttpStatus.SC_CONFLICT; +import static org.apache.hc.core5.http.HttpStatus.SC_CONFLICT; import jakarta.persistence.OptimisticLockException; import jakarta.ws.rs.core.MediaType; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JpaOptimisticLockExceptionMapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JpaOptimisticLockExceptionMapper.java index a236c44f26d..f6d32bb1c9c 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JpaOptimisticLockExceptionMapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JpaOptimisticLockExceptionMapper.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.infrastructure.core.exceptionmapper; -import static org.apache.http.HttpStatus.SC_CONFLICT; +import static org.apache.hc.core5.http.HttpStatus.SC_CONFLICT; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/MismatchedInputExceptionMapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/MismatchedInputExceptionMapper.java new file mode 100644 index 00000000000..7fa3ab8dc56 --- /dev/null +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/MismatchedInputExceptionMapper.java @@ -0,0 +1,49 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.infrastructure.core.exceptionmapper; + +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.ext.ExceptionMapper; +import jakarta.ws.rs.ext.Provider; +import lombok.extern.slf4j.Slf4j; +import org.apache.fineract.infrastructure.core.data.ApiParameterError; +import org.apache.fineract.infrastructure.core.exception.ErrorHandler; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import tools.jackson.databind.exc.MismatchedInputException; + +@Provider +@Component +@Scope("singleton") +@Slf4j +public class MismatchedInputExceptionMapper implements ExceptionMapper { + + @Override + public Response toResponse(final MismatchedInputException exception) { + final String globalisationMessageCode = "error.msg.invalid.request.body"; + final String defaultUserMessage = "The JSON provided in the body of the request is invalid: " + exception.getMessage(); + log.warn("Exception occurred", ErrorHandler.findMostSpecificException(exception)); + + final ApiParameterError error = ApiParameterError.generalError(globalisationMessageCode, defaultUserMessage); + + return Response.status(Status.BAD_REQUEST).entity(error).type(MediaType.APPLICATION_JSON).build(); + } +} diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/OptimisticLockExceptionMapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/OptimisticLockExceptionMapper.java index b170c8da20f..d8c10b3a6b2 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/OptimisticLockExceptionMapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/OptimisticLockExceptionMapper.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.infrastructure.core.exceptionmapper; -import static org.apache.http.HttpStatus.SC_CONFLICT; +import static org.apache.hc.core5.http.HttpStatus.SC_CONFLICT; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/StreamReadExceptionMapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/StreamReadExceptionMapper.java new file mode 100644 index 00000000000..ac876e42f0e --- /dev/null +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/StreamReadExceptionMapper.java @@ -0,0 +1,49 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.infrastructure.core.exceptionmapper; + +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.ext.ExceptionMapper; +import jakarta.ws.rs.ext.Provider; +import lombok.extern.slf4j.Slf4j; +import org.apache.fineract.infrastructure.core.data.ApiParameterError; +import org.apache.fineract.infrastructure.core.exception.ErrorHandler; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import tools.jackson.core.exc.StreamReadException; + +@Provider +@Component +@Scope("singleton") +@Slf4j +public class StreamReadExceptionMapper implements ExceptionMapper { + + @Override + public Response toResponse(final StreamReadException exception) { + final String globalisationMessageCode = "error.msg.invalid.request.body"; + final String defaultUserMessage = "The JSON syntax provided in the body of the request is invalid: " + exception.getMessage(); + log.warn("Exception occurred", ErrorHandler.findMostSpecificException(exception)); + + final ApiParameterError error = ApiParameterError.generalError(globalisationMessageCode, defaultUserMessage); + + return Response.status(Status.BAD_REQUEST).entity(error).type(MediaType.APPLICATION_JSON).build(); + } +} diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/BatchFilter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/BatchFilter.java index 23c67359912..8fbab08390f 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/BatchFilter.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/BatchFilter.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.filters; import jakarta.ws.rs.core.UriInfo; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/CallerIpTrackingFilter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/CallerIpTrackingFilter.java index f909dc6117e..9a11e883f52 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/CallerIpTrackingFilter.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/CallerIpTrackingFilter.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.filters; import jakarta.servlet.FilterChain; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilter.java index 5797a8cf9d7..deeaf0a4d38 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilter.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilter.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.filters; import jakarta.servlet.FilterChain; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/IdempotencyStoreFilter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/IdempotencyStoreFilter.java index 0bca7cdb7d2..f578af777d6 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/IdempotencyStoreFilter.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/IdempotencyStoreFilter.java @@ -33,7 +33,7 @@ import org.apache.fineract.commands.service.SynchronousCommandProcessingService; import org.apache.fineract.infrastructure.core.config.FineractProperties; import org.apache.fineract.infrastructure.core.domain.FineractRequestContextHolder; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.util.ContentCachingResponseWrapper; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/RequestResponseFilter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/RequestResponseFilter.java index 659efa86182..48650fc0124 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/RequestResponseFilter.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/filters/RequestResponseFilter.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.filters; import jakarta.servlet.FilterChain; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializerDefaultToJson.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializerDefaultToJson.java index 8d9f5dbb9b2..20d65f1f3d5 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializerDefaultToJson.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/CommandSerializerDefaultToJson.java @@ -18,7 +18,6 @@ */ package org.apache.fineract.infrastructure.core.serialization; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -29,7 +28,6 @@ public class CommandSerializerDefaultToJson implements CommandSerializer { private final ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson excludeNothingWithPrettyPrintingOff; - @Autowired public CommandSerializerDefaultToJson( final ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson excludeNothingWithPrettyPrintingOff) { this.excludeNothingWithPrettyPrintingOff = excludeNothingWithPrettyPrintingOff; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java index 51e74d6e2c8..8dbf1232c64 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DatatableCommandFromApiJsonDeserializer.java @@ -76,7 +76,6 @@ import org.apache.fineract.infrastructure.core.service.database.DatabaseTypeResolver; import org.apache.fineract.infrastructure.core.service.database.JdbcJavaType; import org.apache.fineract.infrastructure.dataqueries.data.EntityTables; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -106,7 +105,6 @@ public class DatatableCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; private final DatabaseTypeResolver databaseTypeResolver; - @Autowired public DatatableCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper, DatabaseTypeResolver databaseTypeResolver) { this.fromApiJsonHelper = fromApiJsonHelper; this.databaseTypeResolver = databaseTypeResolver; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DefaultToApiJsonSerializer.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DefaultToApiJsonSerializer.java index 47fad72b94d..11270c1be9f 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DefaultToApiJsonSerializer.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/DefaultToApiJsonSerializer.java @@ -22,7 +22,6 @@ import java.util.Collection; import java.util.Set; import org.apache.fineract.infrastructure.core.service.Page; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -36,7 +35,6 @@ public class DefaultToApiJsonSerializer implements ToApiJsonSerializer { private final CommandProcessingResultJsonSerializer commandProcessingResultSerializer; private final GoogleGsonSerializerHelper helper; - @Autowired public DefaultToApiJsonSerializer(final ExcludeNothingWithPrettyPrintingOffJsonSerializerGoogleGson excludeNothingWithPrettyPrintingOff, final CommandProcessingResultJsonSerializer commandProcessingResultSerializer, final GoogleGsonSerializerHelper helper) { this.excludeNothingWithPrettyPrintingOff = excludeNothingWithPrettyPrintingOff; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java index d838879b63d..a649b454482 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/serialization/JsonParserHelper.java @@ -731,8 +731,8 @@ public BigDecimal convertFrom(final String numericalValueFormatted, final String } final NumberStyleFormatter numberFormatter = new NumberStyleFormatter(); final Number parsedNumber = numberFormatter.parse(source, clientApplicationLocale); - if (parsedNumber instanceof BigDecimal) { - number = (BigDecimal) parsedNumber; + if (parsedNumber instanceof BigDecimal decimal) { + number = decimal; } else { number = BigDecimal.valueOf(parsedNumber.doubleValue()); } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/JdbcTemplateFactory.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/JdbcTemplateFactory.java index eeab9f18515..946622bb80e 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/JdbcTemplateFactory.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/JdbcTemplateFactory.java @@ -21,12 +21,14 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant; import org.apache.fineract.infrastructure.core.service.database.RoutingDataSource; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; @RequiredArgsConstructor @Component +@DependsOnDatabaseInitialization public class JdbcTemplateFactory { private final RoutingDataSource routingDataSource; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/MDCWrapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/MDCWrapper.java index 2f6dfde6efd..78100f43994 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/MDCWrapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/MDCWrapper.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.service; import org.slf4j.MDC; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/MathUtil.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/MathUtil.java index bf56d652adb..23a352a319a 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/MathUtil.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/MathUtil.java @@ -23,7 +23,7 @@ import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; import org.apache.fineract.organisation.monetary.domain.Money; import org.apache.fineract.organisation.monetary.domain.MoneyHelper; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public final class MathUtil { diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/PagedRequest.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/PagedRequest.java index b87e4d308a7..e2becbb50d5 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/PagedRequest.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/PagedRequest.java @@ -37,7 +37,7 @@ public class PagedRequest { private int page; private int size = DEFAULT_PAGE_SIZE; - private final List sorts = new ArrayList<>(); + private List sorts = new ArrayList<>(); public Optional getRequest() { return Optional.ofNullable(request); diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/PaginationHelper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/PaginationHelper.java index dd8b9d79ae4..1ecbeeafbc9 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/PaginationHelper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/PaginationHelper.java @@ -22,7 +22,6 @@ import java.util.Objects; import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator; import org.apache.fineract.infrastructure.core.service.database.DatabaseTypeResolver; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Component; @@ -33,7 +32,6 @@ public class PaginationHelper { private final DatabaseSpecificSQLGenerator sqlGenerator; private final DatabaseTypeResolver databaseTypeResolver; - @Autowired public PaginationHelper(DatabaseSpecificSQLGenerator sqlGenerator, DatabaseTypeResolver databaseTypeResolver) { this.sqlGenerator = sqlGenerator; this.databaseTypeResolver = databaseTypeResolver; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseIndependentQueryService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseIndependentQueryService.java index 480d11897d7..c07a6a95613 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseIndependentQueryService.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseIndependentQueryService.java @@ -24,16 +24,16 @@ import java.util.Collection; import java.util.List; import javax.sql.DataSource; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.jdbc.support.rowset.SqlRowSet; import org.springframework.stereotype.Component; @Component +@DependsOnDatabaseInitialization public class DatabaseIndependentQueryService implements DatabaseQueryService { private final Collection queryServices; - @Autowired public DatabaseIndependentQueryService(Collection queryServices) { this.queryServices = queryServices; } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseSpecificSQLGenerator.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseSpecificSQLGenerator.java index 24da9794ac1..0971b5a9179 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseSpecificSQLGenerator.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseSpecificSQLGenerator.java @@ -32,13 +32,15 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData; import org.apache.logging.log4j.util.Strings; +import org.jspecify.annotations.NonNull; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.data.domain.Sort; import org.springframework.jdbc.datasource.DataSourceUtils; import org.springframework.jdbc.support.GeneratedKeyHolder; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; @Component +@DependsOnDatabaseInitialization @RequiredArgsConstructor public class DatabaseSpecificSQLGenerator { diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseTypeResolver.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseTypeResolver.java index 4bdc8739123..c9e0ed4d642 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseTypeResolver.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseTypeResolver.java @@ -22,7 +22,6 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -35,7 +34,6 @@ public class DatabaseTypeResolver implements InitializingBean { private static final AtomicReference currentDatabaseType = new AtomicReference<>(); private final HikariConfig hikariConfig; - @Autowired public DatabaseTypeResolver(HikariConfig hikariConfig) { this.hikariConfig = hikariConfig; } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/HikariDataSourceFactory.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/HikariDataSourceFactory.java index 162bf13df15..fbb86e008cd 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/HikariDataSourceFactory.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/HikariDataSourceFactory.java @@ -20,9 +20,11 @@ import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.stereotype.Component; @Component +@DependsOnDatabaseInitialization public class HikariDataSourceFactory { public HikariDataSource create(HikariConfig config) { diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JavaType.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JavaType.java index 193a0c99c72..86017123b24 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JavaType.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JavaType.java @@ -40,8 +40,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.fineract.infrastructure.core.exception.PlatformServiceUnavailableException; import org.apache.fineract.organisation.monetary.domain.MoneyHelper; +import org.jspecify.annotations.NonNull; import org.springframework.data.domain.Persistable; -import org.springframework.lang.NonNull; public enum JavaType { diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JdbcJavaType.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JdbcJavaType.java index 1e9a30358b5..67301881e3d 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JdbcJavaType.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/JdbcJavaType.java @@ -23,7 +23,7 @@ import java.sql.JDBCType; import java.util.Locale; import org.apache.fineract.infrastructure.core.exception.PlatformServiceUnavailableException; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public enum JdbcJavaType { diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/MySQLQueryService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/MySQLQueryService.java index ba1e504935a..369390753ff 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/MySQLQueryService.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/MySQLQueryService.java @@ -20,17 +20,17 @@ import java.util.List; import javax.sql.DataSource; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; import org.springframework.stereotype.Component; @Component +@DependsOnDatabaseInitialization public class MySQLQueryService implements DatabaseQueryService { private final DatabaseTypeResolver databaseTypeResolver; - @Autowired public MySQLQueryService(DatabaseTypeResolver databaseTypeResolver) { this.databaseTypeResolver = databaseTypeResolver; } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/PostgreSQLQueryService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/PostgreSQLQueryService.java index 092188c57ec..a266f435063 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/PostgreSQLQueryService.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/PostgreSQLQueryService.java @@ -21,17 +21,17 @@ import java.util.List; import java.util.Objects; import javax.sql.DataSource; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; import org.springframework.stereotype.Component; @Component +@DependsOnDatabaseInitialization public class PostgreSQLQueryService implements DatabaseQueryService { private final DatabaseTypeResolver databaseTypeResolver; - @Autowired public PostgreSQLQueryService(DatabaseTypeResolver databaseTypeResolver) { this.databaseTypeResolver = databaseTypeResolver; } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/RoutingDataSourceServiceFactory.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/RoutingDataSourceServiceFactory.java index 007a9b9d3aa..4418d7fd333 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/RoutingDataSourceServiceFactory.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/RoutingDataSourceServiceFactory.java @@ -19,8 +19,9 @@ package org.apache.fineract.infrastructure.core.service.database; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; /** @@ -30,17 +31,22 @@ * */ @Component -public class RoutingDataSourceServiceFactory { +public class RoutingDataSourceServiceFactory implements ApplicationContextAware { - @Autowired private ApplicationContext applicationContext; + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } + public RoutingDataSourceService determineDataSourceService() { String serviceName = "tomcatJdbcDataSourcePerTenantService"; if (ThreadLocalContextUtil.CONTEXT_TENANTS.equalsIgnoreCase(ThreadLocalContextUtil.getDataSourceContext())) { - serviceName = "dataSourceForTenants"; + if (applicationContext.containsBean("dataSourceForTenants")) { + serviceName = "dataSourceForTenants"; + } } return this.applicationContext.getBean(serviceName, RoutingDataSourceService.class); - } } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/SqlOperator.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/SqlOperator.java index 92132e11773..39b1cbb8e96 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/SqlOperator.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/SqlOperator.java @@ -27,7 +27,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.apache.fineract.infrastructure.core.exception.PlatformServiceUnavailableException; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; @AllArgsConstructor @Getter diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/TomcatJdbcDataSourcePerTenantService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/TomcatJdbcDataSourcePerTenantService.java index 11722bf2f32..f4f076a7b62 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/TomcatJdbcDataSourcePerTenantService.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/TomcatJdbcDataSourcePerTenantService.java @@ -26,7 +26,6 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import javax.sql.DataSource; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.configuration.service.MoneyHelperInitializationService; import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant; @@ -35,6 +34,7 @@ import org.apache.fineract.infrastructure.core.service.tenant.TenantDetailsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Service; @@ -45,13 +45,12 @@ * * {@link ThreadLocalContextUtil} is used to retrieve the {@link FineractPlatformTenant} for the request. */ +@DependsOnDatabaseInitialization @Slf4j @Service -@RequiredArgsConstructor public class TomcatJdbcDataSourcePerTenantService implements RoutingDataSourceService, ApplicationListener { private static final Map TENANT_TO_DATA_SOURCE_MAP = new ConcurrentHashMap<>(); - @Qualifier("hikariTenantDataSource") private final DataSource tenantDataSource; private final TenantDetailsService tenantDetailsService; @@ -61,6 +60,13 @@ public class TomcatJdbcDataSourcePerTenantService implements RoutingDataSourceSe @Autowired(required = false) private MoneyHelperInitializationService moneyHelperInitializationService; + public TomcatJdbcDataSourcePerTenantService(@Qualifier("hikariTenantDataSource") final DataSource tenantDataSource, + final TenantDetailsService tenantDetailsService, final DataSourcePerTenantServiceFactory dataSourcePerTenantServiceFactory) { + this.tenantDataSource = tenantDataSource; + this.tenantDetailsService = tenantDetailsService; + this.dataSourcePerTenantServiceFactory = dataSourcePerTenantServiceFactory; + } + @Override public DataSource retrieveDataSource() { // default to tenant database datasource diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/metrics/TenantConnectionPoolMetricsTracker.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/metrics/TenantConnectionPoolMetricsTracker.java index 9b1f1682299..65e76780285 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/metrics/TenantConnectionPoolMetricsTracker.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/metrics/TenantConnectionPoolMetricsTracker.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.service.database.metrics; import com.zaxxer.hikari.metrics.IMetricsTracker; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/tenant/JdbcTenantDetailsService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/tenant/JdbcTenantDetailsService.java index e248b301ae6..18ef34bc988 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/tenant/JdbcTenantDetailsService.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/tenant/JdbcTenantDetailsService.java @@ -24,8 +24,8 @@ import javax.sql.DataSource; import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant; import org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentifierException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.cache.annotation.Cacheable; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -35,12 +35,12 @@ * A JDBC implementation of {@link TenantDetailsService} for loading a tenants details by a * tenantIdentifier. */ +@DependsOnDatabaseInitialization @Service("tenantDetailsService") public class JdbcTenantDetailsService implements TenantDetailsService { private final JdbcTemplate jdbcTemplate; - @Autowired public JdbcTenantDetailsService(@Qualifier("hikariTenantDataSource") final DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/tenant/TenantMapper.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/tenant/TenantMapper.java index bb17ca50a10..84635abe20d 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/tenant/TenantMapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/tenant/TenantMapper.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.service.tenant; import java.sql.ResultSet; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DataTableValidator.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DataTableValidator.java index 0a5a552cc1e..09bb47520bd 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DataTableValidator.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DataTableValidator.java @@ -44,7 +44,6 @@ import org.apache.fineract.portfolio.search.data.ColumnFilterData; import org.apache.fineract.portfolio.search.data.FilterData; import org.apache.fineract.portfolio.search.data.TableQueryData; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -54,7 +53,6 @@ public class DataTableValidator { private static final Set SUPPORTED_PARAMETERS = new HashSet<>( Arrays.asList(DataTableApiConstant.categoryParamName, DataTableApiConstant.localParamName)); - @Autowired public DataTableValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableChecksData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableChecksData.java index 01f08519dd5..c4cdf40f330 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableChecksData.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableChecksData.java @@ -18,10 +18,12 @@ */ package org.apache.fineract.infrastructure.dataqueries.data; +import java.io.Serial; import java.io.Serializable; public class DatatableChecksData implements Serializable { + @Serial private static final long serialVersionUID = 3113568562509206452L; private final String entity; private final String dataTableName; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadService.java index 0956276431a..5dcaf4a6940 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadService.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadService.java @@ -26,8 +26,8 @@ import org.apache.fineract.infrastructure.dataqueries.data.EntityTables; import org.apache.fineract.infrastructure.dataqueries.data.GenericResultsetData; import org.apache.fineract.portfolio.search.data.AdvancedQueryData; +import org.jspecify.annotations.NonNull; import org.springframework.data.domain.Page; -import org.springframework.lang.NonNull; public interface DatatableReadService { diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/business/service/BusinessEventNotifierServiceImpl.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/business/service/BusinessEventNotifierServiceImpl.java index be44e057329..4edbc559ccb 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/business/service/BusinessEventNotifierServiceImpl.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/business/service/BusinessEventNotifierServiceImpl.java @@ -35,8 +35,8 @@ import org.apache.fineract.infrastructure.event.business.domain.BusinessEvent; import org.apache.fineract.infrastructure.event.business.domain.NoExternalEvent; import org.apache.fineract.infrastructure.event.external.service.ExternalEventService; +import org.jspecify.annotations.NonNull; import org.springframework.beans.factory.InitializingBean; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionExecution; import org.springframework.transaction.TransactionExecutionListener; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsConfig.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsConfig.java index 810d2bb705d..ead312cec93 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsConfig.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsConfig.java @@ -19,11 +19,11 @@ package org.apache.fineract.infrastructure.event.external.jobs; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsTasklet.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsTasklet.java index 895cda3a23b..d70b83241c0 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsTasklet.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsTasklet.java @@ -25,10 +25,10 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.event.external.repository.ExternalEventRepository; import org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventStatus; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.stereotype.Component; @Slf4j diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsConfig.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsConfig.java index 268c88fbe42..8cf1c2abf63 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsConfig.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsConfig.java @@ -20,11 +20,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.jobs.service.StepName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTasklet.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTasklet.java index 474c2cd8d4c..da9a31f6f5b 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTasklet.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTasklet.java @@ -46,10 +46,10 @@ import org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventView; import org.apache.fineract.infrastructure.event.external.service.message.MessageFactory; import org.apache.fineract.infrastructure.event.external.service.support.ByteBufferConverter; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/ExternalEventRepository.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/ExternalEventRepository.java index 673bd6c2aff..1f20ab25f6b 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/ExternalEventRepository.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/ExternalEventRepository.java @@ -33,7 +33,8 @@ public interface ExternalEventRepository extends JpaRepository, JpaSpecificationExecutor, CustomExternalEventRepository { - List findByStatusOrderByBusinessDateAscIdAsc(ExternalEventStatus status, Pageable batchSize); + @Query("SELECT e FROM ExternalEvent e WHERE e.status = :status ORDER BY e.businessDate ASC, e.id ASC") + List findByStatusOrderByBusinessDateAscIdAsc(@Param("status") ExternalEventStatus status, Pageable batchSize); @Modifying(flushAutomatically = true) @Query("delete from ExternalEvent e where e.status = :status and e.businessDate <= :dateForPurgeCriteria") diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/service/ExternalEventService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/service/ExternalEventService.java index 544cb88defc..1065452c2f8 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/service/ExternalEventService.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/service/ExternalEventService.java @@ -65,8 +65,8 @@ public void postEvent(BusinessEvent event) { try { entityManager.flush(); ExternalEvent externalEvent; - if (event instanceof BulkBusinessEvent) { - externalEvent = handleBulkBusinessEvent((BulkBusinessEvent) event); + if (event instanceof BulkBusinessEvent businessEvent) { + externalEvent = handleBulkBusinessEvent(businessEvent); } else { externalEvent = handleRegularBusinessEvent(event); } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/service/InternalExternalEventService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/service/InternalExternalEventService.java index 722919c0520..13daab2bfff 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/service/InternalExternalEventService.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/service/InternalExternalEventService.java @@ -18,9 +18,6 @@ */ package org.apache.fineract.infrastructure.event.external.service; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import java.lang.reflect.InvocationTargetException; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -37,6 +34,9 @@ import org.springframework.context.annotation.Profile; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; @Service @Profile(FineractProfiles.TEST) @@ -76,8 +76,7 @@ public List getAllExternalEvents(String idempotencyKey, S try { return convertToReadableFormat(externalEvents); - } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException - | JsonProcessingException e) { + } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException | JacksonException e) { throw new RuntimeException("Error while converting external events to readable format", e); } } @@ -98,8 +97,8 @@ private Specification hasAggregateRootId(Long aggregateRootId) { return (root, query, cb) -> cb.equal(root.get("aggregateRootId"), aggregateRootId); } - private List convertToReadableFormat(List externalEvents) throws ClassNotFoundException, - NoSuchMethodException, InvocationTargetException, IllegalAccessException, JsonProcessingException { + private List convertToReadableFormat(List externalEvents) + throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, JacksonException { var eventMessages = new ArrayList(); for (var externalEvent : externalEvents) { var payLoadClass = Class.forName(externalEvent.getSchema()); @@ -138,8 +137,7 @@ private List convertToReadableFormat(List } private ExternalEventResponse retrieveBulkMessage(BulkMessageItemV1 messageItem, ExternalEvent externalEvent) - throws ClassNotFoundException, InvocationTargetException, IllegalAccessException, NoSuchMethodException, - JsonProcessingException { + throws ClassNotFoundException, InvocationTargetException, IllegalAccessException, NoSuchMethodException, JacksonException { var messageBulkMessagePayLoad = Class.forName(messageItem.getDataschema()); var methodForPayLoad = messageBulkMessagePayLoad.getMethod("fromByteBuffer", ByteBuffer.class); var payLoadBulkItem = methodForPayLoad.invoke(null, messageItem.getData()); @@ -148,7 +146,7 @@ private ExternalEventResponse retrieveBulkMessage(BulkMessageItemV1 messageItem, externalEvent.getSchema(), externalEvent.getAggregateRootId()); } - private Map toJsonMap(String json) throws JsonProcessingException { + private Map toJsonMap(String json) throws JacksonException { return mapper.readValue(json, new TypeReference<>() {}); } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java index 21db957240f..7eedc2951af 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java @@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.config.FineractProperties; import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.web.filter.OncePerRequestFilter; @RequiredArgsConstructor diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/jobs/TenantAwareEqualsHashCodeAdvice.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/jobs/TenantAwareEqualsHashCodeAdvice.java index 9a3e295b5d0..9e8cfdb9ac6 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/jobs/TenantAwareEqualsHashCodeAdvice.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/jobs/TenantAwareEqualsHashCodeAdvice.java @@ -44,9 +44,8 @@ public Object intercept(Object obj, Method method, Object[] args, MethodProxy pr if ("equals".equals(methodName) && args.length == 1) { Object other = args[0]; - if (other instanceof Factory) { - - TenantAwareEqualsHashCodeAdvice otherProxy = (TenantAwareEqualsHashCodeAdvice) ((Factory) other).getCallback(0); + if (other instanceof Factory factory) { + TenantAwareEqualsHashCodeAdvice otherProxy = (TenantAwareEqualsHashCodeAdvice) factory.getCallback(0); return Objects.equals(target, otherProxy.target) && Objects.equals(tenantIdentifier, otherProxy.tenantIdentifier); } return false; diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadService.java index e8e0710a81c..be620991ab8 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadService.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadService.java @@ -24,19 +24,19 @@ import org.apache.fineract.infrastructure.core.service.SearchParameters; import org.apache.fineract.infrastructure.jobs.data.JobDetailData; import org.apache.fineract.infrastructure.jobs.data.JobDetailHistoryData; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public interface SchedulerJobRunnerReadService { List findAllJobDetails(); - JobDetailData retrieveOne(@NonNull IdTypeResolver.IdType idType, String identifier); + JobDetailData retrieveOne(IdTypeResolver.@NonNull IdType idType, String identifier); - Page retrieveJobHistory(@NonNull IdTypeResolver.IdType idType, String identifier, + Page retrieveJobHistory(IdTypeResolver.@NonNull IdType idType, String identifier, SearchParameters searchParameters); @NonNull - Long retrieveId(@NonNull IdTypeResolver.IdType idType, String identifier); + Long retrieveId(IdTypeResolver.@NonNull IdType idType, String identifier); boolean isUpdatesAllowed(); } diff --git a/fineract-core/src/main/java/org/apache/fineract/notification/data/NotificationData.java b/fineract-core/src/main/java/org/apache/fineract/notification/data/NotificationData.java index 5e249f4e483..a4f811cb99f 100644 --- a/fineract-core/src/main/java/org/apache/fineract/notification/data/NotificationData.java +++ b/fineract-core/src/main/java/org/apache/fineract/notification/data/NotificationData.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.notification.data; +import java.io.Serial; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Set; @@ -30,6 +31,7 @@ @Accessors(chain = true) public class NotificationData implements Serializable { + @Serial private static final long serialVersionUID = 1L; private Long id; diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrencyRepositoryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrencyRepositoryWrapper.java index a9697be7e7a..e347ac69bd6 100644 --- a/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrencyRepositoryWrapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrencyRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.organisation.monetary.domain; import org.apache.fineract.organisation.monetary.exception.CurrencyNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -38,7 +37,6 @@ public class ApplicationCurrencyRepositoryWrapper { private final ApplicationCurrencyRepository repository; - @Autowired public ApplicationCurrencyRepositoryWrapper(final ApplicationCurrencyRepository repository) { this.repository = repository; } diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/OrganisationCurrencyRepositoryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/OrganisationCurrencyRepositoryWrapper.java index a67898d9c01..e3ce90c6524 100644 --- a/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/OrganisationCurrencyRepositoryWrapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/OrganisationCurrencyRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.organisation.monetary.domain; import org.apache.fineract.organisation.monetary.exception.OrganizationalCurrencyNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -38,7 +37,6 @@ public class OrganisationCurrencyRepositoryWrapper { private final OrganisationCurrencyRepository repository; - @Autowired public OrganisationCurrencyRepositoryWrapper(final OrganisationCurrencyRepository repository) { this.repository = repository; } diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/OfficeRepositoryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/OfficeRepositoryWrapper.java index 325cc5cd2b9..2f96f59a898 100644 --- a/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/OfficeRepositoryWrapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/OfficeRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.organisation.office.domain; import org.apache.fineract.organisation.office.exception.OfficeNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -33,7 +32,6 @@ public class OfficeRepositoryWrapper { private final OfficeRepository repository; - @Autowired public OfficeRepositoryWrapper(final OfficeRepository repository) { this.repository = repository; } diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCategoryData.java b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCategoryData.java index ca75b0c0ae6..e42540c921d 100644 --- a/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCategoryData.java +++ b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCategoryData.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.organisation.provisioning.data; +import java.io.Serial; import java.io.Serializable; import lombok.Data; import lombok.NoArgsConstructor; @@ -32,6 +33,7 @@ @Accessors(chain = true) public class ProvisioningCategoryData implements Comparable, Serializable { + @Serial private static final long serialVersionUID = 1L; private Long id; private String categoryName; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeTypeConverter.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeTypeConverter.java index b5a4a651028..9d9990fb4a5 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeTypeConverter.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeTypeConverter.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.charge.domain; import jakarta.persistence.AttributeConverter; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java index 544100686ff..652e64806bc 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.data; import java.io.Serializable; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucketType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucketType.java index 86d37759300..1d40aebedb4 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucketType.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucketType.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.delinquency.domain; import java.util.Arrays; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyFrequencyType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyFrequencyType.java index 08b18abc8ff..01c1235f80d 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyFrequencyType.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyFrequencyType.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.delinquency.domain; import java.util.Arrays; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyMinimumPaymentPeriodAndRule.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyMinimumPaymentPeriodAndRule.java index d2a7cc6349b..14bc74aa066 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyMinimumPaymentPeriodAndRule.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyMinimumPaymentPeriodAndRule.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.delinquency.domain; import jakarta.persistence.Column; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/note/data/NoteCreateEvent.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/note/data/NoteCreateEvent.java new file mode 100644 index 00000000000..9bdc6f6dda1 --- /dev/null +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/note/data/NoteCreateEvent.java @@ -0,0 +1,38 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.note.data; + +import lombok.Getter; +import org.apache.fineract.infrastructure.core.domain.FineractContext; +import org.apache.fineract.infrastructure.core.domain.FineractEvent; + +/** + * Carries a {@link NoteCreateRequest} together with the {@link FineractContext} captured on the publishing thread, so + * that {@code NoteListener} can restore the tenant context before processing on the shared asynchronous event executor. + */ +@Getter +public final class NoteCreateEvent extends FineractEvent { + + private final NoteCreateRequest request; + + public NoteCreateEvent(final Object source, final NoteCreateRequest request, final FineractContext context) { + super(source, context); + this.request = request; + } +} diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetailAssembler.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetailAssembler.java index 8a2af56c4e3..3d15ff49922 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetailAssembler.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetailAssembler.java @@ -24,7 +24,6 @@ import org.apache.fineract.portfolio.paymenttype.domain.PaymentType; import org.apache.fineract.portfolio.paymenttype.domain.PaymentTypeRepository; import org.apache.fineract.portfolio.paymenttype.exception.PaymentTypeNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -33,7 +32,6 @@ public class PaymentDetailAssembler { private final FromJsonHelper fromApiJsonHelper; private final PaymentTypeRepository paymentTypeRepository; - @Autowired public PaymentDetailAssembler(final FromJsonHelper fromApiJsonHelper, final PaymentTypeRepository paymentTypeRepository) { this.fromApiJsonHelper = fromApiJsonHelper; this.paymentTypeRepository = paymentTypeRepository; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/service/PaymentTypeWriteServiceImpl.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/service/PaymentTypeWriteServiceImpl.java index b024be380f6..98f527a685d 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/service/PaymentTypeWriteServiceImpl.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/service/PaymentTypeWriteServiceImpl.java @@ -55,7 +55,6 @@ public PaymentTypeCreateResponse createPaymentType(@Valid PaymentTypeCreateReque @Override @CacheEvict(value = "payment_types", key = "T(org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil).getTenant().getTenantIdentifier().concat('payment_types')") - @SuppressWarnings("AvoidHidingCauseException") public PaymentTypeUpdateResponse updatePaymentType(@Valid PaymentTypeUpdateRequest request) { try { final var paymentType = repository.findById(request.getId()) @@ -82,7 +81,8 @@ public PaymentTypeUpdateResponse updatePaymentType(@Valid PaymentTypeUpdateReque repository.saveAndFlush(paymentType); } catch (final JpaSystemException | DataIntegrityViolationException e) { - throw new PaymentTypeNotFoundException(request.getId()); + throw ErrorHandler.getMappable(e, "error.msg.paymenttypes.unknown.data.integrity.issue", + "Unknown data integrity issue with resource."); } return PaymentTypeUpdateResponse.builder().resourceId(request.getId()).build(); diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java index 48bb96da782..3c660092046 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.rate.data; import java.io.Serializable; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java index 8e9744dc47d..26fdf9b5026 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.rate.domain; import jakarta.persistence.Column; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java index 0801751807c..0abfba6627c 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.rate.domain; public enum RateAppliesTo { diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsHelper.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsHelper.java index b1cc37c269c..1161b6b3895 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsHelper.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsHelper.java @@ -32,7 +32,6 @@ import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.savings.domain.interest.CompoundInterestHelper; import org.apache.fineract.portfolio.savings.domain.interest.PostingPeriod; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -40,7 +39,6 @@ public final class SavingsHelper { private final AccountTransfersReadPlatformService accountTransfersReadPlatformService; - @Autowired public SavingsHelper(AccountTransfersReadPlatformService accountTransfersReadPlatformService) { this.accountTransfersReadPlatformService = accountTransfersReadPlatformService; } diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/search/service/SearchUtil.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/service/SearchUtil.java index 0107308eb6a..2bcae6eaabc 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/search/service/SearchUtil.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/service/SearchUtil.java @@ -54,8 +54,8 @@ import org.apache.fineract.infrastructure.security.service.SqlValidator; import org.apache.fineract.portfolio.search.data.ColumnFilterData; import org.apache.fineract.portfolio.search.data.FilterData; +import org.jspecify.annotations.NonNull; import org.springframework.jdbc.support.rowset.SqlRowSet; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; @Slf4j @@ -95,20 +95,20 @@ public void extractJsonResult(@NonNull SqlRowSet rowSet, @NonNull List s Object rowValue = rowSet.getObject(selectColumns.get(i)); if (rowValue != null) { String rCol = resultColumns.get(i); - if (rowValue instanceof Character) { - json.addProperty(rCol, (Character) rowValue); + if (rowValue instanceof Character character) { + json.addProperty(rCol, character); } else if (rowValue instanceof Number) { json.addProperty(rCol, new BigDecimal(rowValue.toString())); - } else if (rowValue instanceof Boolean) { - json.addProperty(rCol, (Boolean) rowValue); - } else if (rowValue instanceof LocalDateTime) { - json.addProperty(rCol, DateUtils.format((LocalDateTime) rowValue)); - } else if (rowValue instanceof Timestamp) { - json.addProperty(rCol, DateUtils.format(((Timestamp) rowValue).toLocalDateTime())); - } else if (rowValue instanceof LocalDate) { - json.addProperty(rCol, DateUtils.format((LocalDate) rowValue)); - } else if (rowValue instanceof Date) { - json.addProperty(rCol, DateUtils.format(((Date) rowValue).toLocalDate())); + } else if (rowValue instanceof Boolean boolean1) { + json.addProperty(rCol, boolean1); + } else if (rowValue instanceof LocalDateTime time) { + json.addProperty(rCol, DateUtils.format(time)); + } else if (rowValue instanceof Timestamp timestamp) { + json.addProperty(rCol, DateUtils.format(timestamp.toLocalDateTime())); + } else if (rowValue instanceof LocalDate date1) { + json.addProperty(rCol, DateUtils.format(date1)); + } else if (rowValue instanceof Date date) { + json.addProperty(rCol, DateUtils.format(date.toLocalDate())); } else { json.addProperty(rCol, rowValue.toString()); } diff --git a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserRepositoryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserRepositoryWrapper.java index ca5676e87e1..895d4016b2d 100644 --- a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserRepositoryWrapper.java +++ b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserRepositoryWrapper.java @@ -20,7 +20,6 @@ import org.apache.fineract.useradministration.exception.UserNotFoundException; import org.apache.fineract.useradministration.service.AppUserConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -28,7 +27,6 @@ public class AppUserRepositoryWrapper { private final AppUserRepository appUserRepository; - @Autowired public AppUserRepositoryWrapper(final AppUserRepository appUserRepository) { this.appUserRepository = appUserRepository; } diff --git a/fineract-core/src/main/java/org/springframework/batch/core/scope/context/JobSynchronizationManager.java b/fineract-core/src/main/java/org/springframework/batch/core/scope/context/JobSynchronizationManager.java index c4446ee5ebb..fa5414b063a 100644 --- a/fineract-core/src/main/java/org/springframework/batch/core/scope/context/JobSynchronizationManager.java +++ b/fineract-core/src/main/java/org/springframework/batch/core/scope/context/JobSynchronizationManager.java @@ -19,11 +19,11 @@ package org.springframework.batch.core.scope.context; import org.apache.fineract.infrastructure.jobs.TenantAwareEqualsHashCodeAdvice; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobInstance; -import org.springframework.batch.core.JobParameters; +import org.jspecify.annotations.Nullable; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.JobInstance; +import org.springframework.batch.core.job.parameters.JobParameters; import org.springframework.cglib.proxy.Enhancer; -import org.springframework.lang.Nullable; // Temporary solution until spring-batch fixes the concurrency issue // https://github.com/spring-projects/spring-batch/issues/4774 @@ -53,8 +53,8 @@ public static JobContext register(JobExecution jobExecution) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(JobExecution.class); enhancer.setCallback(new TenantAwareEqualsHashCodeAdvice(jobExecution)); - return manager.register((JobExecution) enhancer.create(new Class[] { JobInstance.class, Long.class, JobParameters.class }, - new Object[] { jobExecution.getJobInstance(), jobExecution.getId(), jobExecution.getJobParameters() })); + return manager.register((JobExecution) enhancer.create(new Class[] { long.class, JobInstance.class, JobParameters.class }, + new Object[] { jobExecution.getId(), jobExecution.getJobInstance(), jobExecution.getJobParameters() })); } public static void close() { diff --git a/fineract-core/src/main/java/org/springframework/batch/core/scope/context/StepSynchronizationManager.java b/fineract-core/src/main/java/org/springframework/batch/core/scope/context/StepSynchronizationManager.java index ca9e995e92d..07fca6e4edf 100644 --- a/fineract-core/src/main/java/org/springframework/batch/core/scope/context/StepSynchronizationManager.java +++ b/fineract-core/src/main/java/org/springframework/batch/core/scope/context/StepSynchronizationManager.java @@ -19,10 +19,10 @@ package org.springframework.batch.core.scope.context; import org.apache.fineract.infrastructure.jobs.TenantAwareEqualsHashCodeAdvice; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; +import org.jspecify.annotations.Nullable; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.step.StepExecution; import org.springframework.cglib.proxy.Enhancer; -import org.springframework.lang.Nullable; // Temporary solution until spring-batch fixes the concurrency issue // https://github.com/spring-projects/spring-batch/issues/4774 diff --git a/fineract-core/src/test/java/org/apache/fineract/infrastructure/core/exceptionmapper/DefaultExceptionMapperTest.java b/fineract-core/src/test/java/org/apache/fineract/infrastructure/core/exceptionmapper/DefaultExceptionMapperTest.java index 54afb5acb0d..77141e80e7d 100644 --- a/fineract-core/src/test/java/org/apache/fineract/infrastructure/core/exceptionmapper/DefaultExceptionMapperTest.java +++ b/fineract-core/src/test/java/org/apache/fineract/infrastructure/core/exceptionmapper/DefaultExceptionMapperTest.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.infrastructure.core.exceptionmapper; -import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; +import static org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; diff --git a/fineract-core/src/test/java/org/apache/fineract/infrastructure/core/service/MathUtilTest.java b/fineract-core/src/test/java/org/apache/fineract/infrastructure/core/service/MathUtilTest.java index bf6ba45d774..d74e6cb6517 100644 --- a/fineract-core/src/test/java/org/apache/fineract/infrastructure/core/service/MathUtilTest.java +++ b/fineract-core/src/test/java/org/apache/fineract/infrastructure/core/service/MathUtilTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.service; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/fineract-document/build.gradle b/fineract-document/build.gradle index 37ddda8ab53..6a1c8cf6f50 100644 --- a/fineract-document/build.gradle +++ b/fineract-document/build.gradle @@ -73,3 +73,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-document/dependencies.gradle b/fineract-document/dependencies.gradle index 65c6ab23726..644808d1951 100644 --- a/fineract-document/dependencies.gradle +++ b/fineract-document/dependencies.gradle @@ -30,7 +30,7 @@ dependencies { ) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-validation', 'org.springframework.boot:spring-boot-starter-security', 'org.springframework.boot:spring-boot-starter-data-jdbc', @@ -44,7 +44,7 @@ dependencies { 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', 'org.apache.tika:tika-core', @@ -74,6 +74,6 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') testImplementation 'com.github.romankh3:image-comparison' } diff --git a/fineract-e2e-tests-core/build.gradle b/fineract-e2e-tests-core/build.gradle index 1182d3abae1..f4f736b0387 100644 --- a/fineract-e2e-tests-core/build.gradle +++ b/fineract-e2e-tests-core/build.gradle @@ -69,6 +69,7 @@ dependencies { testImplementation 'com.squareup.retrofit2:retrofit' testImplementation 'io.github.openfeign:feign-core:13.12' testImplementation 'io.github.openfeign:feign-jackson:13.12' + testImplementation 'tools.jackson.core:jackson-databind' testImplementation 'org.apache.httpcomponents:httpclient' testImplementation 'org.apache.commons:commons-lang3' testImplementation 'com.google.guava:guava' diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/delinquency/DelinquencyFrequencyType.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/delinquency/DelinquencyFrequencyType.java index 5400f60b6df..973babd5e02 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/delinquency/DelinquencyFrequencyType.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/delinquency/DelinquencyFrequencyType.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.test.data.delinquency; import lombok.Getter; diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/workingcapitalproduct/WorkingCapitalBreachCalculationType.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/workingcapitalproduct/WorkingCapitalBreachCalculationType.java index b90f3de78be..23b55a6df08 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/workingcapitalproduct/WorkingCapitalBreachCalculationType.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/workingcapitalproduct/WorkingCapitalBreachCalculationType.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.test.data.workingcapitalproduct; import lombok.Getter; diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/workingcapitalproduct/WorkingCapitalBreachFrequencyType.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/workingcapitalproduct/WorkingCapitalBreachFrequencyType.java index 331e23c7e81..5e5fb4cb8e6 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/workingcapitalproduct/WorkingCapitalBreachFrequencyType.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/workingcapitalproduct/WorkingCapitalBreachFrequencyType.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.test.data.workingcapitalproduct; import lombok.Getter; diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/ErrorResponse.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/ErrorResponse.java index cbac529b4c3..5ecbe247717 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/ErrorResponse.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/ErrorResponse.java @@ -18,8 +18,6 @@ */ package org.apache.fineract.test.helper; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.List; import lombok.Getter; @@ -27,6 +25,8 @@ import lombok.Setter; import org.apache.fineract.client.feign.ObjectMapperFactory; import retrofit2.Response; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; @NoArgsConstructor @Getter @@ -73,7 +73,7 @@ public static ErrorResponse from(Response retrofitResponse) { try { String errorBody = retrofitResponse.errorBody().string(); return OBJECT_MAPPER.readValue(errorBody, ErrorResponse.class); - } catch (IOException e) { + } catch (IOException | JacksonException e) { throw new RuntimeException("Error while parsing the error body", e); } } @@ -82,7 +82,7 @@ public static ErrorResponse fromFeignException(feign.FeignException feignExcepti try { String errorBody = feignException.contentUTF8(); return OBJECT_MAPPER.readValue(errorBody, ErrorResponse.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException("Error while parsing the error body", e); } } @@ -93,7 +93,7 @@ public static ErrorResponse fromFeignException(org.apache.fineract.client.feign. ErrorResponse errorResponse = OBJECT_MAPPER.readValue(errorBody, ErrorResponse.class); errorResponse.setHttpStatusCode(feignException.status()); return errorResponse; - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException("Error while parsing the error body", e); } } diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkingCapitalLoanProductAdvancedAccountingTestHelper.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkingCapitalLoanProductAdvancedAccountingTestHelper.java index ca91660bcb9..3d9ff407f83 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkingCapitalLoanProductAdvancedAccountingTestHelper.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkingCapitalLoanProductAdvancedAccountingTestHelper.java @@ -22,8 +22,6 @@ import static org.apache.fineract.client.feign.util.FeignCalls.ok; import static org.assertj.core.api.Assertions.assertThat; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -51,13 +49,16 @@ import org.apache.fineract.test.data.paymenttype.DefaultPaymentType; import org.apache.fineract.test.data.paymenttype.PaymentTypeResolver; import org.apache.fineract.test.factory.GLAccountRequestFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public final class WorkingCapitalLoanProductAdvancedAccountingTestHelper { private WorkingCapitalLoanProductAdvancedAccountingTestHelper() {} public static void assertTemplateHasOptions(final GetWorkingCapitalLoanProductsTemplateResponse template) { - final JsonNode root = toTree(new ObjectMapper(), template); + final JsonNode root = toTree(new JsonMapper(), template); assertThat(root.path("paymentTypeOptions").isArray()).as("paymentTypeOptions must be present in template").isTrue(); assertThat(root.path("chargeOffReasonOptions").isArray()).as("chargeOffReasonOptions must be present in template").isTrue(); assertThat(root.path("writeOffReasonOptions").isArray()).as("writeOffReasonOptions must be present in template").isTrue(); @@ -171,39 +172,39 @@ public static void assertProductHasExpectedAdvancedMappings(final ObjectMapper o assertThat(root.path("paymentChannelToFundSourceMappings").path(0).path("paymentType").path("id").asLong()) .as("paymentType.id mismatch").isEqualTo(expected.paymentTypeId()); - assertThat(root.path("paymentChannelToFundSourceMappings").path(0).path("paymentType").path("name").asText()) + assertThat(root.path("paymentChannelToFundSourceMappings").path(0).path("paymentType").path("name").asString()) .as("paymentType.name mismatch").isEqualTo(expected.paymentTypeName()); assertThat(root.path("paymentChannelToFundSourceMappings").path(0).path("fundSourceAccount").path("id").asLong()) .as("fundSourceAccount.id mismatch").isEqualTo(expected.fundSourceAccountId()); - assertThat(root.path("paymentChannelToFundSourceMappings").path(0).path("fundSourceAccount").path("name").asText()) + assertThat(root.path("paymentChannelToFundSourceMappings").path(0).path("fundSourceAccount").path("name").asString()) .as("fundSourceAccount.name mismatch").isEqualTo(expected.fundSourceAccountName()); assertThat(root.path("feeToIncomeAccountMappings").path(0).path("charge").path("id").asLong()).as("fee charge.id mismatch") .isEqualTo(expected.feeChargeId()); assertThat(root.path("feeToIncomeAccountMappings").path(0).path("incomeAccount").path("id").asLong()) .as("fee incomeAccount.id mismatch").isEqualTo(expected.feeIncomeAccountId()); - assertThat(root.path("feeToIncomeAccountMappings").path(0).path("incomeAccount").path("name").asText()) + assertThat(root.path("feeToIncomeAccountMappings").path(0).path("incomeAccount").path("name").asString()) .as("fee incomeAccount.name mismatch").isEqualTo(expected.feeIncomeAccountName()); assertThat(root.path("penaltyToIncomeAccountMappings").path(0).path("charge").path("id").asLong()).as("penalty charge.id mismatch") .isEqualTo(expected.penaltyChargeId()); assertThat(root.path("penaltyToIncomeAccountMappings").path(0).path("incomeAccount").path("id").asLong()) .as("penalty incomeAccount.id mismatch").isEqualTo(expected.penaltyIncomeAccountId()); - assertThat(root.path("penaltyToIncomeAccountMappings").path(0).path("incomeAccount").path("name").asText()) + assertThat(root.path("penaltyToIncomeAccountMappings").path(0).path("incomeAccount").path("name").asString()) .as("penalty incomeAccount.name mismatch").isEqualTo(expected.penaltyIncomeAccountName()); assertThat(root.path("chargeOffReasonToExpenseAccountMappings").path(0).path("reasonCodeValue").path("id").asLong()) .as("chargeOff reason id mismatch").isEqualTo(expected.chargeOffReasonId()); assertThat(root.path("chargeOffReasonToExpenseAccountMappings").path(0).path("expenseAccount").path("id").asLong()) .as("chargeOff expenseAccount.id mismatch").isEqualTo(expected.chargeOffExpenseAccountId()); - assertThat(root.path("chargeOffReasonToExpenseAccountMappings").path(0).path("expenseAccount").path("name").asText()) + assertThat(root.path("chargeOffReasonToExpenseAccountMappings").path(0).path("expenseAccount").path("name").asString()) .as("chargeOff expenseAccount.name mismatch").isEqualTo(expected.chargeOffExpenseAccountName()); assertThat(root.path("writeOffReasonsToExpenseMappings").path(0).path("reasonCodeValue").path("id").asLong()) .as("writeOff reason id mismatch").isEqualTo(expected.writeOffReasonId()); assertThat(root.path("writeOffReasonsToExpenseMappings").path(0).path("expenseAccount").path("id").asLong()) .as("writeOff expenseAccount.id mismatch").isEqualTo(expected.writeOffExpenseAccountId()); - assertThat(root.path("writeOffReasonsToExpenseMappings").path(0).path("expenseAccount").path("name").asText()) + assertThat(root.path("writeOffReasonsToExpenseMappings").path(0).path("expenseAccount").path("name").asString()) .as("writeOff expenseAccount.name mismatch").isEqualTo(expected.writeOffExpenseAccountName()); } diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/loan/transaction/BulkBusinessEvent.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/loan/transaction/BulkBusinessEvent.java index fa01be293ac..84f14428584 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/loan/transaction/BulkBusinessEvent.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/loan/transaction/BulkBusinessEvent.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.test.messaging.event.loan.transaction; import java.util.function.Function; diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BatchApiStepDef.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BatchApiStepDef.java index 1b982837642..06e9651b49f 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BatchApiStepDef.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BatchApiStepDef.java @@ -80,11 +80,12 @@ import org.apache.fineract.test.stepdef.AbstractStepDef; import org.apache.fineract.test.support.TestContextKey; import org.springframework.beans.factory.annotation.Autowired; +import tools.jackson.core.JacksonException; @Slf4j public class BatchApiStepDef extends AbstractStepDef { - private static final com.fasterxml.jackson.databind.ObjectMapper OBJECT_MAPPER = org.apache.fineract.client.feign.ObjectMapperFactory + private static final tools.jackson.databind.ObjectMapper OBJECT_MAPPER = org.apache.fineract.client.feign.ObjectMapperFactory .getShared(); private static final String DATE_FORMAT = "dd MMMM yyyy"; private static final String DEFAULT_LOCALE = "en"; @@ -1344,7 +1345,7 @@ public void verifyInterestPausePeriod(int startDay, int endDay) throws IOExcepti // Parse the loan ID from the response String loanCreateResponseBody = loanCreateResponse.getBody(); - com.fasterxml.jackson.databind.JsonNode loanCreateJson = readTree(loanCreateResponseBody); + tools.jackson.databind.JsonNode loanCreateJson = readTree(loanCreateResponseBody); long loanId = loanCreateJson.get("loanId").asLong(); // Get the loan details @@ -1376,7 +1377,7 @@ public void verifyInterestPausePeriod(int startDay, int endDay) throws IOExcepti private static String toJson(Object obj) { try { return OBJECT_MAPPER.writeValueAsString(obj); - } catch (com.fasterxml.jackson.core.JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException("Error serializing object to JSON", e); } } @@ -1384,15 +1385,15 @@ private static String toJson(Object obj) { private static T fromJson(String json, Class clazz) { try { return OBJECT_MAPPER.readValue(json, clazz); - } catch (com.fasterxml.jackson.core.JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException("Error deserializing JSON to object", e); } } - private static com.fasterxml.jackson.databind.JsonNode readTree(String json) { + private static tools.jackson.databind.JsonNode readTree(String json) { try { return OBJECT_MAPPER.readTree(json); - } catch (com.fasterxml.jackson.core.JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException("Error parsing JSON tree", e); } } diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/datatable/DatatablesStepDef.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/datatable/DatatablesStepDef.java index 771233c2156..0834512de3e 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/datatable/DatatablesStepDef.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/datatable/DatatablesStepDef.java @@ -23,8 +23,6 @@ import static org.apache.fineract.client.feign.util.FeignCalls.ok; import static org.assertj.core.api.Assertions.assertThat; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import io.cucumber.datatable.DataTable; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; @@ -59,6 +57,8 @@ import org.apache.fineract.test.data.datatable.DatatableNameGenerator; import org.apache.fineract.test.stepdef.AbstractStepDef; import org.apache.fineract.test.support.TestContextKey; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; @RequiredArgsConstructor public class DatatablesStepDef extends AbstractStepDef { @@ -533,7 +533,7 @@ private String buildEntryBodyJson(final String columnName, final String value) { } try { return OBJECT_MAPPER.writeValueAsString(Map.of("locale", "en", columnName, parseValue(value))); - } catch (final JsonProcessingException e) { + } catch (final JacksonException e) { throw new IllegalStateException("Failed to serialize datatable entry body", e); } } @@ -600,7 +600,7 @@ private boolean valuesMatch(final Object actual, final Object expected) { } try { return toRowList(OBJECT_MAPPER.readValue(serialized, Object.class)); - } catch (final JsonProcessingException e) { + } catch (final JacksonException e) { throw new IllegalStateException("Failed to deserialize datatable row response", e); } } diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/WorkingCapitalBatchApiStepDef.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/WorkingCapitalBatchApiStepDef.java index 572550b0949..706a69138b8 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/WorkingCapitalBatchApiStepDef.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/WorkingCapitalBatchApiStepDef.java @@ -71,7 +71,7 @@ public class WorkingCapitalBatchApiStepDef extends AbstractStepDef { private static final String ENCLOSING_TRANSACTION = "enclosingTransaction"; private static final String BODY_GET_REQUEST = "{}"; private static final Gson GSON = new Gson(); - private static final com.fasterxml.jackson.databind.ObjectMapper OBJECT_MAPPER = org.apache.fineract.client.feign.ObjectMapperFactory + private static final tools.jackson.databind.ObjectMapper OBJECT_MAPPER = org.apache.fineract.client.feign.ObjectMapperFactory .getShared(); private static final String WCL_BASE_URL = "v1/working-capital-loans"; private static final String WCL_EXTERNAL_ID_URL = WCL_BASE_URL + "/external-id/"; @@ -285,7 +285,7 @@ private Long getCreatedWCLoanId() { private static T fromJson(String json, Class clazz) { try { return OBJECT_MAPPER.readValue(json, clazz); - } catch (com.fasterxml.jackson.core.JsonProcessingException e) { + } catch (tools.jackson.core.JacksonException e) { throw new RuntimeException("Error deserializing JSON to object", e); } } diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/WorkingCapitalStepDef.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/WorkingCapitalStepDef.java index e7aac8a0c2f..1c4e2219790 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/WorkingCapitalStepDef.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/WorkingCapitalStepDef.java @@ -24,8 +24,6 @@ import static org.apache.fineract.test.support.TestContextKey.WORKING_CAPITAL_NEAR_BREACH_ID; import static org.assertj.core.api.Assertions.assertThat; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import io.cucumber.datatable.DataTable; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; @@ -84,6 +82,8 @@ import org.apache.fineract.test.support.TestContextKey; import org.assertj.core.api.SoftAssertions; import org.junit.jupiter.api.Assertions; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; @Slf4j @RequiredArgsConstructor @@ -217,7 +217,7 @@ public void createWCLPWithBreachFrequencyLowerThenNearBreachFailure(int breachFr } @When("Admin updates a Working Capital Loan Product with breach and near breach") - public void updateWorkingCapitalLoanProductWithBreachAndNearBreach() throws JsonProcessingException { + public void updateWorkingCapitalLoanProductWithBreachAndNearBreach() throws JacksonException { final Long breachId = getWcBreachIdForFrequency(1, WorkingCapitalBreachFrequencyType.YEARS.getCode()); final Long nearBreachId = getWcNearBreachIdForFrequency(10, WorkingCapitalBreachFrequencyType.DAYS.getCode()); @@ -225,7 +225,7 @@ public void updateWorkingCapitalLoanProductWithBreachAndNearBreach() throws Json } @When("Admin updates a Working Capital Loan Product with near breach") - public void updateWorkingCapitalLoanProductWithNearBreach() throws JsonProcessingException { + public void updateWorkingCapitalLoanProductWithNearBreach() throws JacksonException { PostWorkingCapitalLoanProductsRequest workingCapitalLoanProductsRequest = testContext() .get(TestContextKey.WORKING_CAPITAL_LOAN_PRODUCT_CREATE_REQUEST); final Long breachId = workingCapitalLoanProductsRequest.getBreachId(); @@ -236,7 +236,7 @@ public void updateWorkingCapitalLoanProductWithNearBreach() throws JsonProcessin @When("Admin updates a WCLP with breach {int} {string} frequency and near breach {int} {string} frequency") public void updateWorkingCapitalLoanProductWithBreachAndNearBreach(int breachFrequency, String breachFrequencyType, - int nearBreachFrequency, String nearBreachFrequencyType) throws JsonProcessingException { + int nearBreachFrequency, String nearBreachFrequencyType) throws JacksonException { final Long breachId = getWcBreachIdForFrequency(breachFrequency, breachFrequencyType); final Long nearBreachId = getWcNearBreachIdForFrequency(nearBreachFrequency, nearBreachFrequencyType); diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/testrail/TestRailConfiguration.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/testrail/TestRailConfiguration.java index de98ef2edce..7085a3e98cd 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/testrail/TestRailConfiguration.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/testrail/TestRailConfiguration.java @@ -23,9 +23,9 @@ import feign.Feign; import feign.Request; import feign.Retryer; -import feign.jackson.JacksonEncoder; import java.util.concurrent.TimeUnit; import org.apache.fineract.client.feign.BasicAuthRequestInterceptor; +import org.apache.fineract.client.feign.Jackson3Encoder; import org.apache.fineract.client.feign.ObjectMapperFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -55,7 +55,7 @@ public TestRailApiClient testRailApiClient() { throw new IllegalStateException("TestRail password has not been set"); } - return Feign.builder().encoder(new JacksonEncoder(ObjectMapperFactory.getShared())) + return Feign.builder().encoder(new Jackson3Encoder(ObjectMapperFactory.getShared())) .options(new Request.Options(30, TimeUnit.SECONDS, 60, TimeUnit.SECONDS, true)).retryer(Retryer.NEVER_RETRY) .requestInterceptor(new BasicAuthRequestInterceptor(testRailUsername, testRailPassword)) .target(TestRailApiClient.class, testRailBaseUrl); diff --git a/fineract-investor/build.gradle b/fineract-investor/build.gradle index 29c9846ff27..dfc06d1b777 100644 --- a/fineract-investor/build.gradle +++ b/fineract-investor/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-investor/dependencies.gradle b/fineract-investor/dependencies.gradle index 1f5dc3705e5..4c6d1150577 100644 --- a/fineract-investor/dependencies.gradle +++ b/fineract-investor/dependencies.gradle @@ -55,7 +55,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.reflections:reflections', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/serialization/ExternalAssetOwnerValidator.java b/fineract-investor/src/main/java/org/apache/fineract/investor/serialization/ExternalAssetOwnerValidator.java index 918d3352731..b1ad300e3e8 100644 --- a/fineract-investor/src/main/java/org/apache/fineract/investor/serialization/ExternalAssetOwnerValidator.java +++ b/fineract-investor/src/main/java/org/apache/fineract/investor/serialization/ExternalAssetOwnerValidator.java @@ -1,4 +1,3 @@ - /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/service/AccountingServiceImpl.java b/fineract-investor/src/main/java/org/apache/fineract/investor/service/AccountingServiceImpl.java index 98dcc227356..b839dbbcb03 100644 --- a/fineract-investor/src/main/java/org/apache/fineract/investor/service/AccountingServiceImpl.java +++ b/fineract-investor/src/main/java/org/apache/fineract/investor/service/AccountingServiceImpl.java @@ -44,7 +44,7 @@ import org.apache.fineract.portfolio.PortfolioProductType; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Service; @Service diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/service/serialization/serializer/investor/InvestorBusinessEventSerializer.java b/fineract-investor/src/main/java/org/apache/fineract/investor/service/serialization/serializer/investor/InvestorBusinessEventSerializer.java index 2d3378f9579..baf7b15a587 100644 --- a/fineract-investor/src/main/java/org/apache/fineract/investor/service/serialization/serializer/investor/InvestorBusinessEventSerializer.java +++ b/fineract-investor/src/main/java/org/apache/fineract/investor/service/serialization/serializer/investor/InvestorBusinessEventSerializer.java @@ -48,7 +48,7 @@ import org.apache.fineract.investor.service.ExternalAssetOwnersReadService; import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; import org.apache.fineract.portfolio.loanaccount.domain.LoanCharge; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Component; @Component diff --git a/fineract-loan-origination/build.gradle b/fineract-loan-origination/build.gradle index 278bed82fee..4fcfc73ef1b 100644 --- a/fineract-loan-origination/build.gradle +++ b/fineract-loan-origination/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-loan-origination/dependencies.gradle b/fineract-loan-origination/dependencies.gradle index e1af2fcc89d..12a3e80c516 100644 --- a/fineract-loan-origination/dependencies.gradle +++ b/fineract-loan-origination/dependencies.gradle @@ -33,7 +33,7 @@ dependencies { implementation(project(path: ':fineract-working-capital-loan')) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'jakarta.ws.rs:jakarta.ws.rs-api', 'org.glassfish.jersey.media:jersey-media-multipart', @@ -52,7 +52,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' @@ -76,5 +76,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-loan-origination/src/main/java/org/apache/fineract/portfolio/loanorigination/handler/UpdateLoanOriginatorCommandHandler.java b/fineract-loan-origination/src/main/java/org/apache/fineract/portfolio/loanorigination/handler/UpdateLoanOriginatorCommandHandler.java index 712e6f6743f..e9cb71a665d 100644 --- a/fineract-loan-origination/src/main/java/org/apache/fineract/portfolio/loanorigination/handler/UpdateLoanOriginatorCommandHandler.java +++ b/fineract-loan-origination/src/main/java/org/apache/fineract/portfolio/loanorigination/handler/UpdateLoanOriginatorCommandHandler.java @@ -1,4 +1,3 @@ - /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file diff --git a/fineract-loan/build.gradle b/fineract-loan/build.gradle index 38821283d46..f8c78931ab1 100644 --- a/fineract-loan/build.gradle +++ b/fineract-loan/build.gradle @@ -79,3 +79,14 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + implementation "org.apache.httpcomponents.client5:httpclient5:5.4.4" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-loan/dependencies.gradle b/fineract-loan/dependencies.gradle index f18abff8944..5eca0013e0f 100644 --- a/fineract-loan/dependencies.gradle +++ b/fineract-loan/dependencies.gradle @@ -32,7 +32,7 @@ dependencies { implementation(project(path: ':fineract-tax')) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'org.springframework.boot:spring-boot-starter-batch', 'org.springframework.batch:spring-batch-integration', @@ -54,7 +54,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', 'org.apache.commons:commons-collections4' @@ -85,5 +85,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-loan/src/main/java/org/apache/fineract/cob/loan/ContextAwareTaskDecorator.java b/fineract-loan/src/main/java/org/apache/fineract/cob/loan/ContextAwareTaskDecorator.java index 8cde28bbf33..e794d482019 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/cob/loan/ContextAwareTaskDecorator.java +++ b/fineract-loan/src/main/java/org/apache/fineract/cob/loan/ContextAwareTaskDecorator.java @@ -21,8 +21,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.core.domain.FineractContext; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; +import org.jspecify.annotations.NonNull; import org.springframework.core.task.TaskDecorator; -import org.springframework.lang.NonNull; /** * Task decorator to ensure proper thread context propagation and cleanup diff --git a/fineract-loan/src/main/java/org/apache/fineract/infrastructure/core/exception/LoanIdsHardLockedExceptionMapper.java b/fineract-loan/src/main/java/org/apache/fineract/infrastructure/core/exception/LoanIdsHardLockedExceptionMapper.java index 23188bce173..ca49f82487b 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/infrastructure/core/exception/LoanIdsHardLockedExceptionMapper.java +++ b/fineract-loan/src/main/java/org/apache/fineract/infrastructure/core/exception/LoanIdsHardLockedExceptionMapper.java @@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse; import org.apache.fineract.infrastructure.core.exceptionmapper.FineractExceptionMapper; import org.apache.fineract.infrastructure.jobs.exception.LoanIdsHardLockedException; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/api/data/DelinquencyMinimumPaymentPeriodAndRuleResponse.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/api/data/DelinquencyMinimumPaymentPeriodAndRuleResponse.java index 9f64de7918f..5b11051bcbb 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/api/data/DelinquencyMinimumPaymentPeriodAndRuleResponse.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/api/data/DelinquencyMinimumPaymentPeriodAndRuleResponse.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.delinquency.api.data; import java.math.BigDecimal; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/data/DelinquencyMinimumPaymentPeriodAndRuleData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/data/DelinquencyMinimumPaymentPeriodAndRuleData.java index f00ae095b0d..2d2d395ecef 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/data/DelinquencyMinimumPaymentPeriodAndRuleData.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/data/DelinquencyMinimumPaymentPeriodAndRuleData.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.delinquency.data; import java.math.BigDecimal; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyMinimumPaymentPeriodAndRuleRepository.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyMinimumPaymentPeriodAndRuleRepository.java index f84604c43a4..19efdafe49e 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyMinimumPaymentPeriodAndRuleRepository.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyMinimumPaymentPeriodAndRuleRepository.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.delinquency.domain; import java.util.Optional; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/mapper/DelinquencyMinimumPaymentPeriodAndRuleMapper.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/mapper/DelinquencyMinimumPaymentPeriodAndRuleMapper.java index b0fc8886e96..fc505fe5b38 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/mapper/DelinquencyMinimumPaymentPeriodAndRuleMapper.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/mapper/DelinquencyMinimumPaymentPeriodAndRuleMapper.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.delinquency.mapper; import org.apache.fineract.infrastructure.core.config.MapstructMapperConfig; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/service/DelinquencyReadPlatformService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/service/DelinquencyReadPlatformService.java index bad79f2e7b3..61a28853aa5 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/service/DelinquencyReadPlatformService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/service/DelinquencyReadPlatformService.java @@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction; import org.apache.fineract.portfolio.loanaccount.data.CollectionData; import org.apache.fineract.portfolio.loanaccount.domain.Loan; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public interface DelinquencyReadPlatformService { diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/service/DelinquencyReadPlatformServiceImpl.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/service/DelinquencyReadPlatformServiceImpl.java index 54097e9d668..f85a1d47a44 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/service/DelinquencyReadPlatformServiceImpl.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/service/DelinquencyReadPlatformServiceImpl.java @@ -67,7 +67,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct; import org.apache.fineract.portfolio.loanproduct.exception.LoanProductGeneralRuleException; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/validator/DelinquencyActionParseAndValidator.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/validator/DelinquencyActionParseAndValidator.java index b3a3e0fec70..879296c2b4c 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/validator/DelinquencyActionParseAndValidator.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/validator/DelinquencyActionParseAndValidator.java @@ -39,7 +39,7 @@ import org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction; import org.apache.fineract.portfolio.delinquency.helper.DelinquencyEffectivePauseHelper; import org.apache.fineract.portfolio.loanaccount.domain.Loan; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Component; @RequiredArgsConstructor diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/interestpauses/data/InterestPauseRequestDto.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/interestpauses/data/InterestPauseRequestDto.java index 6763c2b8711..a00a15e79b8 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/interestpauses/data/InterestPauseRequestDto.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/interestpauses/data/InterestPauseRequestDto.java @@ -18,12 +18,12 @@ */ package org.apache.fineract.portfolio.interestpauses.data; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.json.JsonMapper; @Getter @AllArgsConstructor @@ -45,16 +45,16 @@ public class InterestPauseRequestDto { public String toJson() { try { - return new ObjectMapper().writeValueAsString(this); - } catch (JsonProcessingException e) { + return new JsonMapper().writeValueAsString(this); + } catch (JacksonException e) { throw new IllegalArgumentException("Error serializing request to JSON", e); } } public static InterestPauseRequestDto fromJson(String json) { try { - return new ObjectMapper().readValue(json, InterestPauseRequestDto.class); - } catch (JsonProcessingException e) { + return new JsonMapper().readValue(json, InterestPauseRequestDto.class); + } catch (JacksonException e) { throw new IllegalArgumentException("Error deserializing request from JSON", e); } } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GlimRepaymentTemplate.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GlimRepaymentTemplate.java index 7ff7cec23a4..bb57e855ead 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GlimRepaymentTemplate.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GlimRepaymentTemplate.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.data; import java.math.BigDecimal; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GroupLoanIndividualMonitoringAccountData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GroupLoanIndividualMonitoringAccountData.java index 02310091504..203f8b32984 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GroupLoanIndividualMonitoringAccountData.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GroupLoanIndividualMonitoringAccountData.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.data; import java.math.BigDecimal; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/TransactionPortionsForForeclosure.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/TransactionPortionsForForeclosure.java index 64d31f8b376..a80d0ee46df 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/TransactionPortionsForForeclosure.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/TransactionPortionsForForeclosure.java @@ -21,14 +21,6 @@ import java.math.BigDecimal; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; -public interface TransactionPortionsForForeclosure { - - LoanTransactionType getTransactionType(); - - BigDecimal getInterestPortion(); - - BigDecimal getFeeChargesPortion(); - - BigDecimal getPenaltyChargesPortion(); - +public record TransactionPortionsForForeclosure(LoanTransactionType transactionType, BigDecimal interestPortion, + BigDecimal feeChargesPortion, BigDecimal penaltyChargesPortion) { } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java index b5733b93cb7..0f4ef86c1dd 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.domain; import jakarta.persistence.Column; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java index b15f753eb16..a9728ac0267 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java @@ -83,7 +83,7 @@ import org.apache.fineract.portfolio.rate.domain.Rate; import org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks; import org.apache.fineract.useradministration.domain.AppUser; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; @Entity @Table(name = "m_loan", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_no" }, name = "loan_account_no_UNIQUE"), diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleProcessingWrapper.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleProcessingWrapper.java index a3972d84687..865fea3eced 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleProcessingWrapper.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleProcessingWrapper.java @@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; import org.apache.fineract.organisation.monetary.domain.Money; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; /** * A wrapper around loan schedule related data exposing needed behaviour by loan. diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelationTypeEnumConverter.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelationTypeEnumConverter.java index e90fe564a99..7d5928853b7 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelationTypeEnumConverter.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelationTypeEnumConverter.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.domain; import jakarta.persistence.AttributeConverter; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRepository.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRepository.java index ff2714aca5d..cfbb093be93 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRepository.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRepository.java @@ -151,11 +151,12 @@ AND lt.typeOf NOT IN ( List findReversedTransactionIdsByLoan(@Param("loan") Loan loan); @Query(""" - SELECT - lt.typeOf AS transactionType, - lt.interestPortion AS interestPortion, - lt.feeChargesPortion AS feeChargesPortion, - lt.penaltyChargesPortion AS penaltyChargesPortion + SELECT new org.apache.fineract.portfolio.loanaccount.data.TransactionPortionsForForeclosure( + lt.typeOf, + lt.interestPortion, + lt.feeChargesPortion, + lt.penaltyChargesPortion + ) FROM LoanTransaction lt WHERE lt.loan = :loan AND lt.reversed = false @@ -174,23 +175,19 @@ List findTransactionDataForForeclosureIncome( FROM LoanTransaction lt WHERE lt.loan = :loan AND lt.reversed = false - AND lt.typeOf IN :types AND lt.dateOf = :transactionDate """) - Optional findNonReversedByLoanAndTypesAndDate(@Param("loan") Loan loan, @Param("types") Set types, - @Param("transactionDate") LocalDate transactionDate); + List findNonReversedByLoanAndDate(@Param("loan") Loan loan, @Param("transactionDate") LocalDate transactionDate); @Query(""" SELECT lt FROM LoanTransaction lt WHERE lt.loan = :loan AND lt.reversed = false - AND lt.typeOf IN :types AND lt.dateOf > :transactionDate ORDER BY lt.dateOf, lt.createdDate, lt.id """) - List findNonReversedByLoanAndTypesAndAfterDate(@Param("loan") Loan loan, - @Param("types") Set types, @Param("transactionDate") LocalDate transactionDate); + List findNonReversedByLoanAndAfterDate(@Param("loan") Loan loan, @Param("transactionDate") LocalDate transactionDate); @Query(""" SELECT lt @@ -205,37 +202,56 @@ List findNonReversedByLoanAndTypeAndAfterDate(@Param("loan") Lo @Param("transactionDate") LocalDate transactionDate); @Query(""" - SELECT CASE WHEN COUNT(lt) > 0 THEN true ELSE false END + SELECT lt FROM LoanTransaction lt WHERE lt.loan = :loan AND lt.reversed = false - AND lt.typeOf IN :types - AND lt.dateOf >= :accrualDate + AND lt.id NOT IN :existingTransactionIds + AND lt.typeOf IN ( + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL, + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL_ADJUSTMENT + ) + ORDER BY lt.dateOf, lt.createdDate, lt.id """) - boolean existsNonReversedByLoanAndTypesAndOnOrAfterDate(@Param("loan") Loan loan, @Param("types") Set types, - @Param("accrualDate") LocalDate accrualDate); + List findNonReversedAccrualsByLoanAndNotInIds(@Param("loan") Loan loan, + @Param("existingTransactionIds") List existingTransactionIds); @Query(""" SELECT lt FROM LoanTransaction lt WHERE lt.loan = :loan AND lt.reversed = false - AND lt.typeOf IN :types - AND lt.id NOT IN :existingTransactionIds + AND lt.typeOf IN ( + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL, + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL_ADJUSTMENT + ) ORDER BY lt.dateOf, lt.createdDate, lt.id """) - List findNonReversedByLoanAndTypesAndNotInIds(@Param("loan") Loan loan, @Param("types") Set types, - @Param("existingTransactionIds") List existingTransactionIds); + List findNonReversedAccrualsByLoan(@Param("loan") Loan loan); @Query(""" - SELECT lt + SELECT MAX(lt.dateOf) FROM LoanTransaction lt + WHERE lt.loan = :loan + AND lt.reversed = false + AND lt.typeOf IN ( + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL, + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL_ADJUSTMENT + ) + """) + Optional findLastNonReversedAccrualTransactionDate(@Param("loan") Loan loan); + + @Query(""" + SELECT CASE WHEN COUNT(lt) > 0 THEN true ELSE false END FROM LoanTransaction lt WHERE lt.loan = :loan AND lt.reversed = false - AND lt.typeOf IN :types - ORDER BY lt.dateOf, lt.createdDate, lt.id + AND lt.typeOf IN ( + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL, + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL_ADJUSTMENT + ) + AND lt.dateOf >= :date """) - List findNonReversedByLoanAndTypes(@Param("loan") Loan loan, @Param("types") Set types); + boolean existsNonReversedAccrualOnOrAfterDate(@Param("loan") Loan loan, @Param("date") LocalDate date); @Query(""" SELECT lt @@ -253,11 +269,9 @@ List findNonReversedByLoanAndTypesAndNotInIds(@Param("loan") Lo WHERE lt.loan = :loan AND lt.reversed = false AND lt.dateOf >= :date - AND lt.typeOf IN :types ORDER BY lt.dateOf, lt.createdDate, lt.id """) - List findNonReversedByLoanAndTypesAndOnOrAfterDate(@Param("loan") Loan loan, - @Param("types") Set types, @Param("date") LocalDate date); + List findNonReversedByLoanAndOnOrAfterDate(@Param("loan") Loan loan, @Param("date") LocalDate date); @Query(""" SELECT new org.apache.fineract.portfolio.loanaccount.data.CumulativeIncomeFromIncomePosting( @@ -309,15 +323,6 @@ SELECT COALESCE(SUM(lt.unrecognizedIncomePortion), 0) """) BigDecimal findChargeUnrecognizedWaivedAmount(@Param("loanCharge") LoanCharge loanCharge, @Param("tillDate") LocalDate tillDate); - @Query(""" - SELECT MAX(lt.dateOf) FROM LoanTransaction lt - WHERE lt.loan = :loan - AND lt.reversed = false - AND lt.typeOf IN :types - """) - Optional findLastNonReversedTransactionDateByLoanAndTypes(@Param("loan") Loan loan, - @Param("types") Set types); - @Query(""" SELECT lt FROM LoanTransaction lt WHERE lt.loan = :loan diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java index f2e2f2be125..4d482db796e 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.guarantor.data; import java.math.BigDecimal; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/serialization/GuarantorCommandFromApiJsonDeserializer.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/serialization/GuarantorCommandFromApiJsonDeserializer.java index f14da974131..a3112db62f6 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/serialization/GuarantorCommandFromApiJsonDeserializer.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/serialization/GuarantorCommandFromApiJsonDeserializer.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.loanaccount.guarantor.GuarantorConstants.GuarantorJSONinputParams; import org.apache.fineract.portfolio.loanaccount.guarantor.command.GuarantorCommand; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -44,7 +43,6 @@ public final class GuarantorCommandFromApiJsonDeserializer extends AbstractFromA private final FromJsonHelper fromApiJsonHelper; - @Autowired public GuarantorCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMApplicationRejectionCommandHandler.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMApplicationRejectionCommandHandler.java index 391a81229fb..8ca95130e46 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMApplicationRejectionCommandHandler.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMApplicationRejectionCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMBulkRepaymentCommandHandler.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMBulkRepaymentCommandHandler.java index 3df1773170f..bcf44c36da0 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMBulkRepaymentCommandHandler.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMBulkRepaymentCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMLoanApplicationApprovalCommandHandler.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMLoanApplicationApprovalCommandHandler.java index c757595e6b2..60c86be2e0e 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMLoanApplicationApprovalCommandHandler.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMLoanApplicationApprovalCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GlimLoanApplicationDisburseCommandHandler.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GlimLoanApplicationDisburseCommandHandler.java index 3a3d5faaf1f..ab3a3ae5513 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GlimLoanApplicationDisburseCommandHandler.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GlimLoanApplicationDisburseCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanApplicationApproval.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanApplicationApproval.java index f16c0ba43b5..a4ad22d1847 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanApplicationApproval.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanApplicationApproval.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesConfig.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesConfig.java index 49a0d29af78..68ac302bf43 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesConfig.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesConfig.java @@ -21,11 +21,11 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.loanaccount.service.LoanAccrualsProcessingService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesTasklet.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesTasklet.java index 405b513522a..5a81d486019 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesTasklet.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesTasklet.java @@ -25,10 +25,10 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.jobs.exception.JobExecutionException; import org.apache.fineract.portfolio.loanaccount.service.LoanAccrualsProcessingService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/setloandelinquencytags/SetLoanDelinquencyTagsConfig.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/setloandelinquencytags/SetLoanDelinquencyTagsConfig.java index f15ead37acb..ee1cdbaed97 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/setloandelinquencytags/SetLoanDelinquencyTagsConfig.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/setloandelinquencytags/SetLoanDelinquencyTagsConfig.java @@ -25,11 +25,11 @@ import org.apache.fineract.portfolio.delinquency.service.DelinquencyWritePlatformService; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/setloandelinquencytags/SetLoanDelinquencyTagsTasklet.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/setloandelinquencytags/SetLoanDelinquencyTagsTasklet.java index ccf54f3dd00..2de29014357 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/setloandelinquencytags/SetLoanDelinquencyTagsTasklet.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/setloandelinquencytags/SetLoanDelinquencyTagsTasklet.java @@ -37,10 +37,10 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingConfig.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingConfig.java index 063285c1826..59d9ada6280 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingConfig.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingConfig.java @@ -20,11 +20,11 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingTasklet.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingTasklet.java index ce8fb3d88b5..718cd682720 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingTasklet.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingTasklet.java @@ -20,10 +20,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequestRepositoryWrapper.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequestRepositoryWrapper.java index b2e8cc78dcb..b1a4025b5ec 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequestRepositoryWrapper.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequestRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain; import org.apache.fineract.portfolio.loanaccount.rescheduleloan.exception.LoanRescheduleRequestNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,7 +27,6 @@ public class LoanRescheduleRequestRepositoryWrapper { private final LoanRescheduleRequestRepository loanRescheduleRequestRepository; - @Autowired public LoanRescheduleRequestRepositoryWrapper(final LoanRescheduleRequestRepository loanRescheduleRequestRepository) { this.loanRescheduleRequestRepository = loanRescheduleRequestRepository; } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformServiceImpl.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformServiceImpl.java index ce6c3e8b30d..1da17e35012 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformServiceImpl.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestReadPlatformServiceImpl.java @@ -39,7 +39,6 @@ import org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestStatusEnumData; import org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestTimelineData; import org.apache.fineract.portfolio.loanproduct.service.LoanEnumerations; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -53,7 +52,6 @@ public class LoanRescheduleRequestReadPlatformServiceImpl implements LoanResched private static final LoanRescheduleRequestRowMapper LOAN_RESCHEDULE_REQUEST_ROW_MAPPER = new LoanRescheduleRequestRowMapper(); private final CodeValueReadPlatformService codeValueReadPlatformService; - @Autowired public LoanRescheduleRequestReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate, LoanRepositoryWrapper loanRepositoryWrapper, final CodeValueReadPlatformService codeValueReadPlatformService) { this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanUpdateCommandFromApiJsonDeserializer.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanUpdateCommandFromApiJsonDeserializer.java index 5be2cd6bec4..2bbb0fcfb6e 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanUpdateCommandFromApiJsonDeserializer.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanUpdateCommandFromApiJsonDeserializer.java @@ -31,7 +31,6 @@ import org.apache.fineract.infrastructure.core.serialization.AbstractFromApiJsonDeserializer; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.loanaccount.command.LoanUpdateCommand; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -47,7 +46,6 @@ public final class LoanUpdateCommandFromApiJsonDeserializer extends AbstractFrom private final FromJsonHelper fromApiJsonHelper; - @Autowired public LoanUpdateCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/VariableLoanScheduleFromApiJsonValidator.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/VariableLoanScheduleFromApiJsonValidator.java index 56f79545164..ca0b94cf3e8 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/VariableLoanScheduleFromApiJsonValidator.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/VariableLoanScheduleFromApiJsonValidator.java @@ -41,7 +41,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.loanaccount.api.LoanApiConstants; import org.apache.fineract.portfolio.loanaccount.domain.Loan; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -62,7 +61,6 @@ public class VariableLoanScheduleFromApiJsonValidator { private final FromJsonHelper fromApiJsonHelper; - @Autowired public VariableLoanScheduleFromApiJsonValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformService.java index cf5960ea50b..90d9e910ec8 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.service; import java.util.Collection; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoWritePlatformService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoWritePlatformService.java index 8fa3e09b9a6..613db976e8c 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoWritePlatformService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoWritePlatformService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.service; import java.math.BigDecimal; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoWritePlatformServiceImpl.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoWritePlatformServiceImpl.java index b4329c588d1..42450f5689f 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoWritePlatformServiceImpl.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoWritePlatformServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.service; import java.math.BigDecimal; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualActivityProcessingService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualActivityProcessingService.java index aa4769f5f59..9ff430874b2 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualActivityProcessingService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualActivityProcessingService.java @@ -21,7 +21,7 @@ import java.time.LocalDate; import org.apache.fineract.portfolio.loanaccount.domain.ChangedTransactionDetail; import org.apache.fineract.portfolio.loanaccount.domain.Loan; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.transaction.annotation.Transactional; public interface LoanAccrualActivityProcessingService { diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualTransactionBusinessEventServiceImpl.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualTransactionBusinessEventServiceImpl.java index ada8264fb69..77322a0760f 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualTransactionBusinessEventServiceImpl.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualTransactionBusinessEventServiceImpl.java @@ -18,11 +18,7 @@ */ package org.apache.fineract.portfolio.loanaccount.service; -import static org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL; -import static org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL_ADJUSTMENT; - import java.util.List; -import java.util.Set; import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanAccrualAdjustmentTransactionBusinessEvent; import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanAccrualTransactionCreatedBusinessEvent; @@ -31,7 +27,6 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; -import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; @RequiredArgsConstructor public class LoanAccrualTransactionBusinessEventServiceImpl implements LoanAccrualTransactionBusinessEventService { @@ -41,10 +36,9 @@ public class LoanAccrualTransactionBusinessEventServiceImpl implements LoanAccru @Override public void raiseBusinessEventForAccrualTransactions(final Loan loan, final List existingTransactionIds) { - final Set accrualTypes = Set.of(ACCRUAL, ACCRUAL_ADJUSTMENT); final List accrualTransactions = existingTransactionIds.isEmpty() - ? loanTransactionRepository.findNonReversedByLoanAndTypes(loan, accrualTypes) - : loanTransactionRepository.findNonReversedByLoanAndTypesAndNotInIds(loan, accrualTypes, existingTransactionIds); + ? loanTransactionRepository.findNonReversedAccrualsByLoan(loan) + : loanTransactionRepository.findNonReversedAccrualsByLoanAndNotInIds(loan, existingTransactionIds); accrualTransactions.forEach(transaction -> { final LoanTransactionBusinessEvent businessEvent = transaction.isAccrual() diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingService.java index be7e05a4ae1..148dd95a594 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingService.java @@ -23,7 +23,7 @@ import org.apache.fineract.infrastructure.core.exception.MultiException; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public interface LoanAccrualsProcessingService { diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanBuyDownFeeAmortizationProcessingService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanBuyDownFeeAmortizationProcessingService.java index 56317052f49..67688d6d72b 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanBuyDownFeeAmortizationProcessingService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanBuyDownFeeAmortizationProcessingService.java @@ -21,7 +21,7 @@ import java.time.LocalDate; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public interface LoanBuyDownFeeAmortizationProcessingService { diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingService.java index 4ba74b279d5..46ea70207a0 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingService.java @@ -21,7 +21,7 @@ import java.time.LocalDate; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public interface LoanCapitalizedIncomeAmortizationProcessingService { diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformService.java index f372b117b30..bf488ebaae7 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformService.java @@ -42,8 +42,8 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleData; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.OverdueLoanScheduleData; import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleType; +import org.jspecify.annotations.NonNull; import org.springframework.data.domain.Pageable; -import org.springframework.lang.NonNull; public interface LoanReadPlatformService { diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRepository.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRepository.java index d7fb487ec94..c450756e36a 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRepository.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRepository.java @@ -23,11 +23,11 @@ import java.util.List; import org.apache.fineract.infrastructure.core.domain.ExternalId; import org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket; +import org.jspecify.annotations.NonNull; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import org.springframework.lang.NonNull; public interface LoanProductRepository extends JpaRepository, JpaSpecificationExecutor { diff --git a/fineract-loan/src/test/java/org/apache/fineract/infrastructure/core/exception/LinkedAccountRequiredExceptionMapperTest.java b/fineract-loan/src/test/java/org/apache/fineract/infrastructure/core/exception/LinkedAccountRequiredExceptionMapperTest.java index 1cc2f473642..2bdac0cf426 100644 --- a/fineract-loan/src/test/java/org/apache/fineract/infrastructure/core/exception/LinkedAccountRequiredExceptionMapperTest.java +++ b/fineract-loan/src/test/java/org/apache/fineract/infrastructure/core/exception/LinkedAccountRequiredExceptionMapperTest.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.infrastructure.core.exception; -import static org.apache.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.hc.core5.http.HttpStatus.SC_FORBIDDEN; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; diff --git a/fineract-loan/src/test/java/org/apache/fineract/infrastructure/core/exception/MultiDisbursementDataRequiredExceptionMapperTest.java b/fineract-loan/src/test/java/org/apache/fineract/infrastructure/core/exception/MultiDisbursementDataRequiredExceptionMapperTest.java index 75d15c2d26d..b8b5c0ddbd4 100644 --- a/fineract-loan/src/test/java/org/apache/fineract/infrastructure/core/exception/MultiDisbursementDataRequiredExceptionMapperTest.java +++ b/fineract-loan/src/test/java/org/apache/fineract/infrastructure/core/exception/MultiDisbursementDataRequiredExceptionMapperTest.java @@ -18,7 +18,7 @@ */ package org.apache.fineract.infrastructure.core.exception; -import static org.apache.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.hc.core5.http.HttpStatus.SC_FORBIDDEN; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; diff --git a/fineract-progressive-loan-embeddable-schedule-generator/build.gradle b/fineract-progressive-loan-embeddable-schedule-generator/build.gradle index b150208eb21..5751593ac33 100644 --- a/fineract-progressive-loan-embeddable-schedule-generator/build.gradle +++ b/fineract-progressive-loan-embeddable-schedule-generator/build.gradle @@ -39,3 +39,12 @@ tasks.named('shadowJar', ShadowJar) { exclude("*.xml") } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-progressive-loan-embeddable-schedule-generator/misc/Main.java b/fineract-progressive-loan-embeddable-schedule-generator/misc/Main.java index e3fd40de21c..c94c959b18b 100644 --- a/fineract-progressive-loan-embeddable-schedule-generator/misc/Main.java +++ b/fineract-progressive-loan-embeddable-schedule-generator/misc/Main.java @@ -1,3 +1,4 @@ + /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -16,10 +17,14 @@ * specific language governing permissions and limitations * under the License. */ +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.time.LocalDate; import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.portfolio.common.domain.DaysInMonthType; -import org.apache.fineract.portfolio.common.domain.DaysInYearType; import org.apache.fineract.portfolio.common.domain.DaysInYearCustomStrategyType; +import org.apache.fineract.portfolio.common.domain.DaysInYearType; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanSchedulePlan; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanSchedulePlanDisbursementPeriod; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanSchedulePlanDownPaymentPeriod; @@ -29,15 +34,11 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleModelData; import org.apache.fineract.portfolio.loanproduct.domain.InterestMethod; -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; -import java.time.LocalDate; - /* * NOTE: This file used by a CI job to test Progressive Loan Embedded Jar compiled successfully and runs smoothly. */ public class Main { + public static void main(String[] args) throws InterruptedException { MathContext mc = new MathContext(12, RoundingMode.HALF_UP); EmbeddableProgressiveLoanScheduleGenerator calculator = new EmbeddableProgressiveLoanScheduleGenerator(); @@ -62,7 +63,10 @@ public static void main(String[] args) throws InterruptedException { final InterestMethod interestMethod = InterestMethod.DECLINING_BALANCE; final boolean allowPartialPeriodInterestCalculation = true; - var config = new LoanRepaymentScheduleModelData(startDate, currency, disbursedAmount, disbursementDate, noRepayments, repaymentFrequency, repaymentFrequencyType, annualNominalInterestRate, isDownPaymentEnabled, daysInMonthType, daysInYearType, downPaymentPercentage, installmentAmountInMultiplesOf, fixedLength, interestRecognitionOnDisbursementDate, dasInYearCustomStrategy, interestMethod, allowPartialPeriodInterestCalculation, false); + var config = new LoanRepaymentScheduleModelData(startDate, currency, disbursedAmount, disbursementDate, noRepayments, + repaymentFrequency, repaymentFrequencyType, annualNominalInterestRate, isDownPaymentEnabled, daysInMonthType, + daysInYearType, downPaymentPercentage, installmentAmountInMultiplesOf, fixedLength, interestRecognitionOnDisbursementDate, + dasInYearCustomStrategy, interestMethod, allowPartialPeriodInterestCalculation, false); final LoanSchedulePlan plan = calculator.generate(mc, config); printPlan(plan); @@ -70,7 +74,8 @@ public static void main(String[] args) throws InterruptedException { static void printPlan(final LoanSchedulePlan plan) throws InterruptedException { System.out.println("#------ Loan Schedule -----------------#"); - System.out.printf(" Number of Periods: %d%n", plan.getPeriods().stream().filter(period -> !(period instanceof LoanSchedulePlanDisbursementPeriod)).count()); + System.out.printf(" Number of Periods: %d%n", + plan.getPeriods().stream().filter(period -> !(period instanceof LoanSchedulePlanDisbursementPeriod)).count()); System.out.printf(" Loan Term in Days: %d%n", plan.getLoanTermInDays()); System.out.printf(" Total Disbursed Amount: %s%n", plan.getTotalDisbursedAmount()); System.out.printf(" Total Interest Amount: %s%n", plan.getTotalInterestAmount()); @@ -80,10 +85,18 @@ static void printPlan(final LoanSchedulePlan plan) throws InterruptedException { for (LoanSchedulePlanPeriod period : plan.getPeriods()) { if (period instanceof LoanSchedulePlanDisbursementPeriod dp) { System.out.printf(" Disbursement - Date: %s, Amount: %s%n", dp.periodDueDate(), dp.getPrincipalAmount()); - } if (period instanceof LoanSchedulePlanDownPaymentPeriod rp) { - System.out.printf(" Down payment Period: #%d, Due Date: %s, Balance: %s, Principal: %s, Total: %s, Total Outstanding Balance: %s%n", rp.periodNumber(), rp.periodDueDate(), rp.getOutstandingLoanBalance(), rp.getPrincipalAmount(), rp.getTotalDueAmount(), rp.getTotalOutstandingLoanBalance()); - } if (period instanceof LoanSchedulePlanRepaymentPeriod rp) { - System.out.printf(" Repayment Period: #%d, Due Date: %s, Balance: %s, Principal: %s, Interest: %s, Total: %s, Total Outstanding Balance: %s%n", rp.periodNumber(), rp.periodDueDate(), rp.getOutstandingLoanBalance(), rp.getPrincipalAmount(), rp.getInterestAmount(), rp.getTotalDueAmount(), rp.getTotalOutstandingLoanBalance()); + } + if (period instanceof LoanSchedulePlanDownPaymentPeriod rp) { + System.out.printf( + " Down payment Period: #%d, Due Date: %s, Balance: %s, Principal: %s, Total: %s, Total Outstanding Balance: %s%n", + rp.periodNumber(), rp.periodDueDate(), rp.getOutstandingLoanBalance(), rp.getPrincipalAmount(), + rp.getTotalDueAmount(), rp.getTotalOutstandingLoanBalance()); + } + if (period instanceof LoanSchedulePlanRepaymentPeriod rp) { + System.out.printf( + " Repayment Period: #%d, Due Date: %s, Balance: %s, Principal: %s, Interest: %s, Total: %s, Total Outstanding Balance: %s%n", + rp.periodNumber(), rp.periodDueDate(), rp.getOutstandingLoanBalance(), rp.getPrincipalAmount(), + rp.getInterestAmount(), rp.getTotalDueAmount(), rp.getTotalOutstandingLoanBalance()); } } } diff --git a/fineract-progressive-loan/build.gradle b/fineract-progressive-loan/build.gradle index 58969916df0..1b203564130 100644 --- a/fineract-progressive-loan/build.gradle +++ b/fineract-progressive-loan/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-progressive-loan/dependencies.gradle b/fineract-progressive-loan/dependencies.gradle index d98329ad42c..3e828f1c9ff 100644 --- a/fineract-progressive-loan/dependencies.gradle +++ b/fineract-progressive-loan/dependencies.gradle @@ -34,7 +34,7 @@ dependencies { ) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'jakarta.ws.rs:jakarta.ws.rs-api', 'org.glassfish.jersey.media:jersey-media-multipart', @@ -53,7 +53,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' compileOnly 'org.projectlombok:lombok' @@ -76,5 +76,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/ChangeOperation.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/ChangeOperation.java index 9042dfec10d..2abc412fdfc 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/ChangeOperation.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/ChangeOperation.java @@ -27,7 +27,7 @@ import org.apache.fineract.portfolio.loanaccount.data.LoanTermVariationsData; import org.apache.fineract.portfolio.loanaccount.domain.LoanCharge; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; @Getter public class ChangeOperation implements Comparable { diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ProgressiveLoanInterestScheduleModelParserServiceGsonImpl.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ProgressiveLoanInterestScheduleModelParserServiceGsonImpl.java index 75711508ea0..2514c193cee 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ProgressiveLoanInterestScheduleModelParserServiceGsonImpl.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ProgressiveLoanInterestScheduleModelParserServiceGsonImpl.java @@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanproduct.calc.data.ProgressiveLoanInterestScheduleModel; import org.apache.fineract.portfolio.loanproduct.calc.data.RepaymentPeriod; import org.apache.fineract.portfolio.loanproduct.domain.ILoanConfigurationDetails; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; @Slf4j @RequiredArgsConstructor diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/InterestRate.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/InterestRate.java index 382aacc1878..f0c8573d8e5 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/InterestRate.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/InterestRate.java @@ -20,7 +20,7 @@ import java.math.BigDecimal; import java.time.LocalDate; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public record InterestRate(// LocalDate effectiveFrom, // diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsJsonParser.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsJsonParser.java index 035939afd7b..38ecedfd3fc 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsJsonParser.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsJsonParser.java @@ -27,7 +27,7 @@ import lombok.AllArgsConstructor; import org.apache.commons.lang3.tuple.Pair; import org.apache.fineract.infrastructure.core.api.JsonCommand; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Service; @Service diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsJsonParser.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsJsonParser.java index bab9a2e327f..e6abd0618c9 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsJsonParser.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsJsonParser.java @@ -27,7 +27,7 @@ import lombok.AllArgsConstructor; import org.apache.commons.lang3.tuple.Pair; import org.apache.fineract.infrastructure.core.api.JsonCommand; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Service; @Service diff --git a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsJsonParserTest.java b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsJsonParserTest.java index 420188ef4b8..b5a6acd89fa 100644 --- a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsJsonParserTest.java +++ b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsJsonParserTest.java @@ -24,8 +24,6 @@ import static org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationType.IN_ADVANCE_PENALTY; import static org.mockito.Mockito.times; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.JsonParser; import java.util.ArrayList; import java.util.Arrays; @@ -37,6 +35,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -44,7 +43,9 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.lang.NonNull; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; @ExtendWith(MockitoExtension.class) class AdvancedPaymentAllocationsJsonParserTest { @@ -58,7 +59,7 @@ class AdvancedPaymentAllocationsJsonParserTest { private FromJsonHelper fromJsonHelper = new FromJsonHelper(); @Test - public void testEmptyJson() throws JsonProcessingException { + public void testEmptyJson() throws JacksonException { Map map = new HashMap<>(); JsonCommand command = createJsonCommand(map); @@ -72,7 +73,7 @@ public void testEmptyJson() throws JsonProcessingException { } @Test - public void testNullAllocationRuleJson() throws JsonProcessingException { + public void testNullAllocationRuleJson() throws JacksonException { Map map = new HashMap<>(); JsonCommand command = createJsonCommand(map); @@ -86,7 +87,7 @@ public void testNullAllocationRuleJson() throws JsonProcessingException { } @Test - public void testParseSinglePaymentAllocation() throws JsonProcessingException { + public void testParseSinglePaymentAllocation() throws JacksonException { // given Map map = new HashMap<>(); List> paymentAllocations = new ArrayList<>(); @@ -115,7 +116,7 @@ public void testParseSinglePaymentAllocation() throws JsonProcessingException { } @Test - public void testInvalidTransactionTypeAndFutureAllocation() throws JsonProcessingException { + public void testInvalidTransactionTypeAndFutureAllocation() throws JacksonException { // given Map map = new HashMap<>(); List> paymentAllocations = new ArrayList<>(); @@ -144,7 +145,7 @@ public void testInvalidTransactionTypeAndFutureAllocation() throws JsonProcessin } @Test - public void testInvalidAndNullAllocationRules() throws JsonProcessingException { + public void testInvalidAndNullAllocationRules() throws JacksonException { // given Map map = new HashMap<>(); List> paymentAllocations = new ArrayList<>(); @@ -174,7 +175,7 @@ public void testInvalidAndNullAllocationRules() throws JsonProcessingException { } @Test - public void testNullTransactionTypeAndFutureAllocation() throws JsonProcessingException { + public void testNullTransactionTypeAndFutureAllocation() throws JacksonException { // given Map map = new HashMap<>(); List> paymentAllocations = new ArrayList<>(); @@ -224,8 +225,8 @@ private static List> createPaymentAllocatio } @NonNull - private JsonCommand createJsonCommand(Map jsonMap) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); + private JsonCommand createJsonCommand(Map jsonMap) throws JacksonException { + ObjectMapper objectMapper = new JsonMapper(); String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonMap); return JsonCommand.from(json, JsonParser.parseString(json), fromJsonHelper, null, 1L, 2L, 3L, 4L, null, null, null, null, null, null, null, null, null); diff --git a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsValidatorTest.java b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsValidatorTest.java index c40689014cc..b14ffde914c 100644 --- a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsValidatorTest.java +++ b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/AdvancedPaymentAllocationsValidatorTest.java @@ -30,10 +30,10 @@ import java.util.List; import org.apache.commons.lang3.tuple.Pair; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; +import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.function.Executable; -import org.springframework.lang.NonNull; class AdvancedPaymentAllocationsValidatorTest { diff --git a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsJsonParserTest.java b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsJsonParserTest.java index 129b81cf68b..6d690a8b311 100644 --- a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsJsonParserTest.java +++ b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsJsonParserTest.java @@ -21,8 +21,6 @@ import static org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationsValidator.ADVANCED_PAYMENT_ALLOCATION_STRATEGY; import static org.mockito.Mockito.times; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.JsonParser; import java.util.ArrayList; import java.util.EnumSet; @@ -33,6 +31,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -40,7 +39,9 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.lang.NonNull; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; @ExtendWith(MockitoExtension.class) public class CreditAllocationsJsonParserTest { @@ -54,7 +55,7 @@ public class CreditAllocationsJsonParserTest { private FromJsonHelper fromJsonHelper = new FromJsonHelper(); @Test - public void testEmptyJson() throws JsonProcessingException { + public void testEmptyJson() throws JacksonException { Map map = new HashMap<>(); JsonCommand command = createJsonCommand(map); @@ -68,7 +69,7 @@ public void testEmptyJson() throws JsonProcessingException { } @Test - public void testParseSingleChargebackAllocation() throws JsonProcessingException { + public void testParseSingleChargebackAllocation() throws JacksonException { // given Map map = new HashMap<>(); List> creditAllocations = new ArrayList<>(); @@ -112,8 +113,8 @@ public Map createCreditAllocationEntry(String transactionType, L } @NonNull - private JsonCommand createJsonCommand(Map jsonMap) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); + private JsonCommand createJsonCommand(Map jsonMap) throws JacksonException { + ObjectMapper objectMapper = new JsonMapper(); String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonMap); return JsonCommand.from(json, JsonParser.parseString(json), fromJsonHelper, null, 1L, 2L, 3L, 4L, null, null, null, null, null, null, null, null, null); diff --git a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsValidatorTest.java b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsValidatorTest.java index d6c264afc2e..011bba58242 100644 --- a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsValidatorTest.java +++ b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/domain/CreditAllocationsValidatorTest.java @@ -28,10 +28,10 @@ import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.lang3.tuple.Pair; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; +import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.function.Executable; -import org.springframework.lang.NonNull; public class CreditAllocationsValidatorTest { diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle index 9043db3e9fe..0531674c170 100644 --- a/fineract-provider/build.gradle +++ b/fineract-provider/build.gradle @@ -121,6 +121,8 @@ configurations { } dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + implementation project(':fineract-core') testImplementation 'org.springframework.boot:spring-boot-starter-test' // Spins up a real PostgreSQL for self-contained persistence tests (e.g. JpaJdbcSameTransactionVisibilityTest) that @@ -129,18 +131,19 @@ dependencies { testImplementation 'org.testcontainers:junit-jupiter:1.20.4' testImplementation 'org.mockito:mockito-core' testImplementation 'org.mockito:mockito-junit-jupiter' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.14.4' - testImplementation 'org.junit.jupiter:junit-jupiter-params:5.14.4' - testImplementation 'org.junit.platform:junit-platform-commons:1.14.4' - testImplementation 'org.junit.platform:junit-platform-engine:1.14.4' - testImplementation 'org.junit.platform:junit-platform-launcher:1.14.4' - testImplementation 'org.junit.platform:junit-platform-suite-api:1.14.4' - testImplementation 'org.junit.platform:junit-platform-suite-commons:1.14.4' - testImplementation 'org.junit.platform:junit-platform-suite-engine:1.14.4' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.14.4' - testRuntimeOnly 'org.junit.platform:junit-platform-suite:1.14.4' + testImplementation 'org.junit.jupiter:junit-jupiter-api' + testImplementation 'org.junit.jupiter:junit-jupiter-params' + testImplementation 'org.junit.platform:junit-platform-commons' + testImplementation 'org.junit.platform:junit-platform-engine' + testImplementation 'org.junit.platform:junit-platform-launcher' + testImplementation 'org.junit.platform:junit-platform-suite-api' + testImplementation 'org.junit.platform:junit-platform-suite-engine' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly 'org.junit.platform:junit-platform-suite' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.liquibase:liquibase-core' + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" + implementation 'org.springframework.boot:spring-boot-starter-liquibase' + implementation "org.springframework.boot:spring-boot-starter-restclient:4.0.7" } apply from: 'dependencies.gradle' @@ -194,8 +197,12 @@ configurations { } } dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + driver 'org.mariadb.jdbc:mariadb-java-client' driver 'org.postgresql:postgresql' + implementation "org.springframework.boot:spring-boot-starter-restclient:4.0.7" + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" driver 'com.mysql:mysql-connector-j' bootRunDriver 'org.mariadb.jdbc:mariadb-java-client' @@ -285,10 +292,9 @@ tasks.named('sourcesJar') { } } -tasks.named('licenseMain') { +tasks.named('spotlessJavaCheck') { dependsOn(processResources, generateGitProperties) mustRunAfter(processResources, generateGitProperties) - source = sourceSets.main.java.srcDirs } bootRun { @@ -451,3 +457,6 @@ tasks.register('devRun', org.springframework.boot.gradle.tasks.run.BootRun) { println "Running in development mode - quality checks are disabled" } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} diff --git a/fineract-provider/dependencies.gradle b/fineract-provider/dependencies.gradle index 545690cd921..0a4e8b8b6e2 100644 --- a/fineract-provider/dependencies.gradle +++ b/fineract-provider/dependencies.gradle @@ -114,22 +114,24 @@ dependencies { 'io.swagger.core.v3:swagger-annotations-jakarta', 'com.squareup.retrofit2:converter-gson', - 'com.sun.activation:jakarta.activation', - 'com.sun.mail:jakarta.mail', + 'jakarta.mail:jakarta.mail-api', 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.reflections:reflections', ) implementation 'software.amazon.msk:aws-msk-iam-auth' + runtimeOnly 'org.eclipse.angus:angus-mail' + implementation 'io.swagger.core.v3:swagger-jaxrs2-jakarta' implementation ('org.apache.commons:commons-email') { exclude group: 'com.sun.mail', module: 'javax.mail' + exclude group: 'com.sun.mail', module: 'jakarta.mail' exclude group: 'javax.activation', module: 'activation' } @@ -138,6 +140,7 @@ dependencies { exclude group: 'org.glassfish.hk2', module: 'hk2-runlevel' exclude group: 'org.hibernate.validator', module: 'hibernate-validator' exclude group: 'jakarta.activation', module: 'jakarta.activation-api' + exclude group: 'org.glassfish.jersey.media', module: 'jersey-media-json-jackson' } implementation('org.dom4j:dom4j') { exclude group: 'javax.xml.bind' @@ -217,6 +220,7 @@ dependencies { 'io.cucumber:cucumber-java', 'io.cucumber:cucumber-java8', 'io.cucumber:cucumber-junit-platform-engine', + 'org.springframework.boot:spring-boot-gson', ) testImplementation ('org.springframework.boot:spring-boot-starter-test') { exclude group: 'com.jayway.jsonpath', module: 'json-path' diff --git a/fineract-provider/src/main/java/org/apache/fineract/ServerApplication.java b/fineract-provider/src/main/java/org/apache/fineract/ServerApplication.java index f95ad1c23c5..96fc772a522 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/ServerApplication.java +++ b/fineract-provider/src/main/java/org/apache/fineract/ServerApplication.java @@ -21,8 +21,8 @@ import java.io.IOException; import org.apache.fineract.infrastructure.core.boot.FineractLiquibaseOnlyApplicationConfiguration; import org.apache.fineract.infrastructure.core.boot.FineractWebApplicationConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.jdbc.autoconfigure.DataSourceProperties; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.Import; diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateConfig.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateConfig.java index 030138be2af..b24e018f54b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateConfig.java @@ -20,11 +20,11 @@ import org.apache.fineract.accounting.journalentry.service.JournalEntryRunningBalanceUpdateService; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateTasklet.java index b5708c07363..e78cf8e2b48 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateTasklet.java @@ -21,10 +21,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.accounting.journalentry.service.JournalEntryRunningBalanceUpdateService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java index 5289f1be722..0d7e6d2466f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java @@ -176,7 +176,7 @@ public CommandProcessingResult createJournalEntry(final JsonCommand command) { "GL Journal Entry with Asset Externalization not enabled"); } final Optional optExternalAssetOwner = externalAssetOwnerRepository.findByExternalId(externalId); - if (!optExternalAssetOwner.isPresent()) { + if (optExternalAssetOwner.isEmpty()) { throw new ExternalAssetOwnerNotFoundException(externalId); } externalAssetOwner = optExternalAssetOwner.get(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocDataValidator.java index 84a3e83bb16..da51d51b533 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocDataValidator.java @@ -34,7 +34,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -55,7 +54,6 @@ public final class AdHocDataValidator { private final FromJsonHelper fromApiJsonHelper; - @Autowired public AdHocDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ActivateClientCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ActivateClientCommandStrategy.java index 70c8bd08853..be8f45c7fd3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ActivateClientCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ActivateClientCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.client.api.ClientsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustChargeByChargeExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustChargeByChargeExternalIdCommandStrategy.java index 02d81563410..94af8ba848a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustChargeByChargeExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustChargeByChargeExternalIdCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustChargeCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustChargeCommandStrategy.java index 8d2e42b93a2..b1d906aa66c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustChargeCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustChargeCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionByExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionByExternalIdCommandStrategy.java index e66d59d2d75..269ba6fd616 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionByExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionByExternalIdCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionCommandStrategy.java index b2e1447c161..b74b18b4626 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplyLoanCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplyLoanCommandStrategy.java index 70f4d696c37..298555c8db9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplyLoanCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplyLoanCommandStrategy.java @@ -24,7 +24,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplySavingsCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplySavingsCommandStrategy.java index a8676ec4214..2528801b23f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplySavingsCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApplySavingsCommandStrategy.java @@ -24,7 +24,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanCommandStrategy.java index 6ffc0fed44f..9dbc19e7c43 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanRescheduleCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanRescheduleCommandStrategy.java index 9ddcc2f42c5..3553485b91c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanRescheduleCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ApproveLoanRescheduleCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; @Component diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesByLoanExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesByLoanExternalIdCommandStrategy.java index da2f3dd6622..bc4cb5f96f8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesByLoanExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesByLoanExternalIdCommandStrategy.java @@ -31,7 +31,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesCommandStrategy.java index d7a79c9d816..1c579b1253d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CollectChargesCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateAccountTransferCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateAccountTransferCommandStrategy.java index 42143db0ee1..56af29909f0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateAccountTransferCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateAccountTransferCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeByLoanExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeByLoanExternalIdCommandStrategy.java index d93eaf910fb..78b6770ced2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeByLoanExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeByLoanExternalIdCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeCommandStrategy.java index 365f3798dd1..20c2d16f071 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateChargeCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateClientCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateClientCommandStrategy.java index 78f12821025..bf1c9a96986 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateClientCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateClientCommandStrategy.java @@ -24,7 +24,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.client.api.ClientsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateDatatableEntryCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateDatatableEntryCommandStrategy.java index b37c7d749b0..e9dc764521b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateDatatableEntryCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateDatatableEntryCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanInterestPauseByExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanInterestPauseByExternalIdCommandStrategy.java index 7c2e225e71a..f08c84a3158 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanInterestPauseByExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanInterestPauseByExternalIdCommandStrategy.java @@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource; import org.apache.fineract.portfolio.interestpauses.data.InterestPauseRequestDto; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanInterestPauseByLoanIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanInterestPauseByLoanIdCommandStrategy.java index b66dffcd5bd..e85be922c3c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanInterestPauseByLoanIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanInterestPauseByLoanIdCommandStrategy.java @@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource; import org.apache.fineract.portfolio.interestpauses.data.InterestPauseRequestDto; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategy.java index ab559421141..704e94a09ff 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategy.java @@ -24,7 +24,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateSavingsAccountChargeCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateSavingsAccountChargeCommandStrategy.java index fc8b49170d0..0fefc605875 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateSavingsAccountChargeCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateSavingsAccountChargeCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateTransactionByLoanExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateTransactionByLoanExternalIdCommandStrategy.java index 9fa511bafd2..5797c999a00 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateTransactionByLoanExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateTransactionByLoanExternalIdCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategy.java index 8a085612dbe..f24a2e1e70d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DeleteDatatableEntryOneToManyCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DeleteDatatableEntryOneToManyCommandStrategy.java index 9b0a504b327..9017d9c79c1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DeleteDatatableEntryOneToManyCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DeleteDatatableEntryOneToManyCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DeleteDatatableEntryOneToOneCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DeleteDatatableEntryOneToOneCommandStrategy.java index 8a43fd6bf40..02f60a6c753 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DeleteDatatableEntryOneToOneCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DeleteDatatableEntryOneToOneCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseLoanCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseLoanCommandStrategy.java index 86e4adc98e4..f866f670db2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseLoanCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseLoanCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseToSavingsCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseToSavingsCommandStrategy.java index a7c725c92a9..45b11758323 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseToSavingsCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/DisburseToSavingsCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetChargeByChargeExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetChargeByChargeExternalIdCommandStrategy.java index 8e46d7d36e4..814fb149d88 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetChargeByChargeExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetChargeByChargeExternalIdCommandStrategy.java @@ -32,7 +32,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetChargeByIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetChargeByIdCommandStrategy.java index 309fdf3e32a..d0f9848d99f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetChargeByIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetChargeByIdCommandStrategy.java @@ -32,7 +32,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdAndDataTableIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdAndDataTableIdCommandStrategy.java index 44817d1d341..cceef894e78 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdAndDataTableIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdAndDataTableIdCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategy.java index 9fe6cdd6ff4..a8110683441 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByQueryCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByQueryCommandStrategy.java index 4bb42c1e851..9f849d47929 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByQueryCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByQueryCommandStrategy.java @@ -31,7 +31,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanByExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanByExternalIdCommandStrategy.java index a211ab781d5..15c46291ffb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanByExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanByExternalIdCommandStrategy.java @@ -33,7 +33,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategy.java index a9173d18d4c..12f3a213b92 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanInterestPausesByExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanInterestPausesByExternalIdCommandStrategy.java index fabf42ab51e..0f7248ecd04 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanInterestPausesByExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanInterestPausesByExternalIdCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource; import org.apache.fineract.portfolio.interestpauses.data.InterestPauseResponseDto; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanInterestPausesByLoanIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanInterestPausesByLoanIdCommandStrategy.java index a96ce713145..6e7c92cdef5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanInterestPausesByLoanIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanInterestPausesByLoanIdCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource; import org.apache.fineract.portfolio.interestpauses.data.InterestPauseResponseDto; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByExternalIdCommandStrategy.java index 0d643198570..302c86c11fd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByExternalIdCommandStrategy.java @@ -33,7 +33,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByIdCommandStrategy.java index b31a2c040ce..0bfa916d9a4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByIdCommandStrategy.java @@ -33,7 +33,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanExternalIdCommandStrategy.java index eddb703f79b..808847675d2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanExternalIdCommandStrategy.java @@ -34,7 +34,7 @@ import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; import org.apache.fineract.portfolio.loanaccount.api.request.ReAgePreviewRequest; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleData; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanIdCommandStrategy.java index 01d1f7b344d..7fc32b65b03 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanIdCommandStrategy.java @@ -34,7 +34,7 @@ import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; import org.apache.fineract.portfolio.loanaccount.api.request.ReAgePreviewRequest; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleData; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetSavingsAccountByIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetSavingsAccountByIdCommandStrategy.java index c191feef76c..e286f241e8c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetSavingsAccountByIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetSavingsAccountByIdCommandStrategy.java @@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource; import org.apache.fineract.portfolio.savings.api.SavingsApiSetConstants; import org.apache.fineract.portfolio.savings.data.SavingsAccountData; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; @Component diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/LoanStateTransistionsByExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/LoanStateTransistionsByExternalIdCommandStrategy.java index ef2483073a2..c0cc666449b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/LoanStateTransistionsByExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/LoanStateTransistionsByExternalIdCommandStrategy.java @@ -31,7 +31,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationByExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationByExternalIdCommandStrategy.java index 246e8b29dd1..9a8da7dd5b2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationByExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationByExternalIdCommandStrategy.java @@ -31,7 +31,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationCommandStrategy.java index 40e6e09a4a8..2f69de737c9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/PaySavingsAccountChargeCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/PaySavingsAccountChargeCommandStrategy.java index 94a3ae8927d..846ae96474f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/PaySavingsAccountChargeCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/PaySavingsAccountChargeCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/RejectLoanRescheduleCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/RejectLoanRescheduleCommandStrategy.java index 6744d1c98dc..9a066dbfc53 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/RejectLoanRescheduleCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/RejectLoanRescheduleCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; @Component diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/SavingsAccountAdjustTransactionCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/SavingsAccountAdjustTransactionCommandStrategy.java index 3c62f14a127..f4f6dff47b8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/SavingsAccountAdjustTransactionCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/SavingsAccountAdjustTransactionCommandStrategy.java @@ -31,7 +31,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; @Component diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/SavingsAccountTransactionCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/SavingsAccountTransactionCommandStrategy.java index 5040ba10ff6..ab76eb21c69 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/SavingsAccountTransactionCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/SavingsAccountTransactionCommandStrategy.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; @Component diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateClientCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateClientCommandStrategy.java index b841820f789..6a3756093dc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateClientCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateClientCommandStrategy.java @@ -26,7 +26,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.client.api.ClientsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateDatatableEntryOneToManyCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateDatatableEntryOneToManyCommandStrategy.java index 63080d1aeba..87f868ecd05 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateDatatableEntryOneToManyCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateDatatableEntryOneToManyCommandStrategy.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateLoanInterestPauseByExternalIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateLoanInterestPauseByExternalIdCommandStrategy.java index 47daab06806..6721f31a426 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateLoanInterestPauseByExternalIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateLoanInterestPauseByExternalIdCommandStrategy.java @@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource; import org.apache.fineract.portfolio.interestpauses.data.InterestPauseRequestDto; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateLoanInterestPauseByLoanIdCommandStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateLoanInterestPauseByLoanIdCommandStrategy.java index 64f3f085058..46e55ee7b98 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateLoanInterestPauseByLoanIdCommandStrategy.java +++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/UpdateLoanInterestPauseByLoanIdCommandStrategy.java @@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource; import org.apache.fineract.portfolio.interestpauses.data.InterestPauseRequestDto; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/domain/LoanAccountLock.java b/fineract-provider/src/main/java/org/apache/fineract/cob/domain/LoanAccountLock.java index 41faf7ef1ea..57665ee02d7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/domain/LoanAccountLock.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/domain/LoanAccountLock.java @@ -20,6 +20,7 @@ import jakarta.persistence.Entity; import jakarta.persistence.Table; +import java.io.Serial; import java.time.LocalDate; import lombok.NoArgsConstructor; @@ -28,6 +29,7 @@ @NoArgsConstructor public class LoanAccountLock extends AccountLock { + @Serial private static final long serialVersionUID = 5267165818666471447L; public LoanAccountLock(Long loanId, LockOwner lockOwner, LocalDate lockPlacedOnCobBusinessDate) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemProcessor.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemProcessor.java index 8a5ae95ec44..ee1d6ebd5f7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemProcessor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemProcessor.java @@ -23,7 +23,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.service.ProgressiveLoanModelProcessingService; import org.apache.fineract.portfolio.loanproduct.calc.data.ProgressiveLoanInterestScheduleModel; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public abstract class AbstractLoanItemProcessor extends AbstractItemProcessor { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemReader.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemReader.java index c9ad1c5b44f..f363aef38fc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemReader.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemReader.java @@ -26,12 +26,12 @@ import org.apache.fineract.cob.exceptions.LockedReadException; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.portfolio.loanaccount.exception.LoanNotFoundException; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.annotation.AfterStep; -import org.springframework.batch.item.ItemReader; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ItemReader; import org.springframework.data.repository.CrudRepository; -import org.springframework.lang.NonNull; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemWriter.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemWriter.java index 49559e8d758..5862c213a04 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemWriter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/AbstractLoanItemWriter.java @@ -19,22 +19,26 @@ package org.apache.fineract.cob.loan; import java.util.List; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.cob.domain.LockOwner; import org.apache.fineract.cob.domain.LockingService; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.portfolio.loanaccount.domain.Loan; -import org.springframework.batch.item.Chunk; -import org.springframework.batch.item.data.RepositoryItemWriter; +import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; +import org.springframework.batch.infrastructure.item.Chunk; +import org.springframework.batch.infrastructure.item.data.RepositoryItemWriter; import org.springframework.lang.NonNull; @Slf4j -@RequiredArgsConstructor public abstract class AbstractLoanItemWriter extends RepositoryItemWriter { private final LockingService loanLockingService; + protected AbstractLoanItemWriter(final LoanRepository loanRepository, final LockingService loanLockingService) { + super(loanRepository); + this.loanLockingService = loanLockingService; + } + @Override public void write(@NonNull Chunk items) throws Exception { if (!items.isEmpty()) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemProcessor.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemProcessor.java index 4326d84d98e..7f5d384bbb7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemProcessor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemProcessor.java @@ -20,8 +20,8 @@ import org.apache.fineract.cob.COBBusinessStepService; import org.apache.fineract.portfolio.loanaccount.service.ProgressiveLoanModelProcessingService; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.annotation.BeforeStep; +import org.springframework.batch.core.step.StepExecution; public class InlineCOBLoanItemProcessor extends AbstractLoanItemProcessor { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemReader.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemReader.java index fc33af0c439..1ad2deb3023 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemReader.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemReader.java @@ -22,10 +22,10 @@ import java.util.concurrent.LinkedBlockingQueue; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; -import org.springframework.batch.core.StepExecution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.annotation.BeforeStep; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.lang.NonNull; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; public class InlineCOBLoanItemReader extends AbstractLoanItemReader { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemWriter.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemWriter.java index f87d6a88c7d..2b4616ff157 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemWriter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineCOBLoanItemWriter.java @@ -20,11 +20,12 @@ import org.apache.fineract.cob.domain.LockOwner; import org.apache.fineract.cob.domain.LockingService; +import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; public class InlineCOBLoanItemWriter extends AbstractLoanItemWriter { - public InlineCOBLoanItemWriter(LockingService loanLockingService) { - super(loanLockingService); + public InlineCOBLoanItemWriter(LoanRepository loanRepository, LockingService loanLockingService) { + super(loanRepository, loanLockingService); } @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineLoanCOBBuildExecutionContextTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineLoanCOBBuildExecutionContextTasklet.java index 3e7f7f2193f..e58c630f572 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineLoanCOBBuildExecutionContextTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/InlineLoanCOBBuildExecutionContextTasklet.java @@ -45,10 +45,10 @@ import org.apache.fineract.infrastructure.jobs.domain.CustomJobParameterRepository; import org.apache.fineract.infrastructure.springbatch.SpringBatchJobConstants; import org.apache.fineract.portfolio.loanaccount.exception.LoanNotFoundException; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBManagerConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBManagerConfiguration.java index 464ce7dedda..63809b024c9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBManagerConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBManagerConfiguration.java @@ -30,14 +30,14 @@ import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.springbatch.PropertyService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.configuration.annotation.StepScope; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.launch.JobOperator; -import org.springframework.batch.core.launch.support.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; +import org.springframework.batch.core.step.StepExecution; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.integration.config.annotation.EnableBatchIntegration; import org.springframework.batch.integration.partition.RemotePartitioningManagerStepBuilderFactory; diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBPartitioner.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBPartitioner.java index 9bd2559f348..bcc1ab557b9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBPartitioner.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBPartitioner.java @@ -26,11 +26,11 @@ import org.apache.fineract.cob.data.BusinessStepNameAndOrder; import org.apache.fineract.cob.service.RetrieveIdService; import org.apache.fineract.infrastructure.springbatch.PropertyService; -import org.springframework.batch.core.StepExecution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.launch.JobOperator; -import org.springframework.batch.core.partition.support.Partitioner; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.lang.NonNull; +import org.springframework.batch.core.partition.Partitioner; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; @Slf4j public class LoanCOBPartitioner extends CommonPartitioner implements Partitioner { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBWorkerConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBWorkerConfiguration.java index 5322acb10a5..e07fc9ee60e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBWorkerConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBWorkerConfiguration.java @@ -34,9 +34,9 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; import org.apache.fineract.portfolio.loanaccount.service.ProgressiveLoanModelProcessingService; import org.apache.fineract.useradministration.domain.AppUserRepositoryWrapper; -import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.StepScope; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.SimpleStepBuilder; import org.springframework.batch.integration.partition.RemotePartitioningWorkerStepBuilderFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -169,8 +169,7 @@ public LoanItemProcessor cobWorkerItemProcessor() { @Bean @StepScope public LoanItemWriter cobWorkerItemWriter() { - LoanItemWriter repositoryItemWriter = new LoanItemWriter(loanLockingService); - repositoryItemWriter.setRepository(loanRepository); + LoanItemWriter repositoryItemWriter = new LoanItemWriter(loanRepository, loanLockingService); return repositoryItemWriter; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanInlineCOBConfig.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanInlineCOBConfig.java index bcc459cae18..15174941cb1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanInlineCOBConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanInlineCOBConfig.java @@ -30,13 +30,13 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; import org.apache.fineract.portfolio.loanaccount.service.ProgressiveLoanModelProcessingService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.JobScope; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.listener.ExecutionContextPromotionListener; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.integration.config.annotation.EnableBatchIntegration; import org.springframework.beans.factory.annotation.Autowired; @@ -122,8 +122,7 @@ public Step inlineCOBResetContextStep() { @Bean public InlineCOBLoanItemWriter inlineCobWorkerItemWriter() { - InlineCOBLoanItemWriter repositoryItemWriter = new InlineCOBLoanItemWriter(loanLockingService); - repositoryItemWriter.setRepository(loanRepository); + InlineCOBLoanItemWriter repositoryItemWriter = new InlineCOBLoanItemWriter(loanRepository, loanLockingService); return repositoryItemWriter; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemProcessor.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemProcessor.java index 4e7c340d5c0..26fa4658271 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemProcessor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemProcessor.java @@ -20,8 +20,8 @@ import org.apache.fineract.cob.COBBusinessStepService; import org.apache.fineract.portfolio.loanaccount.service.ProgressiveLoanModelProcessingService; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.annotation.BeforeStep; +import org.springframework.batch.core.step.StepExecution; public class LoanItemProcessor extends AbstractLoanItemProcessor { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemReader.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemReader.java index 038c3b507b8..8a55e64daab 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemReader.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemReader.java @@ -22,9 +22,9 @@ import org.apache.fineract.cob.service.BeforeStepLockingItemReaderHelper; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; -import org.springframework.batch.core.StepExecution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.annotation.BeforeStep; -import org.springframework.lang.NonNull; +import org.springframework.batch.core.step.StepExecution; @Slf4j public class LoanItemReader extends AbstractLoanItemReader { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemWriter.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemWriter.java index 8ed0f6fa354..e3d5cdde125 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemWriter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanItemWriter.java @@ -20,11 +20,12 @@ import org.apache.fineract.cob.domain.LockOwner; import org.apache.fineract.cob.domain.LockingService; +import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; public class LoanItemWriter extends AbstractLoanItemWriter { - public LoanItemWriter(LockingService loanLockingService) { - super(loanLockingService); + public LoanItemWriter(LoanRepository loanRepository, LockingService loanLockingService) { + super(loanRepository, loanLockingService); } @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/ResolveLoanCOBCustomJobParametersTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/ResolveLoanCOBCustomJobParametersTasklet.java index f0924f1a016..0ea11ab96e5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/ResolveLoanCOBCustomJobParametersTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/ResolveLoanCOBCustomJobParametersTasklet.java @@ -21,10 +21,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.cob.common.CustomJobParameterResolver; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/StayedLockedLoansTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/StayedLockedLoansTasklet.java index b23e58148f6..a4e22810962 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/StayedLockedLoansTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/StayedLockedLoansTasklet.java @@ -30,10 +30,10 @@ import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/WorkingCapitalInlineCOBLoanItemReader.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/WorkingCapitalInlineCOBLoanItemReader.java index cea82913a1d..8c4ed456bc5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/WorkingCapitalInlineCOBLoanItemReader.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/WorkingCapitalInlineCOBLoanItemReader.java @@ -23,10 +23,10 @@ import org.apache.fineract.cob.COBConstant; import org.apache.fineract.portfolio.workingcapitalloan.domain.WorkingCapitalLoan; import org.apache.fineract.portfolio.workingcapitalloan.repository.WorkingCapitalLoanRepository; -import org.springframework.batch.core.StepExecution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.annotation.BeforeStep; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.lang.NonNull; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; public class WorkingCapitalInlineCOBLoanItemReader extends AbstractLoanItemReader { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/WorkingCapitalLoanInlineCOBConfig.java b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/WorkingCapitalLoanInlineCOBConfig.java index 2d052e4bb6f..69f041fa472 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/loan/WorkingCapitalLoanInlineCOBConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/loan/WorkingCapitalLoanInlineCOBConfig.java @@ -35,13 +35,13 @@ import org.apache.fineract.infrastructure.springbatch.PropertyService; import org.apache.fineract.portfolio.workingcapitalloan.domain.WorkingCapitalLoan; import org.apache.fineract.portfolio.workingcapitalloan.repository.WorkingCapitalLoanRepository; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.JobScope; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.listener.ExecutionContextPromotionListener; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.integration.config.annotation.EnableBatchIntegration; import org.springframework.beans.factory.annotation.Qualifier; diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncCommonCOBExecutorService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncCommonCOBExecutorService.java index b9897d72099..aeb5e2f4bc2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncCommonCOBExecutorService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncCommonCOBExecutorService.java @@ -40,20 +40,19 @@ import org.apache.fineract.infrastructure.jobs.service.JobStarter; import org.apache.fineract.infrastructure.jobs.service.SchedulerServiceConstants; import org.quartz.JobExecutionException; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.JobParametersInvalidException; -import org.springframework.batch.core.configuration.JobLocator; -import org.springframework.batch.core.launch.NoSuchJobException; -import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException; -import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException; -import org.springframework.batch.core.repository.JobRestartException; +import org.springframework.batch.core.configuration.JobRegistry; +import org.springframework.batch.core.job.Job; +import org.springframework.batch.core.job.parameters.InvalidJobParametersException; +import org.springframework.batch.core.launch.JobExecutionAlreadyRunningException; +import org.springframework.batch.core.launch.JobInstanceAlreadyCompleteException; +import org.springframework.batch.core.launch.JobRestartException; import org.springframework.scheduling.annotation.Async; @Slf4j @RequiredArgsConstructor public abstract class AsyncCommonCOBExecutorService implements AsyncCOBExecutorService { - private final JobLocator jobLocator; + private final JobRegistry jobRegistry; private final ScheduledJobDetailRepository scheduledJobDetailRepository; private final JobStarter jobStarter; private final RetrieveIdService retrieveIdService; @@ -73,10 +72,10 @@ public void executeLoanCOBCatchUpAsync(FineractContext context) { if (DateUtils.isBefore(oldestCOBProcessedDate, cobBusinessDate)) { executeLoanCOBDayByDayUntilCOBBusinessDate(oldestCOBProcessedDate, cobBusinessDate); } - } catch (NoSuchJobException e) { + } catch (JobNotFoundException e) { // Throwing an error here is useless as it will be swallowed hence it is async method - log.error("Job not found: {}", getJobName(), new JobNotFoundException(getJobName(), e)); - } catch (JobInstanceAlreadyCompleteException | JobRestartException | JobParametersInvalidException + log.error("Job not found: {}", getJobName(), e); + } catch (JobInstanceAlreadyCompleteException | JobRestartException | InvalidJobParametersException | JobExecutionAlreadyRunningException | JobExecutionException e) { // Throwing an error here is useless as it will be swallowed hence it is async method log.error("Error executing job", e); @@ -90,9 +89,12 @@ public void executeLoanCOBCatchUpAsync(FineractContext context) { public abstract String getJobHumanReadableName(); private void executeLoanCOBDayByDayUntilCOBBusinessDate(LocalDate oldestCOBProcessedDate, LocalDate cobBusinessDate) - throws NoSuchJobException, JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, - JobParametersInvalidException, JobRestartException, JobExecutionException { - Job job = jobLocator.getJob(getJobName()); + throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, InvalidJobParametersException, + JobRestartException, JobExecutionException { + Job job = jobRegistry.getJob(getJobName()); + if (job == null) { + throw new JobNotFoundException(getJobName()); + } ScheduledJobDetail scheduledJobDetail = scheduledJobDetailRepository.findByJobName(getJobHumanReadableName()); LocalDate executingBusinessDate = oldestCOBProcessedDate.plusDays(1); String tenantIdentifier = ThreadLocalContextUtil.getTenant().getTenantIdentifier(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncLoanCOBExecutorServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncLoanCOBExecutorServiceImpl.java index 9d53e73d80f..1ed0a933585 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncLoanCOBExecutorServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncLoanCOBExecutorServiceImpl.java @@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.FineractContext; import org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository; import org.apache.fineract.infrastructure.jobs.service.JobStarter; -import org.springframework.batch.core.configuration.JobLocator; +import org.springframework.batch.core.configuration.JobRegistry; import org.springframework.context.annotation.Conditional; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -35,7 +35,7 @@ @Conditional(LoanCOBEnabledCondition.class) public class AsyncLoanCOBExecutorServiceImpl extends AsyncCommonCOBExecutorService implements AsyncLoanCOBExecutorService { - public AsyncLoanCOBExecutorServiceImpl(JobLocator jobLocator, ScheduledJobDetailRepository scheduledJobDetailRepository, + public AsyncLoanCOBExecutorServiceImpl(JobRegistry jobLocator, ScheduledJobDetailRepository scheduledJobDetailRepository, JobStarter jobStarter, RetrieveLoanIdService retrieveIdService) { super(jobLocator, scheduledJobDetailRepository, jobStarter, retrieveIdService); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncWorkingCapitalLoanCOBExecutorServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncWorkingCapitalLoanCOBExecutorServiceImpl.java index 4564712a900..d567304364e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncWorkingCapitalLoanCOBExecutorServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/AsyncWorkingCapitalLoanCOBExecutorServiceImpl.java @@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.jobs.service.JobStarter; -import org.springframework.batch.core.configuration.JobLocator; +import org.springframework.batch.core.configuration.JobRegistry; import org.springframework.context.annotation.Conditional; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -38,7 +38,7 @@ public class AsyncWorkingCapitalLoanCOBExecutorServiceImpl extends AsyncCommonCOBExecutorService implements AsyncWorkingCapitalLoanCOBExecutorService { - public AsyncWorkingCapitalLoanCOBExecutorServiceImpl(JobLocator jobLocator, ScheduledJobDetailRepository scheduledJobDetailRepository, + public AsyncWorkingCapitalLoanCOBExecutorServiceImpl(JobRegistry jobLocator, ScheduledJobDetailRepository scheduledJobDetailRepository, JobStarter jobStarter, WorkingCapitalLoanRetrieveIdService retrieveIdService) { super(jobLocator, scheduledJobDetailRepository, jobStarter, retrieveIdService); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/CommonCOBCatchUpService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/CommonCOBCatchUpService.java index de102e0bbee..3c59b5c6b54 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/CommonCOBCatchUpService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/CommonCOBCatchUpService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.cob.service; import java.time.LocalDate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineCommonLockableCOBExecutorService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineCommonLockableCOBExecutorService.java index 61314a03f2f..7c68cf12828 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineCommonLockableCOBExecutorService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineCommonLockableCOBExecutorService.java @@ -26,9 +26,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; import lombok.RequiredArgsConstructor; @@ -57,13 +55,11 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.infrastructure.springbatch.SpringBatchJobConstants; import org.springframework.batch.core.BatchStatus; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobParameter; -import org.springframework.batch.core.JobParameters; -import org.springframework.batch.core.JobParametersBuilder; import org.springframework.batch.core.configuration.JobLocator; -import org.springframework.batch.core.explore.JobExplorer; +import org.springframework.batch.core.job.Job; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.parameters.JobParameter; +import org.springframework.batch.core.job.parameters.JobParameters; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.batch.core.launch.NoSuchJobException; import org.springframework.transaction.annotation.Propagation; @@ -79,7 +75,6 @@ public abstract class InlineCommonLockableCOBExecutorService loanIds, String jobName, LocalDate businessDate) } catch (NoSuchJobException e) { throw new JobNotFoundException(jobName, e); } - JobParameters jobParameters = new JobParametersBuilder(jobExplorer).getNextJobParameters(inlineLoanCOBJob) - .addJobParameters(new JobParameters(getJobParametersMap(loanIds, businessDate))).toJobParameters(); + + JobParameters jobParameters = new JobParameters(getJobParametersSet(loanIds, businessDate)); JobExecution jobExecution; try { jobExecution = jobLauncher.run(inlineLoanCOBJob, jobParameters); @@ -199,15 +194,13 @@ private Long saveCustomJobParameter(String paramName, String paramValue) { return customJobParameterRepository.save(paramSet); } - private Map> getJobParametersMap(List loanIds, LocalDate businessDate) { + private Set> getJobParametersSet(List loanIds, LocalDate businessDate) { String parameterJson = gson.toJson(loanIds); Long loanIdsJobParameterId = saveCustomJobParameter(COBConstant.INLINE_IDS_PARAMETER_NAME, parameterJson); Long businessDateJobParameterId = saveCustomJobParameter(COBConstant.BUSINESS_DATE_PARAMETER_NAME, businessDate.format(DateTimeFormatter.ISO_DATE)); - Map> jobParameterMap = new HashMap<>(); - jobParameterMap.put(SpringBatchJobConstants.CUSTOM_JOB_PARAMETER_ID_KEY, new JobParameter<>(loanIdsJobParameterId, Long.class)); - jobParameterMap.put(COBConstant.BUSINESS_DATE_PARAMETER_NAME, new JobParameter<>(businessDateJobParameterId, Long.class)); - return jobParameterMap; + return Set.of(new JobParameter<>(SpringBatchJobConstants.CUSTOM_JOB_PARAMETER_ID_KEY, loanIdsJobParameterId, Long.class), + new JobParameter<>(COBConstant.BUSINESS_DATE_PARAMETER_NAME, businessDateJobParameterId, Long.class)); } private void lockLoanAccounts(List loanIds, LocalDate businessDate) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineLoanCOBExecutorServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineLoanCOBExecutorServiceImpl.java index 00336d315b0..f4dd24ceef0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineLoanCOBExecutorServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineLoanCOBExecutorServiceImpl.java @@ -28,7 +28,6 @@ import org.apache.fineract.infrastructure.jobs.domain.CustomJobParameterRepository; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.springframework.batch.core.configuration.JobLocator; -import org.springframework.batch.core.explore.JobExplorer; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Conditional; @@ -41,12 +40,12 @@ public class InlineLoanCOBExecutorServiceImpl extends InlineCommonLockableCOBExecutorService { public InlineLoanCOBExecutorServiceImpl(LoanAccountLockRepository loanAccountLockRepository, - InlineLoanCOBExecutionDataParser dataParser, JobLauncher jobLauncher, JobLocator jobLocator, JobExplorer jobExplorer, + InlineLoanCOBExecutionDataParser dataParser, JobLauncher jobLauncher, JobLocator jobLocator, @Qualifier("requiresNewTransactionTemplate") TransactionTemplate requiresNewTransactionTemplate, CustomJobParameterRepository customJobParameterRepository, PlatformSecurityContext context, RetrieveLoanIdService retrieveIdService, FineractProperties fineractProperties) { - super(loanAccountLockRepository, dataParser, jobLauncher, jobLocator, jobExplorer, requiresNewTransactionTemplate, - customJobParameterRepository, context, retrieveIdService, fineractProperties); + super(loanAccountLockRepository, dataParser, jobLauncher, jobLocator, requiresNewTransactionTemplate, customJobParameterRepository, + context, retrieveIdService, fineractProperties); } @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineWorkingCapitalLoanCOBExecutorServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineWorkingCapitalLoanCOBExecutorServiceImpl.java index 07104d860f2..b1a386c5e28 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineWorkingCapitalLoanCOBExecutorServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/InlineWorkingCapitalLoanCOBExecutorServiceImpl.java @@ -29,7 +29,6 @@ import org.apache.fineract.infrastructure.jobs.domain.CustomJobParameterRepository; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.springframework.batch.core.configuration.JobLocator; -import org.springframework.batch.core.explore.JobExplorer; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Conditional; @@ -42,12 +41,12 @@ public class InlineWorkingCapitalLoanCOBExecutorServiceImpl extends InlineCommonLockableCOBExecutorService { public InlineWorkingCapitalLoanCOBExecutorServiceImpl(WorkingCapitalAccountLockRepository loanAccountLockRepository, - InlineLoanCOBExecutionDataParser dataParser, JobLauncher jobLauncher, JobLocator jobLocator, JobExplorer jobExplorer, + InlineLoanCOBExecutionDataParser dataParser, JobLauncher jobLauncher, JobLocator jobLocator, @Qualifier("requiresNewTransactionTemplate") TransactionTemplate requiresNewTransactionTemplate, CustomJobParameterRepository customJobParameterRepository, PlatformSecurityContext context, WorkingCapitalLoanRetrieveIdService retrieveIdService, FineractProperties fineractProperties) { - super(loanAccountLockRepository, dataParser, jobLauncher, jobLocator, jobExplorer, requiresNewTransactionTemplate, - customJobParameterRepository, context, retrieveIdService, fineractProperties); + super(loanAccountLockRepository, dataParser, jobLauncher, jobLocator, requiresNewTransactionTemplate, customJobParameterRepository, + context, retrieveIdService, fineractProperties); } @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/LoanCOBCatchUpService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/LoanCOBCatchUpService.java index 11591ef61ea..d5e74bd6144 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/LoanCOBCatchUpService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/LoanCOBCatchUpService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.cob.service; public interface LoanCOBCatchUpService extends COBCatchUpService {} diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/WorkingCapitalLoanCOBCatchUpService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/WorkingCapitalLoanCOBCatchUpService.java index 828648243ad..e33ce99bcb6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/WorkingCapitalLoanCOBCatchUpService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/WorkingCapitalLoanCOBCatchUpService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.cob.service; public interface WorkingCapitalLoanCOBCatchUpService extends COBCatchUpService {} diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/WorkingCapitalLoanCOBCatchUpServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/WorkingCapitalLoanCOBCatchUpServiceImpl.java index f0188b2a85a..c1844d7b952 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/WorkingCapitalLoanCOBCatchUpServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/WorkingCapitalLoanCOBCatchUpServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.cob.service; import org.apache.fineract.cob.conditions.LoanCOBEnabledCondition; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatDataValidator.java index 39ad1022847..55714a692d4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/data/AccountNumberFormatDataValidator.java @@ -40,7 +40,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -57,7 +56,6 @@ public class AccountNumberFormatDataValidator { private static final Set ACCOUNT_NUMBER_FORMAT_UPDATE_REQUEST_DATA_PARAMETERS = new HashSet<>( Arrays.asList(AccountNumberFormatConstants.prefixTypeParamName, AccountNumberFormatConstants.prefixCharacterParamName)); - @Autowired public AccountNumberFormatDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormatRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormatRepositoryWrapper.java index 8bbc6423808..314bb2f16ad 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormatRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormatRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.infrastructure.accountnumberformat.domain; import org.apache.fineract.infrastructure.accountnumberformat.exception.AccountNumberFormatNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository @@ -27,7 +26,6 @@ public class AccountNumberFormatRepositoryWrapper implements AccountNumberFormat private final AccountNumberFormatRepository repository; - @Autowired public AccountNumberFormatRepositoryWrapper(final AccountNumberFormatRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatWritePlatformServiceJpaRepositoryImpl.java index a8fc22c88b8..0c426c7ddd7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/service/AccountNumberFormatWritePlatformServiceJpaRepositoryImpl.java @@ -34,7 +34,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; @@ -47,7 +46,6 @@ public class AccountNumberFormatWritePlatformServiceJpaRepositoryImpl implements private final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository; private final AccountNumberFormatDataValidator accountNumberFormatDataValidator; - @Autowired AccountNumberFormatWritePlatformServiceJpaRepositoryImpl(final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository, final AccountNumberFormatDataValidator accountNumberFormatDataValidator) { this.accountNumberFormatRepository = accountNumberFormatRepository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/center/CenterImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/center/CenterImportHandler.java index d6a49f81a08..301a491acda 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/center/CenterImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/center/CenterImportHandler.java @@ -51,7 +51,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -62,7 +61,6 @@ public class CenterImportHandler implements ImportHandler { private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; private final IdempotencyKeyGenerator idempotencyKeyGenerator; - @Autowired public CenterImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService, IdempotencyKeyGenerator idempotencyKeyGenerator) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/chartofaccounts/ChartOfAccountsImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/chartofaccounts/ChartOfAccountsImportHandler.java index 98eae53cea7..4e70dd0a438 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/chartofaccounts/ChartOfAccountsImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/chartofaccounts/ChartOfAccountsImportHandler.java @@ -56,7 +56,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -67,7 +66,6 @@ public class ChartOfAccountsImportHandler implements ImportHandler { private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; private final GLAccountRepositoryWrapper glAccountRepository; - @Autowired public ChartOfAccountsImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService, GLAccountRepositoryWrapper glAccountRepository) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/fixeddeposits/FixedDepositImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/fixeddeposits/FixedDepositImportHandler.java index 8c2bbac9d47..e5ca71720d0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/fixeddeposits/FixedDepositImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/fixeddeposits/FixedDepositImportHandler.java @@ -51,7 +51,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -60,7 +59,6 @@ public class FixedDepositImportHandler implements ImportHandler { private static final Logger LOG = LoggerFactory.getLogger(FixedDepositImportHandler.class); private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public FixedDepositImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/fixeddeposits/FixedDepositTransactionImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/fixeddeposits/FixedDepositTransactionImportHandler.java index 1a56ab944c6..ce33697f093 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/fixeddeposits/FixedDepositTransactionImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/fixeddeposits/FixedDepositTransactionImportHandler.java @@ -44,7 +44,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -58,7 +57,6 @@ public class FixedDepositTransactionImportHandler implements ImportHandler { private static final Logger LOG = LoggerFactory.getLogger(FixedDepositTransactionImportHandler.class); private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public FixedDepositTransactionImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/group/GroupImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/group/GroupImportHandler.java index 227da531c7a..2597b347a26 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/group/GroupImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/group/GroupImportHandler.java @@ -51,7 +51,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -62,7 +61,6 @@ public class GroupImportHandler implements ImportHandler { private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; private final IdempotencyKeyGenerator idempotencyKeyGenerator; - @Autowired public GroupImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService, IdempotencyKeyGenerator idempotencyKeyGenerator) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/guarantor/GuarantorImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/guarantor/GuarantorImportHandler.java index c51be9c6382..2e58d9f5881 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/guarantor/GuarantorImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/guarantor/GuarantorImportHandler.java @@ -43,7 +43,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -53,7 +52,6 @@ public class GuarantorImportHandler implements ImportHandler { private static final Logger LOG = LoggerFactory.getLogger(GuarantorImportHandler.class); private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public GuarantorImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/journalentry/JournalEntriesImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/journalentry/JournalEntriesImportHandler.java index 1f326ca412c..6625e89506b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/journalentry/JournalEntriesImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/journalentry/JournalEntriesImportHandler.java @@ -44,7 +44,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -54,7 +53,6 @@ public class JournalEntriesImportHandler implements ImportHandler { private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public JournalEntriesImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/loanrepayment/LoanRepaymentImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/loanrepayment/LoanRepaymentImportHandler.java index 72f90c4c7be..f6eeb8536ea 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/loanrepayment/LoanRepaymentImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/loanrepayment/LoanRepaymentImportHandler.java @@ -44,7 +44,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -57,7 +56,6 @@ public class LoanRepaymentImportHandler implements ImportHandler { private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public LoanRepaymentImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService, final LoanReadPlatformService loanReadPlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/office/OfficeImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/office/OfficeImportHandler.java index 1f0c3838d23..885161f4c77 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/office/OfficeImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/office/OfficeImportHandler.java @@ -41,7 +41,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -50,7 +49,6 @@ public class OfficeImportHandler implements ImportHandler { private static final Logger LOG = LoggerFactory.getLogger(OfficeImportHandler.class); private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public OfficeImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/recurringdeposit/RecurringDepositImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/recurringdeposit/RecurringDepositImportHandler.java index e84cf3f329e..16a64771ce6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/recurringdeposit/RecurringDepositImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/recurringdeposit/RecurringDepositImportHandler.java @@ -48,7 +48,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -61,7 +60,6 @@ public class RecurringDepositImportHandler implements ImportHandler { private static final Logger LOG = LoggerFactory.getLogger(RecurringDepositImportHandler.class); private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public RecurringDepositImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/recurringdeposit/RecurringDepositTransactionImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/recurringdeposit/RecurringDepositTransactionImportHandler.java index e4c01756d97..49b9d65f5df 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/recurringdeposit/RecurringDepositTransactionImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/recurringdeposit/RecurringDepositTransactionImportHandler.java @@ -45,7 +45,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -55,7 +54,6 @@ public class RecurringDepositTransactionImportHandler implements ImportHandler { private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public RecurringDepositTransactionImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/savings/SavingsImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/savings/SavingsImportHandler.java index d3cc0b5d3ea..690f8b04446 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/savings/SavingsImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/savings/SavingsImportHandler.java @@ -50,7 +50,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -65,7 +64,6 @@ public class SavingsImportHandler implements ImportHandler { private static final Logger LOG = LoggerFactory.getLogger(SavingsImportHandler.class); private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public SavingsImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/savings/SavingsTransactionImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/savings/SavingsTransactionImportHandler.java index 49c9534ce85..4e7a72509d1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/savings/SavingsTransactionImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/savings/SavingsTransactionImportHandler.java @@ -44,7 +44,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -58,7 +57,6 @@ public class SavingsTransactionImportHandler implements ImportHandler { private static final Logger LOG = LoggerFactory.getLogger(SavingsTransactionImportHandler.class); private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public SavingsTransactionImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/sharedaccount/SharedAccountImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/sharedaccount/SharedAccountImportHandler.java index 03aea468094..417cefc6d2c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/sharedaccount/SharedAccountImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/sharedaccount/SharedAccountImportHandler.java @@ -42,7 +42,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -54,7 +53,6 @@ public class SharedAccountImportHandler implements ImportHandler { private static final Logger LOG = LoggerFactory.getLogger(SharedAccountImportHandler.class); private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public SharedAccountImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/users/UserImportHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/users/UserImportHandler.java index f7cb1ec5149..cdad26864af 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/users/UserImportHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/users/UserImportHandler.java @@ -39,7 +39,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -49,7 +48,6 @@ public class UserImportHandler implements ImportHandler { private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - @Autowired public UserImportHandler(final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookPopulatorServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookPopulatorServiceImpl.java index 14351c97b5b..3a63e90d86f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookPopulatorServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/service/BulkImportWorkbookPopulatorServiceImpl.java @@ -111,7 +111,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -138,7 +137,6 @@ public class BulkImportWorkbookPopulatorServiceImpl implements BulkImportWorkboo private final DepositProductReadPlatformService depositProductReadPlatformService; private final RoleReadPlatformService roleReadPlatformService; - @Autowired public BulkImportWorkbookPopulatorServiceImpl(final PlatformSecurityContext context, final OfficeReadPlatformService officeReadPlatformService, final StaffReadService staffReadPlatformService, final ClientReadPlatformService clientReadPlatformService, final CenterReadPlatformService centerReadPlatformService, diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignValidator.java index acbcca26121..2f6d1d6fdf9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignValidator.java @@ -35,7 +35,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -80,7 +79,6 @@ public class EmailCampaignValidator { public static final Set PREVIEW_REQUEST_DATA_PARAMETERS = new HashSet(Arrays.asList(paramValue, emailMessage)); - @Autowired public EmailCampaignValidator(FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationValidator.java index b00f920d5d7..f6308e97d9e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationValidator.java @@ -36,7 +36,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -50,7 +49,6 @@ public final class EmailConfigurationValidator { public static final Set supportedParams = new HashSet(Arrays.asList(EmailApiConstants.SMTP_PORT, EmailApiConstants.SMTP_PASSWORD, EmailApiConstants.SMTP_USERNAME, EmailApiConstants.SMTP_SERVER)); - @Autowired public EmailConfigurationValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailDataValidator.java index d598811027f..3bcbf9a68de 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailDataValidator.java @@ -18,8 +18,6 @@ */ package org.apache.fineract.infrastructure.campaigns.email.data; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Splitter; import com.google.gson.JsonElement; import com.google.gson.reflect.TypeToken; @@ -43,8 +41,9 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.json.JsonMapper; @Component public final class EmailDataValidator { @@ -53,7 +52,6 @@ public final class EmailDataValidator { private static final String EMAIL_REGEX = "^[\\w!#$%&’*+/=?`{|}~^-]+(?:\\.[\\w!#$%&’*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$"; private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX); - @Autowired public EmailDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } @@ -302,7 +300,7 @@ public HashMap validateStretchyReportParamMap(String stretchyRep if (!StringUtils.isEmpty(stretchyReportParamMap)) { try { - stretchyReportParamHashMap = new ObjectMapper().readValue(stretchyReportParamMap, + stretchyReportParamHashMap = new JsonMapper().readValue(stretchyReportParamMap, new TypeReference>() {}); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessageAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessageAssembler.java index 932ac9646cb..12a9acf9152 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessageAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessageAssembler.java @@ -29,7 +29,6 @@ import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; import org.apache.fineract.portfolio.group.domain.Group; import org.apache.fineract.portfolio.group.domain.GroupRepositoryWrapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -41,7 +40,6 @@ public class EmailMessageAssembler { private final StaffRepositoryWrapper staffRepository; private final FromJsonHelper fromApiJsonHelper; - @Autowired public EmailMessageAssembler(final EmailMessageRepository emailMessageRepository, final GroupRepositoryWrapper groupRepositoryWrapper, final ClientRepositoryWrapper clientRepository, final StaffRepositoryWrapper staffRepository, final FromJsonHelper fromApiJsonHelper) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignDomainServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignDomainServiceImpl.java index 4b098de2570..b7f47baef6e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignDomainServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignDomainServiceImpl.java @@ -18,8 +18,6 @@ */ package org.apache.fineract.infrastructure.campaigns.email.service; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.PostConstruct; import java.io.IOException; import java.util.HashMap; @@ -37,6 +35,8 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction; import org.springframework.stereotype.Service; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.json.JsonMapper; @Service @RequiredArgsConstructor @@ -97,7 +97,7 @@ public void onBusinessEvent(LoanApprovedBusinessEvent event) { private void notifyLoanOwner(LoanTransaction loanTransaction, String paramValue) throws IOException { List campaigns = this.retrieveEmailCampaigns(paramValue); for (EmailCampaign emailCampaign : campaigns) { - HashMap campaignParams = new ObjectMapper().readValue(emailCampaign.getParamValue(), + HashMap campaignParams = new JsonMapper().readValue(emailCampaign.getParamValue(), new TypeReference>() {}); campaignParams.put("loanId", loanTransaction.getLoan().getId().toString()); campaignParams.put("loanTransactionId", loanTransaction.getId().toString()); @@ -109,7 +109,7 @@ private void notifyLoanOwner(LoanTransaction loanTransaction, String paramValue) private void notifyLoanOwner(Loan loan, String paramValue) throws IOException { List campaigns = this.retrieveEmailCampaigns(paramValue); for (EmailCampaign emailCampaign : campaigns) { - HashMap campaignParams = new ObjectMapper().readValue(emailCampaign.getParamValue(), + HashMap campaignParams = new JsonMapper().readValue(emailCampaign.getParamValue(), new TypeReference>() {}); campaignParams.put("loanId", loan.getId().toString()); this.emailCampaignWritePlatformService.insertDirectCampaignIntoEmailOutboundTable(loan, emailCampaign, campaignParams); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignReadPlatformServiceImpl.java index 8067ea08acd..81cdc12887a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailCampaignReadPlatformServiceImpl.java @@ -37,7 +37,6 @@ import org.apache.fineract.infrastructure.campaigns.email.exception.EmailCampaignNotFound; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.domain.JdbcSupport; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -54,7 +53,6 @@ public class EmailCampaignReadPlatformServiceImpl implements EmailCampaignReadPl private final EmailCampaignMapper emailCampaignMapper; - @Autowired public EmailCampaignReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; this.businessRuleMapper = new BusinessRuleMapper(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailConfig.java index 576813881e6..7710d60291a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailConfig.java @@ -27,11 +27,11 @@ import org.apache.fineract.infrastructure.reportmailingjob.validation.ReportMailingJobValidator; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailTasklet.java index 031e651ded4..9944ce35221 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailTasklet.java @@ -51,10 +51,10 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsConfig.java index 82121d0a59a..85d63b9ee4d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsConfig.java @@ -26,11 +26,11 @@ import org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRunHistoryRepository; import org.apache.fineract.infrastructure.reportmailingjob.service.ReportMailingJobEmailService; import org.apache.fineract.infrastructure.reportmailingjob.validation.ReportMailingJobValidator; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsTasklet.java index 8aa35255af7..1599dea86a1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsTasklet.java @@ -55,10 +55,10 @@ import org.apache.fineract.infrastructure.reportmailingjob.validation.ReportMailingJobValidator; import org.apache.fineract.portfolio.calendar.service.CalendarUtils; import org.glassfish.jersey.internal.util.collection.MultivaluedStringMap; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayConfig.java index b7352783f04..61e8364b8e2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayConfig.java @@ -22,11 +22,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; import org.apache.fineract.infrastructure.sms.service.SmsReadPlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayTasklet.java index 1a23d474e31..74fb6dd2f49 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayTasklet.java @@ -32,10 +32,10 @@ import org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; import org.apache.fineract.infrastructure.sms.domain.SmsMessageStatusType; import org.apache.fineract.infrastructure.sms.service.SmsReadPlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayConfig.java index 5fff6f6b38d..bbff18142f2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayConfig.java @@ -23,11 +23,11 @@ import org.apache.fineract.infrastructure.gcm.service.NotificationSenderService; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayTasklet.java index 4ef12fcf7af..1662d7c2ad7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayTasklet.java @@ -38,10 +38,10 @@ import org.apache.fineract.infrastructure.sms.domain.SmsMessage; import org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; import org.apache.fineract.infrastructure.sms.domain.SmsMessageStatusType; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextClosedEvent; import org.springframework.core.ParameterizedTypeReference; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageConfig.java index fa73c7051c9..6592f57b7b9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageConfig.java @@ -24,11 +24,11 @@ import org.apache.fineract.infrastructure.campaigns.email.service.EmailCampaignWritePlatformService; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageTasklet.java index 2a3f6964730..06742efc478 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageTasklet.java @@ -18,8 +18,6 @@ */ package org.apache.fineract.infrastructure.campaigns.jobs.updateemailoutboundwithcampaignmessage; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import com.github.mustachejava.DefaultMustacheFactory; import com.github.mustachejava.Mustache; import com.github.mustachejava.MustacheFactory; @@ -47,10 +45,13 @@ import org.apache.fineract.portfolio.calendar.service.CalendarUtils; import org.apache.fineract.portfolio.client.domain.Client; import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.json.JsonMapper; @Slf4j @RequiredArgsConstructor @@ -85,8 +86,8 @@ public RepeatStatus execute(StepContribution contribution, ChunkContext chunkCon private void insertDirectCampaignIntoEmailOutboundTable(final String emailParams, final String emailSubject, final String messageTemplate, final String campaignName, final Long campaignId) { try { - HashMap campaignParams = new ObjectMapper().readValue(emailParams, new TypeReference<>() {}); - HashMap queryParamForRunReport = new ObjectMapper().readValue(emailParams, new TypeReference<>() {}); + HashMap campaignParams = new JsonMapper().readValue(emailParams, new TypeReference<>() {}); + HashMap queryParamForRunReport = new JsonMapper().readValue(emailParams, new TypeReference<>() {}); List> runReportObject = emailCampaignWritePlatformService .getRunReportByServiceImpl(campaignParams.get("reportName"), queryParamForRunReport); if (runReportObject != null) { @@ -104,7 +105,7 @@ private void insertDirectCampaignIntoEmailOutboundTable(final String emailParams } } } - } catch (IOException e) { + } catch (JacksonException | IOException e) { throw new EmailParamMappingException(e); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageConfig.java index 0ac5215602f..f37ab51ac27 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageConfig.java @@ -21,11 +21,11 @@ import org.apache.fineract.infrastructure.campaigns.sms.domain.SmsCampaignRepository; import org.apache.fineract.infrastructure.campaigns.sms.service.SmsCampaignWritePlatformService; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageTasklet.java index e24a42fb729..a28d8b0739c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageTasklet.java @@ -32,10 +32,10 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.calendar.service.CalendarUtils; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/serialization/SmsCampaignValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/serialization/SmsCampaignValidator.java index 6aab22e61a8..0a3abb00229 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/serialization/SmsCampaignValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/serialization/SmsCampaignValidator.java @@ -38,7 +38,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.calendar.domain.CalendarFrequencyType; import org.apache.fineract.portfolio.client.domain.Client; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -88,7 +87,6 @@ public class SmsCampaignValidator { protected static final Set PREVIEW_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList(paramValue, message)); - @Autowired public SmsCampaignValidator(FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java index ec8aa53abdd..6a75597dc4f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java @@ -16,13 +16,9 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.campaigns.sms.service; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.PostConstruct; -import java.io.IOException; import java.security.InvalidParameterException; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; @@ -69,6 +65,9 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccount; import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction; import org.springframework.stereotype.Service; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.json.JsonMapper; @Service @Slf4j @@ -180,10 +179,8 @@ private void sendSmsForLoanRepayment(LoanTransaction loanTransaction) { } else { groupClients.add(loan.client()); } - HashMap campaignParams = new ObjectMapper().readValue(smsCampaign.getParamValue(), - new TypeReference<>() { - - }); + HashMap campaignParams = new JsonMapper().readValue(smsCampaign.getParamValue(), + new TypeReference<>() {}); if (!groupClients.isEmpty()) { for (Client client : groupClients) { @@ -224,7 +221,7 @@ private void sendSmsForLoanRepayment(LoanTransaction loanTransaction) { } } } - } catch (final IOException e) { + } catch (final JacksonException e) { log.error("smsParams does not contain the key: ", e); } catch (final RuntimeException e) { log.debug("Client Office Id and SMS Campaign Office id doesn't match ", e); @@ -241,10 +238,8 @@ private void sendSmsForSavingsTransaction(final SavingsAccountTransaction saving try { final SavingsAccount savingsAccount = savingsTransaction.getSavingsAccount(); final Client client = savingsAccount.getClient(); - HashMap campaignParams = new ObjectMapper().readValue(smsCampaign.getParamValue(), - new TypeReference<>() { - - }); + HashMap campaignParams = new JsonMapper().readValue(smsCampaign.getParamValue(), + new TypeReference<>() {}); HashMap smsParams = processSavingsTransactionDataForSms(savingsTransaction, client); for (Map.Entry entry : campaignParams.entrySet()) { String value = entry.getValue(); @@ -283,7 +278,7 @@ private void sendSmsForSavingsTransaction(final SavingsAccountTransaction saving smsDataMap.put(smsCampaign, messages); this.smsMessageScheduledJobService.sendTriggeredMessages(smsDataMap); } - } catch (final IOException e) { + } catch (final JacksonException e) { log.error("smsParams does not contain the key: ", e); } catch (final RuntimeException e) { log.debug("Client Office Id and SMS Campaign Office id doesn't match ", e); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java index c333a4203da..45deed10223 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java @@ -35,7 +35,6 @@ import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; @@ -53,7 +52,6 @@ public class SmsCampaignDropdownReadPlatformServiceImpl implements SmsCampaignDr private final SmsConfigUtils smsConfigUtils; - @Autowired public SmsCampaignDropdownReadPlatformServiceImpl(final SmsConfigUtils smsConfigUtils) { this.restTemplate = new RestTemplate(); this.smsConfigUtils = smsConfigUtils; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java index 2a8c9d926c2..f7177efd964 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java @@ -18,9 +18,6 @@ */ package org.apache.fineract.infrastructure.campaigns.sms.service; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import com.github.mustachejava.DefaultMustacheFactory; import com.github.mustachejava.Mustache; import com.github.mustachejava.MustacheFactory; @@ -83,6 +80,10 @@ import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import tools.jackson.core.JacksonException; +import tools.jackson.core.exc.StreamReadException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.json.JsonMapper; @Service @Slf4j @@ -207,9 +208,9 @@ public CommandProcessingResult delete(final Long resourceId) { @Override public void insertDirectCampaignIntoSmsOutboundTable(SmsCampaign smsCampaign) { try { - HashMap campaignParams = new ObjectMapper().readValue(smsCampaign.getParamValue(), new TypeReference<>() {}); + HashMap campaignParams = new JsonMapper().readValue(smsCampaign.getParamValue(), new TypeReference<>() {}); - HashMap queryParamForRunReport = new ObjectMapper().readValue(smsCampaign.getParamValue(), + HashMap queryParamForRunReport = new JsonMapper().readValue(smsCampaign.getParamValue(), new TypeReference<>() {}); List> runReportObject = getRunReportByServiceImpl(campaignParams.get("reportName"), @@ -233,7 +234,7 @@ public void insertDirectCampaignIntoSmsOutboundTable(SmsCampaign smsCampaign) { } } } - } catch (final IOException e) { + } catch (final JacksonException | IOException e) { log.error("Error occurred.", e); } @@ -248,11 +249,11 @@ public void insertDirectCampaignIntoSmsOutboundTable(final Loan loan, final SmsC Set clientSet = new HashSet<>(); - HashMap campaignParams = new ObjectMapper().readValue(smsCampaign.getParamValue(), + HashMap campaignParams = new JsonMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); campaignParams.put("loanId", loan.getId().toString()); - HashMap queryParamForRunReport = new ObjectMapper().readValue(smsCampaign.getParamValue(), + HashMap queryParamForRunReport = new JsonMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); queryParamForRunReport.put("loanId", loan.getId().toString()); @@ -303,10 +304,10 @@ public void insertDirectCampaignIntoSmsOutboundTable(final Loan loan, final SmsC @Override public void insertDirectCampaignIntoSmsOutboundTable(final Client client, final SmsCampaign smsCampaign) { try { - HashMap campaignParams = new ObjectMapper().readValue(smsCampaign.getParamValue(), + HashMap campaignParams = new JsonMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); campaignParams.put("clientId", client.getId().toString()); - HashMap queryParamForRunReport = new ObjectMapper().readValue(smsCampaign.getParamValue(), + HashMap queryParamForRunReport = new JsonMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); campaignParams.put("clientId", client.getId().toString()); @@ -345,10 +346,10 @@ public void insertDirectCampaignIntoSmsOutboundTable(final Client client, final @Override public void insertDirectCampaignIntoSmsOutboundTable(final SavingsAccount savingsAccount, final SmsCampaign smsCampaign) { try { - HashMap campaignParams = new ObjectMapper().readValue(smsCampaign.getParamValue(), + HashMap campaignParams = new JsonMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); campaignParams.put("savingsId", savingsAccount.getId().toString()); - HashMap queryParamForRunReport = new ObjectMapper().readValue(smsCampaign.getParamValue(), + HashMap queryParamForRunReport = new JsonMapper().readValue(smsCampaign.getParamValue(), new TypeReference>() {}); queryParamForRunReport.put("savingsId", savingsAccount.getId().toString()); @@ -474,8 +475,8 @@ private List> getRunReportByServiceImpl(final String rep try { final String response = this.genericDataService.generateJsonFromGenericResultsetData(results); - resultList = new ObjectMapper().readValue(response, new TypeReference>>() {}); - } catch (JsonParseException e) { + resultList = new JsonMapper().readValue(response, new TypeReference>>() {}); + } catch (StreamReadException e) { log.warn("Conversion of report query results to JSON failed", e); return resultList; } @@ -486,9 +487,9 @@ private List> getRunReportByServiceImpl(final String rep Map.Entry map = it.next(); String key = map.getKey(); Object ob = map.getValue(); - if (ob instanceof ArrayList && ((ArrayList) ob).size() == 3) { - String changeArrayDateToStringDate = ((ArrayList) ob).get(2).toString() + "-" + ((ArrayList) ob).get(1).toString() + "-" - + ((ArrayList) ob).get(0).toString(); + if (ob instanceof ArrayList list && list.size() == 3) { + String changeArrayDateToStringDate = list.get(2).toString() + "-" + list.get(1).toString() + "-" + + list.get(0).toString(); entry.put(key, changeArrayDateToStringDate); } } @@ -507,8 +508,8 @@ public CampaignPreviewData previewMessage(final JsonQuery query) { final String textMessageTemplate = this.fromJsonHelper.extractStringNamed("message", query.parsedJson()); try { - HashMap campaignParams = new ObjectMapper().readValue(smsParams, new TypeReference<>() {}); - HashMap queryParamForRunReport = new ObjectMapper().readValue(smsParams, new TypeReference<>() {}); + HashMap campaignParams = new JsonMapper().readValue(smsParams, new TypeReference<>() {}); + HashMap queryParamForRunReport = new JsonMapper().readValue(smsParams, new TypeReference<>() {}); List> runReportObject = this.getRunReportByServiceImpl(campaignParams.get("reportName"), queryParamForRunReport); @@ -526,7 +527,7 @@ public CampaignPreviewData previewMessage(final JsonQuery query) { } else { campaignMessage = new CampaignPreviewData(textMessageTemplate, 0); } - } catch (final IOException e) { + } catch (final JacksonException | IOException e) { throw new PlatformDataIntegrityException("error.msg.sms.campaign.preview.parsing.error", "Error occurred while parsing campaign params for SMS campaign preview message", e.getMessage(), e); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/serialization/CodeCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/serialization/CodeCommandFromApiJsonDeserializer.java index ebc2e4ff023..a998b826ad7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/serialization/CodeCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/serialization/CodeCommandFromApiJsonDeserializer.java @@ -32,7 +32,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -47,7 +46,6 @@ public final class CodeCommandFromApiJsonDeserializer { private static final Set SUPPORTED_PARAMETERS = new HashSet<>(List.of("name")); private final FromJsonHelper fromApiJsonHelper; - @Autowired public CodeCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/serialization/CodeValueCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/serialization/CodeValueCommandFromApiJsonDeserializer.java index 1f8a771c927..df5e7defb45 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/serialization/CodeValueCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/serialization/CodeValueCommandFromApiJsonDeserializer.java @@ -32,7 +32,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -47,7 +46,6 @@ public final class CodeValueCommandFromApiJsonDeserializer { private static final Set SUPPORTED_PARAMETERS = CodevalueJSONinputParams.getAllValues(); private final FromJsonHelper fromApiJsonHelper; - @Autowired public CodeValueCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeReadPlatformServiceImpl.java index f8321616e5d..12eee1005a3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeReadPlatformServiceImpl.java @@ -24,7 +24,6 @@ import org.apache.fineract.infrastructure.codes.data.CodeData; import org.apache.fineract.infrastructure.codes.exception.CodeNotFoundException; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -39,7 +38,6 @@ public class CodeReadPlatformServiceImpl implements CodeReadPlatformService { private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; - @Autowired public CodeReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate) { this.context = context; this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueWritePlatformServiceJpaRepositoryImpl.java index 96e584a31a8..dfd85104287 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeValueWritePlatformServiceJpaRepositoryImpl.java @@ -34,7 +34,6 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.NonTransientDataAccessException; @@ -53,7 +52,6 @@ public class CodeValueWritePlatformServiceJpaRepositoryImpl implements CodeValue private final CodeRepository codeRepository; private final CodeValueCommandFromApiJsonDeserializer fromApiJsonDeserializer; - @Autowired public CodeValueWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final CodeRepository codeRepository, final CodeValueRepositoryWrapper codeValueRepositoryWrapper, final CodeValueRepository codeValueRepository, final CodeValueCommandFromApiJsonDeserializer fromApiJsonDeserializer) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeWritePlatformServiceJpaRepositoryImpl.java index 5e59b6ecac6..94f8805c6ac 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/service/CodeWritePlatformServiceJpaRepositoryImpl.java @@ -34,7 +34,6 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.orm.jpa.JpaSystemException; @@ -50,7 +49,6 @@ public class CodeWritePlatformServiceJpaRepositoryImpl implements CodeWritePlatf private final CodeRepository codeRepository; private final CodeCommandFromApiJsonDeserializer fromApiJsonDeserializer; - @Autowired public CodeWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final CodeRepository codeRepository, final CodeCommandFromApiJsonDeserializer fromApiJsonDeserializer) { this.context = context; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/ExternalServicesPropertiesData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/ExternalServicesPropertiesData.java index ba88e8284df..4e762a0382d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/ExternalServicesPropertiesData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/ExternalServicesPropertiesData.java @@ -18,18 +18,20 @@ */ package org.apache.fineract.infrastructure.configuration.data; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import java.io.Serial; import java.io.Serializable; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import org.apache.fineract.infrastructure.core.jersey.serializer.MaskedValueSerializer; +import tools.jackson.databind.annotation.JsonSerialize; @Data @NoArgsConstructor @Accessors(chain = true) public class ExternalServicesPropertiesData implements Serializable { + @Serial private static final long serialVersionUID = 1L; private String name; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicePropertiesPK.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicePropertiesPK.java index 20e042f1146..c1124cf7e39 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicePropertiesPK.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicePropertiesPK.java @@ -20,6 +20,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Embeddable; +import java.io.Serial; import java.io.Serializable; import lombok.Getter; import lombok.NoArgsConstructor; @@ -35,6 +36,7 @@ @Accessors(chain = true) public class ExternalServicePropertiesPK implements Serializable { + @Serial private static final long serialVersionUID = 1L; @Column(name = "name", length = 150) private String name; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicesPropertiesRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicesPropertiesRepositoryWrapper.java index 8442e34e4b2..b9a5a7f87a4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicesPropertiesRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalServicesPropertiesRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.infrastructure.configuration.domain; import org.apache.fineract.infrastructure.configuration.exception.ExternalServiceConfigurationNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -27,7 +26,6 @@ public class ExternalServicesPropertiesRepositoryWrapper { private final ExternalServicesPropertiesRepository repository; - @Autowired public ExternalServicesPropertiesRepositoryWrapper(final ExternalServicesPropertiesRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/serialization/ExternalServicesPropertiesCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/serialization/ExternalServicesPropertiesCommandFromApiJsonDeserializer.java index 2ce038e1518..e273a1211dc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/serialization/ExternalServicesPropertiesCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/serialization/ExternalServicesPropertiesCommandFromApiJsonDeserializer.java @@ -30,7 +30,6 @@ import org.apache.fineract.infrastructure.configuration.service.ExternalServicesConstants.SMTPJSONinputParams; import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -42,7 +41,6 @@ public class ExternalServicesPropertiesCommandFromApiJsonDeserializer { private static final Set NOTIFICATION_SUPPORTED_PARAMETERS = NotificationJSONinputParams.getAllValues(); private final FromJsonHelper fromApiJsonHelper; - @Autowired public ExternalServicesPropertiesCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/serialization/GlobalConfigurationCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/serialization/GlobalConfigurationCommandFromApiJsonDeserializer.java index 948e571a5a2..71169750d33 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/serialization/GlobalConfigurationCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/serialization/GlobalConfigurationCommandFromApiJsonDeserializer.java @@ -30,7 +30,6 @@ import org.apache.fineract.infrastructure.core.serialization.AbstractFromApiJsonDeserializer; import org.apache.fineract.infrastructure.core.serialization.FromApiJsonDeserializer; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -46,7 +45,6 @@ public final class GlobalConfigurationCommandFromApiJsonDeserializer private static final Set SUPPORTED_PARAMETERS = new HashSet<>(List.of("globalConfiguration")); private final FromJsonHelper fromApiJsonHelper; - @Autowired public GlobalConfigurationCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformServiceImpl.java index 7e11c5c12c8..63ff2d105fc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformServiceImpl.java @@ -29,7 +29,6 @@ import org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationRepositoryWrapper; import org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @@ -42,7 +41,6 @@ public class ConfigurationReadPlatformServiceImpl implements ConfigurationReadPl private final GlobalConfigurationRepositoryWrapper configurationRepositoryWrapper; private final RowMapper rm; - @Autowired public ConfigurationReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate, final GlobalConfigurationRepositoryWrapper configurationRepositoryWrapper) { this.context = context; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandler.java index a444e1176ec..63834558988 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandler.java @@ -19,6 +19,7 @@ package org.apache.fineract.infrastructure.core.auditing; import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom; +import org.jspecify.annotations.NonNull; import org.springframework.data.auditing.AuditableBeanWrapper; import org.springframework.data.auditing.AuditingHandler; import org.springframework.data.auditing.DateTimeProvider; @@ -27,7 +28,6 @@ import org.springframework.data.mapping.PersistentProperty; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.context.PersistentEntities; -import org.springframework.lang.NonNull; import org.springframework.util.Assert; public class CustomAuditingHandler extends AuditingHandler { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/FineractLiquibaseOnlyApplicationConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/FineractLiquibaseOnlyApplicationConfiguration.java index 78f5e7d45a4..f820b326a28 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/FineractLiquibaseOnlyApplicationConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/FineractLiquibaseOnlyApplicationConfiguration.java @@ -24,8 +24,8 @@ import org.apache.fineract.infrastructure.core.config.HikariCpConfig; import org.apache.fineract.infrastructure.core.config.JdbcConfig; import org.springframework.beans.factory.InitializingBean; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.liquibase.autoconfigure.LiquibaseProperties; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Import; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/FineractWebApplicationConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/FineractWebApplicationConfiguration.java index 73ec21230b7..2bf63a28508 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/FineractWebApplicationConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/boot/FineractWebApplicationConfiguration.java @@ -23,14 +23,13 @@ import org.apache.fineract.infrastructure.core.config.FineractProperties; import org.springframework.beans.factory.InitializingBean; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties; -import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration; +import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; +import org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration; +import org.springframework.boot.liquibase.autoconfigure.LiquibaseAutoConfiguration; +import org.springframework.boot.liquibase.autoconfigure.LiquibaseProperties; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; @@ -44,8 +43,7 @@ @Configuration @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, - DataSourceTransactionManagerAutoConfiguration.class, GsonAutoConfiguration.class, JdbcTemplateAutoConfiguration.class, - LiquibaseAutoConfiguration.class }) + DataSourceTransactionManagerAutoConfiguration.class, JdbcTemplateAutoConfiguration.class, LiquibaseAutoConfiguration.class }) @EnableTransactionManagement @EnableWebSecurity @EnableConfigurationProperties({ FineractProperties.class, LiquibaseProperties.class }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/CompatibilityConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/CompatibilityConfig.java index 11811517e61..a6983455c6a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/CompatibilityConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/CompatibilityConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import com.zaxxer.hikari.HikariConfig; @@ -28,6 +27,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -110,6 +110,7 @@ public HikariDataSource hikariTenantDataSource(HikariConfig hc) { } @Bean + @DependsOnDatabaseInitialization public HikariConfig hikariConfig() { Environment environment = context.getEnvironment(); HikariConfig hc = new HikariConfig(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/ContentS3Config.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/ContentS3Config.java index 61f794c47f3..b3b2a747b48 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/ContentS3Config.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/ContentS3Config.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import com.google.common.base.Strings; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/HikariCpConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/HikariCpConfig.java index 6084e2a1a91..61d798d9f69 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/HikariCpConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/HikariCpConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import com.zaxxer.hikari.HikariDataSource; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/JdbcConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/JdbcConfig.java index 947a8cb2d3d..2dcf63110d0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/JdbcConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/JdbcConfig.java @@ -18,10 +18,14 @@ */ package org.apache.fineract.infrastructure.core.config; +import org.apache.fineract.infrastructure.core.service.database.DatabaseTypeResolver; import org.apache.fineract.infrastructure.core.service.database.RoutingDataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; +import org.springframework.data.jdbc.core.dialect.JdbcDialect; +import org.springframework.data.jdbc.core.dialect.JdbcMySqlDialect; +import org.springframework.data.jdbc.core.dialect.JdbcPostgresDialect; import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @@ -32,6 +36,14 @@ "org.apache.fineract.infrastructure.documentmanagement.domain" }, jdbcOperationsRef = "namedParameterJdbcTemplate", transactionManagerRef = "jdbcTransactionManager") public class JdbcConfig { + @Bean + public JdbcDialect jdbcDialect(DatabaseTypeResolver databaseTypeResolver) { + if (databaseTypeResolver.isPostgreSQL()) { + return JdbcPostgresDialect.INSTANCE; + } + return JdbcMySqlDialect.INSTANCE; + } + @Bean public JdbcTemplate jdbcTemplate(RoutingDataSource dataSource) { return new JdbcTemplate(dataSource); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/JdbcTransactionConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/JdbcTransactionConfig.java index e6cac7499c1..7efee2b554d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/JdbcTransactionConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/JdbcTransactionConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import static org.springframework.transaction.TransactionDefinition.PROPAGATION_REQUIRES_NEW; @@ -27,7 +26,7 @@ import org.apache.fineract.infrastructure.core.service.database.RoutingDataSource; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers; +import org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizers; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.PlatformTransactionManager; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/MetricsConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/MetricsConfig.java index 4b4729a369a..981bd3a9767 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/MetricsConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/MetricsConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import io.micrometer.core.aop.TimedAspect; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java index cfae68f3558..3e51ca53100 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import java.security.SecureRandom; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SecurityConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SecurityConfig.java index 8fb1cc9a895..d7e81440f72 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SecurityConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SecurityConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import static org.springframework.security.authorization.AuthenticatedAuthorizationManager.fullyAuthenticated; @@ -50,7 +49,7 @@ import org.apache.fineract.notification.service.UserNotificationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.boot.web.server.autoconfigure.ServerProperties; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SecurityValidationConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SecurityValidationConfig.java index 24c5a507d2f..37062498e01 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SecurityValidationConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SecurityValidationConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import jakarta.annotation.PostConstruct; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SpringConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SpringConfig.java index 7f0db741bcd..d2c7c672eea 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SpringConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/SpringConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import java.util.concurrent.ThreadPoolExecutor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/cache/CacheConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/cache/CacheConfig.java index 28db333e0e7..c0c863f366d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/cache/CacheConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/cache/CacheConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config.cache; import static org.apache.fineract.infrastructure.event.external.repository.ExternalEventConfigurationRepository.EXTERNAL_EVENT_CONFIGURATION_CACHE_NAME; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/cache/TransactionBoundCacheManager.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/cache/TransactionBoundCacheManager.java index 713903bd859..feb228028cf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/cache/TransactionBoundCacheManager.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/cache/TransactionBoundCacheManager.java @@ -39,7 +39,8 @@ public void afterBegin() { resetCaches(); } - private void resetCaches() { + @Override + public void resetCaches() { Collection cacheNames = delegate.getCacheNames(); cacheNames.forEach(c -> { Cache cache = delegate.getCache(c); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/jpa/JPAConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/jpa/JPAConfig.java index 29daf8941cb..f9fd09ae55a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/jpa/JPAConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/jpa/JPAConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config.jpa; import java.util.ArrayList; @@ -35,11 +34,11 @@ import org.eclipse.persistence.config.PersistenceUnitProperties; import org.eclipse.persistence.sessions.SessionCustomizer; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.autoconfigure.orm.jpa.EntityManagerFactoryBuilderCustomizer; -import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration; -import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.boot.jpa.EntityManagerFactoryBuilder; +import org.springframework.boot.jpa.autoconfigure.EntityManagerFactoryBuilderCustomizer; +import org.springframework.boot.jpa.autoconfigure.JpaBaseConfiguration; +import org.springframework.boot.jpa.autoconfigure.JpaProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/jpa/JpaTransactionConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/jpa/JpaTransactionConfig.java index 58cb36b5d9f..749eddb0fc5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/jpa/JpaTransactionConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/jpa/JpaTransactionConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config.jpa; import static org.springframework.transaction.TransactionDefinition.PROPAGATION_REQUIRES_NEW; @@ -26,7 +25,7 @@ import org.apache.fineract.infrastructure.core.persistence.ExtendedJpaTransactionManager; import org.apache.fineract.infrastructure.core.persistence.TransactionLifecycleCallback; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers; +import org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizers; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/diagnostics/security/SecurityFilterChainDiagnostics.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/diagnostics/security/SecurityFilterChainDiagnostics.java index 4180f841f14..e5df1209b54 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/diagnostics/security/SecurityFilterChainDiagnostics.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/diagnostics/security/SecurityFilterChainDiagnostics.java @@ -44,8 +44,8 @@ public void afterPropertiesSet() throws Exception { } private void printFilterChain(SecurityFilterChain filterChain) { - if (filterChain instanceof DefaultSecurityFilterChain) { - printDefaultFilterChain((DefaultSecurityFilterChain) filterChain); + if (filterChain instanceof DefaultSecurityFilterChain chain) { + printDefaultFilterChain(chain); } else { printUnknownFilterChain(filterChain); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/DefaultPlatformPasswordEncoder.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/DefaultPlatformPasswordEncoder.java index 9ff42b378d7..8606fe56052 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/DefaultPlatformPasswordEncoder.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/DefaultPlatformPasswordEncoder.java @@ -20,7 +20,6 @@ import org.apache.fineract.infrastructure.security.domain.PlatformUser; import org.apache.fineract.infrastructure.security.service.PlatformPasswordEncoder; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -31,7 +30,6 @@ public class DefaultPlatformPasswordEncoder implements PlatformPasswordEncoder { private final PasswordEncoder passwordEncoder; - @Autowired public DefaultPlatformPasswordEncoder(final PasswordEncoder passwordEncoder) { this.passwordEncoder = passwordEncoder; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyConfig.java index 0bb82fa9506..759acca1aad 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyConfig.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.jersey; import jakarta.annotation.PostConstruct; @@ -25,7 +24,7 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.ext.Provider; import org.apache.fineract.infrastructure.core.api.jersey.PageableParamProvider; -import org.glassfish.jersey.internal.inject.AbstractBinder; +import org.glassfish.jersey.inject.hk2.AbstractBinder; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.server.ServerProperties; import org.glassfish.jersey.server.spi.internal.ValueParamProvider; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyJacksonConverterConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyJacksonConverterConfig.java index 5e52e4dcc1a..795ae793a01 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyJacksonConverterConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyJacksonConverterConfig.java @@ -19,11 +19,6 @@ package org.apache.fineract.infrastructure.core.jersey; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.MapperFeature; -import com.fasterxml.jackson.databind.ObjectMapper; import java.util.ArrayList; import java.util.List; import org.apache.fineract.infrastructure.core.jersey.converter.JsonConverter; @@ -32,27 +27,37 @@ import org.apache.fineract.infrastructure.core.jersey.serializer.legacy.JacksonLocalDateArrayModule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.ValueDeserializer; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.module.SimpleModule; @Configuration public class JerseyJacksonConverterConfig { @Bean - public ObjectMapper objectMapper(List> serializers, List> deserializers, + public JsonMapper objectMapper(List> serializers, List> deserializers, List> jsonConverters) { // Merge JsonConverters with serializers and deserializers - List> mergedSerializers = new ArrayList<>(serializers); + List> mergedSerializers = new ArrayList<>(serializers); mergedSerializers.addAll(jsonConverters.stream().map(JacksonSerializerAdapter::new).toList()); - List> mergedDeserializers = new ArrayList<>(deserializers); + List> mergedDeserializers = new ArrayList<>(deserializers); mergedDeserializers.addAll(jsonConverters.stream().map(JacksonDeserializerAdapter::new).toList()); - ObjectMapper objectMapper = new Jackson2ObjectMapperBuilder() // - .serializers(mergedSerializers.toArray(new JsonSerializer[0])) // - .serializationInclusion(JsonInclude.Include.NON_NULL) // - .deserializers(mergedDeserializers.toArray(new JsonDeserializer[0])) // - .featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) // - .featuresToEnable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS) // - .build(); // - objectMapper.registerModule(new JacksonLocalDateArrayModule()); - return objectMapper; + SimpleModule module = new SimpleModule(); + mergedSerializers.forEach(module::addSerializer); + mergedDeserializers.forEach(d -> { + @SuppressWarnings("unchecked") + Class type = (Class) d.handledType(); + module.addDeserializer(type, (ValueDeserializer) d); + }); + + return JsonMapper.builder() + .changeDefaultPropertyInclusion( + v -> JsonInclude.Value.construct(JsonInclude.Include.NON_NULL, JsonInclude.Include.NON_NULL)) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS) + .addModule(module).addModule(new JacksonLocalDateArrayModule()).build(); } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyJacksonObjectArgumentHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyJacksonObjectArgumentHandler.java index d922789a64e..4f005ff6b10 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyJacksonObjectArgumentHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/JerseyJacksonObjectArgumentHandler.java @@ -33,14 +33,12 @@ import java.io.StringWriter; import java.lang.annotation.Annotation; import java.lang.reflect.Type; -import java.util.List; import lombok.RequiredArgsConstructor; import org.apache.commons.io.IOUtils; -import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.http.converter.json.MappingJacksonInputMessage; import org.springframework.stereotype.Component; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.ObjectMapper; @Provider @Produces(MediaType.APPLICATION_JSON_VALUE) @@ -49,7 +47,7 @@ @RequiredArgsConstructor public class JerseyJacksonObjectArgumentHandler implements MessageBodyReader, MessageBodyWriter { - private final MappingJackson2HttpMessageConverter converter; + private final ObjectMapper objectMapper; @Override public boolean isReadable(Class type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType) { @@ -68,9 +66,8 @@ public T readFrom(Class type, Type genericType, Annotation[] annotations, jak return type.cast(json); } else { // Create the proper type from the JSON - HttpHeaders headers = new HttpHeaders(); - headers.putAll(httpHeaders); - return (T) converter.read(genericType, type, new MappingJacksonInputMessage(entityStream, headers)); + JavaType javaType = objectMapper.constructType(genericType); + return (T) objectMapper.readValue(entityStream, javaType); } } @@ -87,12 +84,7 @@ public void writeTo(T t, Class type, Type genericType, Annotation[] annotatio IOUtils.write((String) t, entityStream, UTF_8); } else { // Create the proper JSON string from the object - HttpHeaders headers = new HttpHeaders(); - httpHeaders.forEach((header, rawValues) -> { - List values = rawValues.stream().map(Object::toString).toList(); - headers.put(header, values); - }); - converter.write(t, genericType, MediaType.APPLICATION_JSON, new SimpleHttpOutputMessage(entityStream, headers)); + objectMapper.writeValue(entityStream, t); } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/DateJsonConverter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/DateJsonConverter.java index 080905ea209..e28874cb8be 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/DateJsonConverter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/DateJsonConverter.java @@ -18,14 +18,14 @@ */ package org.apache.fineract.infrastructure.core.jersey.converter; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; import java.io.IOException; import java.time.Instant; import java.time.format.DateTimeFormatter; import java.util.Date; import org.springframework.stereotype.Component; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; +import tools.jackson.core.JsonToken; @Component public class DateJsonConverter implements JsonConverter { @@ -36,7 +36,7 @@ public class DateJsonConverter implements JsonConverter { public Date convertToObject(JsonParser parser) throws IOException { Date result = null; if (parser.hasToken(JsonToken.VALUE_STRING)) { - String formattedDate = parser.getText(); + String formattedDate = parser.getString(); result = Date.from(Instant.from(FORMATTER.parse(formattedDate))); } return result; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/ExternalIdJsonConverter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/ExternalIdJsonConverter.java index 054715163f0..8bbec80c863 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/ExternalIdJsonConverter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/ExternalIdJsonConverter.java @@ -18,12 +18,12 @@ */ package org.apache.fineract.infrastructure.core.jersey.converter; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; import java.io.IOException; import org.apache.fineract.infrastructure.core.domain.ExternalId; import org.springframework.stereotype.Component; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; +import tools.jackson.core.JsonToken; @Component public class ExternalIdJsonConverter implements JsonConverter { @@ -32,7 +32,7 @@ public class ExternalIdJsonConverter implements JsonConverter { public ExternalId convertToObject(JsonParser parser) throws IOException { ExternalId result = ExternalId.empty(); if (parser.hasToken(JsonToken.VALUE_STRING)) { - String externalId = parser.getText(); + String externalId = parser.getString(); result = new ExternalId(externalId); } return result; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/JsonConverter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/JsonConverter.java index 6aac0d6adcd..5cf8544ae32 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/JsonConverter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/JsonConverter.java @@ -18,10 +18,10 @@ */ package org.apache.fineract.infrastructure.core.jersey.converter; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; import java.io.IOException; import java.io.Serializable; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; public interface JsonConverter extends Serializable { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalDateJsonConverter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalDateJsonConverter.java index 08e9ac02620..c649a5f74a7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalDateJsonConverter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalDateJsonConverter.java @@ -18,12 +18,12 @@ */ package org.apache.fineract.infrastructure.core.jersey.converter; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; import java.io.IOException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; +import tools.jackson.core.JsonToken; // This is registered in the JacksonLocalDateBeanSerializerModifier public class LocalDateJsonConverter implements JsonConverter { @@ -34,7 +34,7 @@ public class LocalDateJsonConverter implements JsonConverter { public LocalDate convertToObject(JsonParser parser) throws IOException { LocalDate result = null; if (parser.hasToken(JsonToken.VALUE_STRING)) { - String formattedDate = parser.getText(); + String formattedDate = parser.getString(); result = LocalDate.parse(formattedDate, FORMATTER); } return result; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalDateTimeJsonConverter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalDateTimeJsonConverter.java index 6c9f2a2846e..a8d8b0b08d6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalDateTimeJsonConverter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalDateTimeJsonConverter.java @@ -18,13 +18,13 @@ */ package org.apache.fineract.infrastructure.core.jersey.converter; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import org.springframework.stereotype.Component; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; +import tools.jackson.core.JsonToken; @Component public class LocalDateTimeJsonConverter implements JsonConverter { @@ -35,7 +35,7 @@ public class LocalDateTimeJsonConverter implements JsonConverter public LocalDateTime convertToObject(JsonParser parser) throws IOException { LocalDateTime result = null; if (parser.hasToken(JsonToken.VALUE_STRING)) { - String formattedDate = parser.getText(); + String formattedDate = parser.getString(); result = LocalDateTime.parse(formattedDate, FORMATTER); } return result; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalTimeJsonConverter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalTimeJsonConverter.java index 20b57480062..c116934ed12 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalTimeJsonConverter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/LocalTimeJsonConverter.java @@ -18,13 +18,13 @@ */ package org.apache.fineract.infrastructure.core.jersey.converter; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; import java.io.IOException; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import org.springframework.stereotype.Component; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; +import tools.jackson.core.JsonToken; @Component public class LocalTimeJsonConverter implements JsonConverter { @@ -35,7 +35,7 @@ public class LocalTimeJsonConverter implements JsonConverter { public LocalTime convertToObject(JsonParser parser) throws IOException { LocalTime result = null; if (parser.hasToken(JsonToken.VALUE_STRING)) { - String formattedDate = parser.getText(); + String formattedDate = parser.getString(); result = LocalTime.parse(formattedDate, FORMATTER); } return result; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/OffsetDateTimeJsonConverter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/OffsetDateTimeJsonConverter.java index 19b0a905960..903a542f0c1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/OffsetDateTimeJsonConverter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/OffsetDateTimeJsonConverter.java @@ -18,13 +18,13 @@ */ package org.apache.fineract.infrastructure.core.jersey.converter; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; import java.io.IOException; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; import org.springframework.stereotype.Component; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; +import tools.jackson.core.JsonToken; @Component public class OffsetDateTimeJsonConverter implements JsonConverter { @@ -35,7 +35,7 @@ public class OffsetDateTimeJsonConverter implements JsonConverter extends JsonDeserializer { +public class JacksonDeserializerAdapter extends ValueDeserializer { private final JsonConverter converter; @Override - public T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JacksonException { - return converter.convertToObject(p); + public T deserialize(JsonParser p, DeserializationContext ctxt) { + try { + return converter.convertToObject(p); + } catch (IOException e) { + throw new UncheckedIOException(e); + } } @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/JacksonLocalDateBeanSerializerModifier.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/JacksonLocalDateBeanSerializerModifier.java index da2ad1c6f61..7e0829a3942 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/JacksonLocalDateBeanSerializerModifier.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/JacksonLocalDateBeanSerializerModifier.java @@ -18,36 +18,36 @@ */ package org.apache.fineract.infrastructure.core.jersey.serializer; -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; -import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; import java.time.LocalDate; import java.util.List; import org.apache.fineract.infrastructure.core.jersey.converter.LocalDateJsonConverter; import org.apache.fineract.infrastructure.core.jersey.serializer.legacy.JacksonLocalDateArraySerializer; import org.apache.fineract.infrastructure.core.jersey.serializer.legacy.JsonLocalDateArrayFormat; +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.ser.BeanPropertyWriter; +import tools.jackson.databind.ser.ValueSerializerModifier; -public class JacksonLocalDateBeanSerializerModifier extends BeanSerializerModifier { +public class JacksonLocalDateBeanSerializerModifier extends ValueSerializerModifier { - private final JsonSerializer localDateSerializer = new JacksonSerializerAdapter<>(new LocalDateJsonConverter()); - private final JsonSerializer localDateArraySerializer = new JacksonLocalDateArraySerializer(); + private final ValueSerializer localDateSerializer = new JacksonSerializerAdapter<>(new LocalDateJsonConverter()); + private final ValueSerializer localDateArraySerializer = new JacksonLocalDateArraySerializer(); @Override @SuppressWarnings("unchecked") - public List changeProperties(SerializationConfig config, BeanDescription beanDesc, + public List changeProperties(SerializationConfig config, BeanDescription.Supplier beanDesc, List beanProperties) { if (beanDesc.getBeanClass().isAnnotationPresent(JsonLocalDateArrayFormat.class)) { - assignLocalDateSerializer(beanProperties, (JsonSerializer) localDateArraySerializer); + assignLocalDateSerializer(beanProperties, (ValueSerializer) localDateArraySerializer); } else { - assignLocalDateSerializer(beanProperties, (JsonSerializer) localDateSerializer); + assignLocalDateSerializer(beanProperties, (ValueSerializer) localDateSerializer); } return beanProperties; } - private void assignLocalDateSerializer(List beanProperties, JsonSerializer serializer) { + private void assignLocalDateSerializer(List beanProperties, ValueSerializer serializer) { for (BeanPropertyWriter writer : beanProperties) { if (LocalDate.class.equals(writer.getType().getRawClass())) { writer.assignSerializer(serializer); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/JacksonSerializerAdapter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/JacksonSerializerAdapter.java index 6363c9ab811..d655998e412 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/JacksonSerializerAdapter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/JacksonSerializerAdapter.java @@ -18,22 +18,27 @@ */ package org.apache.fineract.infrastructure.core.jersey.serializer; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; import java.io.Serializable; +import java.io.UncheckedIOException; import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.jersey.converter.JsonConverter; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; @RequiredArgsConstructor -public class JacksonSerializerAdapter extends JsonSerializer implements Serializable { +public class JacksonSerializerAdapter extends ValueSerializer implements Serializable { private final JsonConverter converter; @Override - public void serialize(T value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - converter.convertToJson(value, gen); + public void serialize(T value, JsonGenerator gen, SerializationContext serializers) { + try { + converter.convertToJson(value, gen); + } catch (IOException e) { + throw new UncheckedIOException(e); + } } @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/MaskedValueSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/MaskedValueSerializer.java index 62a23675fde..b48d3c8fbb3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/MaskedValueSerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/MaskedValueSerializer.java @@ -18,16 +18,15 @@ */ package org.apache.fineract.infrastructure.core.jersey.serializer; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import java.io.IOException; import org.apache.fineract.infrastructure.core.service.StringUtil; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; -public class MaskedValueSerializer extends JsonSerializer { +public class MaskedValueSerializer extends ValueSerializer { @Override - public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + public void serialize(String value, JsonGenerator gen, SerializationContext serializers) { if (value == null || value.isBlank()) { gen.writeString(value); return; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/legacy/JacksonLocalDateArrayModule.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/legacy/JacksonLocalDateArrayModule.java index b0f641a5bf4..94890890323 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/legacy/JacksonLocalDateArrayModule.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/legacy/JacksonLocalDateArrayModule.java @@ -18,8 +18,8 @@ */ package org.apache.fineract.infrastructure.core.jersey.serializer.legacy; -import com.fasterxml.jackson.databind.module.SimpleModule; import org.apache.fineract.infrastructure.core.jersey.serializer.JacksonLocalDateBeanSerializerModifier; +import tools.jackson.databind.module.SimpleModule; public class JacksonLocalDateArrayModule extends SimpleModule { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/legacy/JacksonLocalDateArraySerializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/legacy/JacksonLocalDateArraySerializer.java index 7c2e7455963..56a5f3754c7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/legacy/JacksonLocalDateArraySerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/serializer/legacy/JacksonLocalDateArraySerializer.java @@ -18,17 +18,16 @@ */ package org.apache.fineract.infrastructure.core.jersey.serializer.legacy; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import java.io.IOException; import java.io.Serializable; import java.time.LocalDate; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; -public class JacksonLocalDateArraySerializer extends JsonSerializer implements Serializable { +public class JacksonLocalDateArraySerializer extends ValueSerializer implements Serializable { @Override - public void serialize(LocalDate value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException { + public void serialize(LocalDate value, JsonGenerator gen, SerializationContext serializerProvider) { if (value != null) { gen.writeStartArray(); gen.writeNumber(value.getYear()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/GmailBackedPlatformEmailService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/GmailBackedPlatformEmailService.java index 54db42e16f3..fb5dc4c205d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/GmailBackedPlatformEmailService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/GmailBackedPlatformEmailService.java @@ -22,7 +22,6 @@ import org.apache.fineract.infrastructure.configuration.data.SMTPCredentialsData; import org.apache.fineract.infrastructure.configuration.service.ExternalServicesPropertiesReadPlatformService; import org.apache.fineract.infrastructure.core.domain.EmailDetail; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.stereotype.Service; @@ -32,7 +31,6 @@ public class GmailBackedPlatformEmailService implements PlatformEmailService { private final ExternalServicesPropertiesReadPlatformService externalServicesReadPlatformService; - @Autowired public GmailBackedPlatformEmailService(final ExternalServicesPropertiesReadPlatformService externalServicesReadPlatformService) { this.externalServicesReadPlatformService = externalServicesReadPlatformService; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/DatabaseAwareMigrationContextProvider.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/DatabaseAwareMigrationContextProvider.java index 89357b79f3b..0deabe634d8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/DatabaseAwareMigrationContextProvider.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/DatabaseAwareMigrationContextProvider.java @@ -21,7 +21,6 @@ import java.util.Map; import org.apache.fineract.infrastructure.core.service.database.DatabaseType; import org.apache.fineract.infrastructure.core.service.database.DatabaseTypeResolver; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -32,7 +31,6 @@ public class DatabaseAwareMigrationContextProvider { private final DatabaseTypeResolver databaseTypeResolver; - @Autowired public DatabaseAwareMigrationContextProvider(DatabaseTypeResolver databaseTypeResolver) { this.databaseTypeResolver = databaseTypeResolver; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/ExtendedSpringLiquibaseBuilder.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/ExtendedSpringLiquibaseBuilder.java index 3c9486275c4..0318285d75a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/ExtendedSpringLiquibaseBuilder.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/ExtendedSpringLiquibaseBuilder.java @@ -29,7 +29,7 @@ import java.util.List; import java.util.Map; import javax.sql.DataSource; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties; +import org.springframework.boot.liquibase.autoconfigure.LiquibaseProperties; import org.springframework.core.io.ResourceLoader; public class ExtendedSpringLiquibaseBuilder { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/ExtendedSpringLiquibaseFactory.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/ExtendedSpringLiquibaseFactory.java index 85de2b3c655..1b9fd67b69a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/ExtendedSpringLiquibaseFactory.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/ExtendedSpringLiquibaseFactory.java @@ -19,13 +19,14 @@ package org.apache.fineract.infrastructure.core.service.migration; import javax.sql.DataSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties; +import org.springframework.boot.liquibase.autoconfigure.LiquibaseProperties; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.core.env.Environment; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Component; @Component +@DependsOnDatabaseInitialization public class ExtendedSpringLiquibaseFactory { private final LiquibaseProperties liquibaseProperties; @@ -33,7 +34,6 @@ public class ExtendedSpringLiquibaseFactory { private final Environment environment; private final DatabaseAwareMigrationContextProvider databaseAwareMigrationContextProvider; - @Autowired public ExtendedSpringLiquibaseFactory(LiquibaseProperties liquibaseProperties, ResourceLoader resourceLoader, Environment environment, DatabaseAwareMigrationContextProvider databaseAwareMigrationContextProvider) { this.liquibaseProperties = liquibaseProperties; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseStateVerifier.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseStateVerifier.java index 6ef80b9d0fb..34681731a17 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseStateVerifier.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseStateVerifier.java @@ -24,11 +24,13 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.service.database.DatabaseIndependentQueryService; import org.apache.fineract.infrastructure.core.service.database.DatabaseTypeResolver; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties; +import org.springframework.boot.liquibase.autoconfigure.LiquibaseProperties; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; @Component +@DependsOnDatabaseInitialization @RequiredArgsConstructor public class TenantDatabaseStateVerifier { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java index 9f4e810333c..c1d3115ee1d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/migration/TenantDatabaseUpgradeService.java @@ -34,7 +34,6 @@ import liquibase.change.custom.CustomTaskChange; import liquibase.exception.LiquibaseException; import liquibase.integration.spring.SpringLiquibase; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.core.boot.FineractProfiles; import org.apache.fineract.infrastructure.core.config.FineractProperties; @@ -43,6 +42,7 @@ import org.apache.fineract.infrastructure.core.service.tenant.TenantDetailsService; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.core.env.Environment; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; @@ -50,9 +50,9 @@ /** * A service that picks up on tenants that are configured to auto-update their specific schema on application startup. */ +@DependsOnDatabaseInitialization @Service @Slf4j -@RequiredArgsConstructor public class TenantDatabaseUpgradeService implements InitializingBean { public static final String TENANT_STORE_DB_CONTEXT = "tenant_store_db"; @@ -61,7 +61,6 @@ public class TenantDatabaseUpgradeService implements InitializingBean { public static final String CUSTOM_CHANGELOG_CONTEXT = "custom_changelog"; private final TenantDetailsService tenantDetailsService; - @Qualifier("hikariTenantDataSource") private final DataSource tenantDataSource; private final FineractProperties fineractProperties; private final TenantDatabaseStateVerifier databaseStateVerifier; @@ -76,6 +75,21 @@ public class TenantDatabaseUpgradeService implements InitializingBean { System.setProperty("liquibase.analytics.enabled", "false"); } + public TenantDatabaseUpgradeService(final TenantDetailsService tenantDetailsService, + @Qualifier("hikariTenantDataSource") final DataSource tenantDataSource, final FineractProperties fineractProperties, + final TenantDatabaseStateVerifier databaseStateVerifier, final ExtendedSpringLiquibaseFactory liquibaseFactory, + final TenantDataSourceFactory tenantDataSourceFactory, final Environment environment, + final List customTaskChangesForDependencyInjection) { + this.tenantDetailsService = tenantDetailsService; + this.tenantDataSource = tenantDataSource; + this.fineractProperties = fineractProperties; + this.databaseStateVerifier = databaseStateVerifier; + this.liquibaseFactory = liquibaseFactory; + this.tenantDataSourceFactory = tenantDataSourceFactory; + this.environment = environment; + this.customTaskChangesForDependencyInjection = customTaskChangesForDependencyInjection; + } + @Override public void afterPropertiesSet() throws Exception { if (notLiquibaseOnlyMode()) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauConfigurationApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauConfigurationApiResource.java index 46a7f69c62f..a46446ea394 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauConfigurationApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauConfigurationApiResource.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.creditbureau.api; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauIntegrationApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauIntegrationApiResource.java index 9fef17067ee..52d4d8d6b6d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauIntegrationApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/api/CreditBureauIntegrationApiResource.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.creditbureau.api; import com.google.gson.Gson; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauReportData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauReportData.java index d674aed97d2..be30fcf2658 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauReportData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauReportData.java @@ -16,9 +16,9 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.creditbureau.data; +import java.io.Serial; import java.io.Serializable; import lombok.Data; import lombok.NoArgsConstructor; @@ -29,6 +29,7 @@ @Accessors(chain = true) public final class CreditBureauReportData implements Serializable { + @Serial private static final long serialVersionUID = 1L; @SuppressWarnings("unused") private String name; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditReportData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditReportData.java index b13e5b4239a..a252ea47eab 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditReportData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditReportData.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.infrastructure.creditbureau.data; +import java.io.Serial; import java.io.Serializable; import lombok.Data; import lombok.NoArgsConstructor; @@ -28,6 +29,7 @@ @Accessors(chain = true) public final class CreditReportData implements Serializable { + @Serial private static final long serialVersionUID = 1L; private Long id; @SuppressWarnings("unused") diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditReportReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditReportReadPlatformServiceImpl.java index 0c5c95f7178..a64fa659a15 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditReportReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditReportReadPlatformServiceImpl.java @@ -23,7 +23,6 @@ import java.util.Collection; import org.apache.fineract.infrastructure.creditbureau.service.CreditReportReadPlatformService; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @@ -34,7 +33,6 @@ public class CreditReportReadPlatformServiceImpl implements CreditReportReadPlat private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; - @Autowired public CreditReportReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate) { this.context = context; this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfigurationRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfigurationRepositoryWrapper.java index 80d974962fb..3f57c9cf6dc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfigurationRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfigurationRepositoryWrapper.java @@ -18,7 +18,6 @@ */ package org.apache.fineract.infrastructure.creditbureau.domain; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -26,7 +25,6 @@ public class CreditBureauConfigurationRepositoryWrapper { private final CreditBureauConfigurationRepository creditBureauConfigurationRepository; - @Autowired public CreditBureauConfigurationRepositoryWrapper(final CreditBureauConfigurationRepository creditBureauConfigurationRepository) { this.creditBureauConfigurationRepository = creditBureauConfigurationRepository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauToken.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauToken.java index ba536c027f3..b5d21de9df1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauToken.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauToken.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.creditbureau.domain; import jakarta.persistence.Column; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/TokenRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/TokenRepository.java index 491ec81f8f5..0c3fe13a1e3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/TokenRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/TokenRepository.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.creditbureau.domain; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/TokenRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/TokenRepositoryWrapper.java index 28f437fa4b1..06db15b4744 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/TokenRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/TokenRepositoryWrapper.java @@ -16,11 +16,9 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.creditbureau.domain; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -29,7 +27,6 @@ public class TokenRepositoryWrapper { private final TokenRepository repository; private final PlatformSecurityContext context; - @Autowired public TokenRepositoryWrapper(final TokenRepository repository, final PlatformSecurityContext context) { this.repository = repository; this.context = context; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/exception/CreditReportNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/exception/CreditReportNotFoundException.java index 9db8ce42d4e..87ac5d2eb45 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/exception/CreditReportNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/exception/CreditReportNotFoundException.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.creditbureau.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauCommandFromApiJsonDeserializer.java index 37ead7e6d61..7a0e8a12d0d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauCommandFromApiJsonDeserializer.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -46,7 +45,6 @@ public class CreditBureauCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; - @Autowired public CreditBureauCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauConfigurationCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauConfigurationCommandFromApiJsonDeserializer.java index 5f95c5952ea..18e3e22d611 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauConfigurationCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauConfigurationCommandFromApiJsonDeserializer.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -45,7 +44,6 @@ public final class CreditBureauConfigurationCommandFromApiJsonDeserializer { private static final Set SUPPORTED_PARAMETERS = new HashSet<>(Arrays.asList(CONFIGKEY, VALUE, DESCRIPTION)); private final FromJsonHelper fromApiJsonHelper; - @Autowired public CreditBureauConfigurationCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauLoanProductCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauLoanProductCommandFromApiJsonDeserializer.java index 102da35ba3f..0c5377b9601 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauLoanProductCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauLoanProductCommandFromApiJsonDeserializer.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -51,7 +50,6 @@ public class CreditBureauLoanProductCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; - @Autowired public CreditBureauLoanProductCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauTokenCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauTokenCommandFromApiJsonDeserializer.java index 52c8e2d73dc..9797bd1e860 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauTokenCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/serialization/CreditBureauTokenCommandFromApiJsonDeserializer.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.creditbureau.serialization; import com.google.gson.JsonElement; @@ -34,7 +33,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -55,7 +53,6 @@ public class CreditBureauTokenCommandFromApiJsonDeserializer { Arrays.asList(USER_NAME, PASSWORD, SUBSCRIPTION_ID, SUBSCRIPTION_KEY)); private final FromJsonHelper fromApiJsonHelper; - @Autowired public CreditBureauTokenCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauConfigurationWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauConfigurationWritePlatformServiceImpl.java index a2d80c6a121..4f5b21d7421 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauConfigurationWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauConfigurationWritePlatformServiceImpl.java @@ -30,7 +30,6 @@ import org.apache.fineract.infrastructure.creditbureau.exception.CreditReportNotFoundException; import org.apache.fineract.infrastructure.creditbureau.serialization.CreditBureauConfigurationCommandFromApiJsonDeserializer; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; @@ -47,7 +46,6 @@ public class CreditBureauConfigurationWritePlatformServiceImpl implements Credit private final OrganisationCreditBureauRepository organisationCreditBureauRepository; - @Autowired public CreditBureauConfigurationWritePlatformServiceImpl(final PlatformSecurityContext context, final CreditBureauConfigurationCommandFromApiJsonDeserializer fromApiJsonDeserializer, final CreditBureauConfigurationRepository creditBureauConfigurationRepository, diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingReadPlatformServiceImpl.java index b261548712b..5277ee9071a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingReadPlatformServiceImpl.java @@ -23,7 +23,6 @@ import java.util.Collection; import org.apache.fineract.infrastructure.creditbureau.data.CreditBureauLoanProductMappingData; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @@ -34,7 +33,6 @@ public class CreditBureauLoanProductMappingReadPlatformServiceImpl implements Cr private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; - @Autowired public CreditBureauLoanProductMappingReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate) { this.context = context; this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingWritePlatformServiceImpl.java index 2b36084a123..7f508c5b52d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauLoanProductMappingWritePlatformServiceImpl.java @@ -29,7 +29,6 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct; import org.apache.fineract.portfolio.loanproduct.domain.LoanProductRepository; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -46,7 +45,6 @@ public class CreditBureauLoanProductMappingWritePlatformServiceImpl implements C private final CreditBureauLoanProductCommandFromApiJsonDeserializer fromApiJsonDeserializer; - @Autowired public CreditBureauLoanProductMappingWritePlatformServiceImpl(final PlatformSecurityContext context, final CreditBureauLoanProductMappingRepository creditBureauLoanProductMappingRepository, final OrganisationCreditBureauRepository organisationCreditBureauRepository, LoanProductRepository loanProductRepository, diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadConfigurationService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadConfigurationService.java index 86dd195c3dc..9f5940f4cc6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadConfigurationService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadConfigurationService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.creditbureau.service; import java.util.Collection; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadConfigurationServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadConfigurationServiceImpl.java index 2f619703724..94cedac3ebf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadConfigurationServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadConfigurationServiceImpl.java @@ -26,7 +26,6 @@ import java.util.Map; import org.apache.fineract.infrastructure.creditbureau.data.CreditBureauConfigurationData; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @@ -37,7 +36,6 @@ public class CreditBureauReadConfigurationServiceImpl implements CreditBureauRea private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; - @Autowired public CreditBureauReadConfigurationServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate) { this.context = context; this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadPlatformServiceImpl.java index 152736a69d6..746b9b2ef0f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditBureauReadPlatformServiceImpl.java @@ -23,7 +23,6 @@ import java.util.Collection; import org.apache.fineract.infrastructure.creditbureau.data.CreditBureauData; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @@ -34,7 +33,6 @@ public class CreditBureauReadPlatformServiceImpl implements CreditBureauReadPlat private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; - @Autowired public CreditBureauReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate) { this.context = context; this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditReportWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditReportWritePlatformServiceImpl.java index c0a63c7be89..fb82ed9fbaf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditReportWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/CreditReportWritePlatformServiceImpl.java @@ -42,7 +42,6 @@ import org.apache.fineract.infrastructure.creditbureau.domain.CreditReportRepository; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; @@ -59,7 +58,6 @@ public class CreditReportWritePlatformServiceImpl implements CreditReportWritePl private final CreditReportRepository creditReportRepository; private final ExternalCreditBureauIntegrationWritePlatformService externalCreditBureauIntegrationWritePlatformService; - @Autowired public CreditReportWritePlatformServiceImpl(final PlatformSecurityContext context, final CreditBureauRepository creditBureauRepository, final CreditReportRepository creditReportRepository, final ExternalCreditBureauIntegrationWritePlatformService externalCreditBureauIntegrationWritePlatformService) { @@ -136,7 +134,7 @@ private String getCreditBureauName(Long creditBureauID) { if (creditBureauID != null) { Optional creditBureau = this.creditBureauRepository.findById(creditBureauID); - if (!creditBureau.isEmpty()) { + if (creditBureau.isPresent()) { return creditBureau.get().getName(); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/ExternalCreditBureauIntegrationWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/ExternalCreditBureauIntegrationWritePlatformServiceImpl.java index 64c52a7248c..9eea963d570 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/ExternalCreditBureauIntegrationWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/ExternalCreditBureauIntegrationWritePlatformServiceImpl.java @@ -66,7 +66,7 @@ import org.apache.fineract.infrastructure.creditbureau.serialization.CreditBureauTokenCommandFromApiJsonDeserializer; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauReadPlatformServiceImpl.java index 9bb302a6960..db25523e8de 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauReadPlatformServiceImpl.java @@ -23,7 +23,6 @@ import java.util.Collection; import org.apache.fineract.infrastructure.creditbureau.data.OrganisationCreditBureauData; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @@ -34,7 +33,6 @@ public class OrganisationCreditBureauReadPlatformServiceImpl implements Organisa private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; - @Autowired public OrganisationCreditBureauReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate) { this.context = context; this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauWritePlatflormServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauWritePlatflormServiceImpl.java index c7650661c72..0a2b8a59dfe 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauWritePlatflormServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/service/OrganisationCreditBureauWritePlatflormServiceImpl.java @@ -27,7 +27,6 @@ import org.apache.fineract.infrastructure.creditbureau.domain.OrganisationCreditBureauRepository; import org.apache.fineract.infrastructure.creditbureau.serialization.CreditBureauCommandFromApiJsonDeserializer; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,7 +41,6 @@ public class OrganisationCreditBureauWritePlatflormServiceImpl implements Organi private final CreditBureauCommandFromApiJsonDeserializer fromApiJsonDeserializer; - @Autowired public OrganisationCreditBureauWritePlatflormServiceImpl(final PlatformSecurityContext context, final OrganisationCreditBureauRepository organisationCreditBureauRepository, final CreditBureauRepository creditBureauRepository, final CreditBureauCommandFromApiJsonDeserializer fromApiJsonDeserializer) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportRepositoryWrapper.java index ef22cb23c4b..27d5431eb51 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.infrastructure.dataqueries.domain; import org.apache.fineract.infrastructure.dataqueries.exception.ReportNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -31,7 +30,6 @@ public class ReportRepositoryWrapper { private final ReportRepository reportRepository; - @Autowired public ReportRepositoryWrapper(final ReportRepository reportRepository) { this.reportRepository = reportRepository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/serialization/ReportCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/serialization/ReportCommandFromApiJsonDeserializer.java index c9fdf00f0c0..ccd93cbd09b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/serialization/ReportCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/serialization/ReportCommandFromApiJsonDeserializer.java @@ -27,7 +27,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -41,7 +40,6 @@ public final class ReportCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; - @Autowired public ReportCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadServiceImpl.java index 5d38c4a9a2e..f36fd0e4806 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadServiceImpl.java @@ -41,13 +41,13 @@ import org.apache.fineract.portfolio.search.data.AdvancedQueryData; import org.apache.fineract.portfolio.search.data.ColumnFilterData; import org.apache.fineract.portfolio.search.service.SearchUtil; +import org.jspecify.annotations.NonNull; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.support.PageableExecutionUtils; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; -import org.springframework.lang.NonNull; import org.springframework.transaction.annotation.Transactional; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableUtil.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableUtil.java index e4c68b6b3cd..10cc56d959d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableUtil.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableUtil.java @@ -45,9 +45,9 @@ import org.apache.fineract.infrastructure.security.service.SqlValidator; import org.apache.fineract.portfolio.search.service.SearchUtil; import org.apache.fineract.useradministration.domain.AppUser; +import org.jspecify.annotations.NonNull; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableWriteServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableWriteServiceImpl.java index d28916bf3cf..522e6d760b2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableWriteServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableWriteServiceImpl.java @@ -105,13 +105,13 @@ import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.search.service.SearchUtil; +import org.jspecify.annotations.NonNull; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.support.GeneratedKeyHolder; -import org.springframework.lang.NonNull; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.transaction.annotation.Transactional; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/EntityDatatableChecksDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/EntityDatatableChecksDataValidator.java index abed6d81715..45bca7d3b86 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/EntityDatatableChecksDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/EntityDatatableChecksDataValidator.java @@ -36,7 +36,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.dataqueries.data.EntityTables; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -54,7 +53,6 @@ public final class EntityDatatableChecksDataValidator { Arrays.asList(ENTITY, API_PARAM_DATATABLE_NAME, STATUS, SYSTEM_DEFINED, PRODUCT_ID)); private final FromJsonHelper fromApiJsonHelper; - @Autowired public EntityDatatableChecksDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/EntityDatatableChecksReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/EntityDatatableChecksReadPlatformServiceImpl.java index f3ac77f6a07..45a2cf6c86f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/EntityDatatableChecksReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/EntityDatatableChecksReadPlatformServiceImpl.java @@ -44,9 +44,9 @@ import org.apache.fineract.portfolio.loanproduct.service.LoanProductReadPlatformService; import org.apache.fineract.portfolio.savings.data.SavingsProductData; import org.apache.fineract.portfolio.savings.service.SavingsProductReadPlatformService; +import org.jspecify.annotations.NonNull; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; @Service diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java index 76aacc6c452..c12dd627eb0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataServiceImpl.java @@ -48,13 +48,15 @@ import org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnValueData; import org.apache.fineract.infrastructure.dataqueries.data.ResultsetRowData; import org.apache.fineract.infrastructure.dataqueries.exception.DatatableNotFoundException; +import org.jspecify.annotations.NonNull; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; import org.springframework.jdbc.support.rowset.SqlRowSetMetaData; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; +@DependsOnDatabaseInitialization @Service @Slf4j @RequiredArgsConstructor @@ -188,8 +190,7 @@ private static List fillResultsetRowData(SqlRowSet rs, List map = new ObjectMapper().readValue(payload, HashMap.class); + final HashMap map = new JsonMapper().readValue(payload, HashMap.class); map.put("BASE_URI", System.getProperty("baseUrl")); if (map.containsKey("clientId")) { final Long clientId = Long.valueOf(Integer.toString((int) map.get("clientId"))); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/ScheduledJobRunnerConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/ScheduledJobRunnerConfig.java index 6b03b518d02..54931424610 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/ScheduledJobRunnerConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/ScheduledJobRunnerConfig.java @@ -20,14 +20,19 @@ import org.apache.fineract.infrastructure.core.service.database.RoutingDataSource; import org.apache.fineract.infrastructure.jobs.config.FineractDataFieldMaxValueIncrementerFactory; +import org.springframework.batch.core.configuration.JobLocator; +import org.springframework.batch.core.configuration.JobRegistry; import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.explore.JobExplorer; -import org.springframework.batch.core.explore.support.JobExplorerFactoryBean; +import org.springframework.batch.core.configuration.support.MapJobRegistry; +import org.springframework.batch.core.job.Job; +import org.springframework.batch.core.launch.NoSuchJobException; import org.springframework.batch.core.launch.support.TaskExecutorJobLauncher; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer; +import org.springframework.batch.core.repository.explore.JobExplorer; +import org.springframework.batch.core.repository.explore.support.JobExplorerFactoryBean; import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean; -import org.springframework.batch.item.database.support.DataFieldMaxValueIncrementerFactory; +import org.springframework.batch.infrastructure.item.database.support.DataFieldMaxValueIncrementerFactory; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -89,4 +94,27 @@ public TaskExecutorJobLauncher jobLauncher(JobRepository jobRepository) throws E launcher.afterPropertiesSet(); return launcher; } + + // Spring Batch 6 (Spring Boot 4) auto-registers all Job beans in a JobRegistry via + // @EnableBatchProcessing, but re-declare the JobRegistry explicitly to guarantee a single + // shared MapJobRegistry instance, since code such as InlineLoanCOBExecutorServiceImpl depends on it. + @Bean + public JobRegistry jobRegistry() { + return new MapJobRegistry(); + } + + // Spring Batch 6's JobRegistry no longer extends JobLocator (unlike Spring Batch 5.x), and + // MapJobRegistry#getJob() now returns null instead of throwing NoSuchJobException. Adapt the + // JobRegistry bean above to a JobLocator to restore the previous contract, since code such as + // InlineLoanCOBExecutorServiceImpl depends on JobLocator and catches NoSuchJobException. + @Bean + public JobLocator jobLocator(JobRegistry jobRegistry) { + return jobName -> { + Job job = jobRegistry.getJob(jobName); + if (job == null) { + throw new NoSuchJobException("No job configuration with the name [" + jobName + "] was registered"); + } + return job; + }; + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/config/FineractDataFieldMaxValueIncrementerFactory.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/config/FineractDataFieldMaxValueIncrementerFactory.java index 796310d8c23..7b3400828e8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/config/FineractDataFieldMaxValueIncrementerFactory.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/config/FineractDataFieldMaxValueIncrementerFactory.java @@ -18,16 +18,16 @@ */ package org.apache.fineract.infrastructure.jobs.config; -import static org.springframework.batch.support.DatabaseType.MARIADB; -import static org.springframework.batch.support.DatabaseType.MYSQL; -import static org.springframework.batch.support.DatabaseType.POSTGRES; +import static org.springframework.batch.infrastructure.support.DatabaseType.MARIADB; +import static org.springframework.batch.infrastructure.support.DatabaseType.MYSQL; +import static org.springframework.batch.infrastructure.support.DatabaseType.POSTGRES; import java.util.List; import java.util.Locale; import javax.sql.DataSource; import lombok.RequiredArgsConstructor; -import org.springframework.batch.item.database.support.DataFieldMaxValueIncrementerFactory; -import org.springframework.batch.support.DatabaseType; +import org.springframework.batch.infrastructure.item.database.support.DataFieldMaxValueIncrementerFactory; +import org.springframework.batch.infrastructure.support.DatabaseType; import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer; import org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer; import org.springframework.jdbc.support.incrementer.PostgresSequenceMaxValueIncrementer; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/data/JobDetailDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/data/JobDetailDataValidator.java index 90682c06973..6224db5cdc0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/data/JobDetailDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/data/JobDetailDataValidator.java @@ -34,7 +34,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -45,7 +44,6 @@ public class JobDetailDataValidator { Arrays.asList(SchedulerJobApiConstants.displayNameParamName, SchedulerJobApiConstants.jobActiveStatusParamName, SchedulerJobApiConstants.cronExpressionParamName)); - @Autowired public JobDetailDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/JobNodeIdMismatchingException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/JobNodeIdMismatchingException.java index 1bb5c6dc782..34061d34c9e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/JobNodeIdMismatchingException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/JobNodeIdMismatchingException.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.jobs.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/COBApiFilter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/COBApiFilter.java index 567aab8f883..e42bac1d4f4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/COBApiFilter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/COBApiFilter.java @@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.http.BodyCachingHttpServletRequestWrapper; import org.apache.fineract.infrastructure.jobs.exception.LoanIdsHardLockedException; import org.apache.fineract.useradministration.exception.UnAuthenticatedUserException; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException; import org.springframework.web.filter.OncePerRequestFilter; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/COBFilterApiMatcher.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/COBFilterApiMatcher.java index d837252626d..169910f3e65 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/COBFilterApiMatcher.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/COBFilterApiMatcher.java @@ -20,17 +20,19 @@ import static org.apache.fineract.batch.command.CommandStrategyUtils.isRelativeUrlVersioned; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.infrastructure.core.http.BodyCachingHttpServletRequestWrapper; +import tools.jackson.core.json.JsonReadFeature; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public abstract class COBFilterApiMatcher implements COBFilterHelper { - protected final ObjectMapper objectMapper = new ObjectMapper(); + protected final ObjectMapper objectMapper = JsonMapper.builder().enable(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS).build(); @Override public boolean isOnApiList(BodyCachingHttpServletRequestWrapper request) throws IOException { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBFilterHelperImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBFilterHelperImpl.java index fc3543acbf5..234c3f57387 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBFilterHelperImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBFilterHelperImpl.java @@ -16,12 +16,8 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.jobs.filter; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.json.JsonReadFeature; -import com.fasterxml.jackson.databind.JsonNode; import com.google.common.collect.Lists; import java.io.IOException; import java.math.BigDecimal; @@ -51,16 +47,16 @@ import org.apache.fineract.portfolio.loanaccount.domain.GLIMAccountInfoRepository; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequestRepository; -import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Conditional; import org.springframework.http.HttpMethod; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import tools.jackson.databind.JsonNode; @RequiredArgsConstructor @Component @Conditional(LoanCOBEnabledCondition.class) -public class LoanCOBFilterHelperImpl extends COBFilterApiMatcher implements LoanCOBFilterHelper, InitializingBean { +public class LoanCOBFilterHelperImpl extends COBFilterApiMatcher implements LoanCOBFilterHelper { private final GLIMAccountInfoRepository glimAccountInfoRepository; private final LoanAccountLockService loanAccountLockService; @@ -191,7 +187,7 @@ private List getLoanIdsFromBatchApi(BodyCachingHttpServletRequestWrapper r return loanIds; } - private Long getTopLevelLoanIdFromBatchRequest(BatchRequest batchRequest) throws JsonProcessingException { + private Long getTopLevelLoanIdFromBatchRequest(BatchRequest batchRequest) { String body = batchRequest.getBody(); if (StringUtils.isNotBlank(body)) { JsonNode jsonNode = objectMapper.readTree(body); @@ -229,9 +225,4 @@ public void executeInlineCob(List loanIds) { inlineLoanCOBExecutorService.execute(loanIds, LoanCOBConstant.INLINE_LOAN_COB_JOB_NAME); } - @Override - public void afterPropertiesSet() throws Exception { - objectMapper.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), true); - } - } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBApiFilter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBApiFilter.java index d30c970ee10..e0efcc6573e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBApiFilter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBApiFilter.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.jobs.filter; import org.apache.fineract.cob.conditions.LoanCOBEnabledCondition; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBFilterHelper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBFilterHelper.java index f03f8aebdf9..c8587df3f50 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBFilterHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBFilterHelper.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.jobs.filter; public interface WorkingCapitalLoanCOBFilterHelper extends COBFilterHelper {} diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBFilterHelperImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBFilterHelperImpl.java index bdfa252d898..f046bd29e1d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBFilterHelperImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/filter/WorkingCapitalLoanCOBFilterHelperImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.jobs.filter; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java index a832c7311be..b092d1d6cd1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java @@ -48,9 +48,8 @@ import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.TriggerListener; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.configuration.JobLocator; -import org.springframework.batch.core.launch.NoSuchJobException; +import org.springframework.batch.core.configuration.JobRegistry; +import org.springframework.batch.core.job.Job; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextClosedEvent; @@ -84,7 +83,7 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi private FineractProperties fineractProperties; @Autowired - private JobLocator jobLocator; + private JobRegistry jobLocator; @Autowired private JobStarter jobStarter; @@ -335,11 +334,9 @@ private JobDetail createJobDetail(final ScheduledJobDetail scheduledJobDetail, S final FineractPlatformTenant tenant = ThreadLocalContextUtil.getTenant(); JobNameData jobName = jobNameService.getJobByHumanReadableName(scheduledJobDetail.getJobName()); - Job job; - try { - job = jobLocator.getJob(jobName.getEnumStyleName()); - } catch (NoSuchJobException e) { - throw new JobIsNotFoundOrNotEnabledException(e, jobName.getEnumStyleName()); + Job job = jobLocator.getJob(jobName.getEnumStyleName()); + if (job == null) { + throw new JobIsNotFoundOrNotEnabledException(jobName.getEnumStyleName()); } final MethodInvokingJobDetailFactoryBean jobDetailFactoryBean = new MethodInvokingJobDetailFactoryBean(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobStarter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobStarter.java index df917536588..3e8f0434e38 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobStarter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobStarter.java @@ -18,17 +18,12 @@ */ package org.apache.fineract.infrastructure.jobs.service; -import java.time.LocalDate; import java.util.Collections; -import java.util.HashMap; +import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType; import org.apache.fineract.infrastructure.businessdate.service.BusinessDateReadPlatformService; import org.apache.fineract.infrastructure.core.domain.ActionContext; import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant; @@ -43,41 +38,39 @@ import org.apache.fineract.useradministration.domain.AppUserRepositoryWrapper; import org.quartz.JobExecutionException; import org.springframework.batch.core.BatchStatus; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobParameter; -import org.springframework.batch.core.JobParameters; -import org.springframework.batch.core.JobParametersBuilder; -import org.springframework.batch.core.JobParametersInvalidException; -import org.springframework.batch.core.explore.JobExplorer; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException; -import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException; -import org.springframework.batch.core.repository.JobRestartException; +import org.springframework.batch.core.job.Job; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.parameters.InvalidJobParametersException; +import org.springframework.batch.core.job.parameters.JobParameter; +import org.springframework.batch.core.job.parameters.JobParameters; +import org.springframework.batch.core.launch.JobExecutionAlreadyRunningException; +import org.springframework.batch.core.launch.JobInstanceAlreadyCompleteException; +import org.springframework.batch.core.launch.JobOperator; +import org.springframework.batch.core.launch.JobRestartException; +import org.springframework.batch.core.repository.JobRepository; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; @Component -@Slf4j @RequiredArgsConstructor public class JobStarter { - private final JobExplorer jobExplorer; - private final JobLauncher jobLauncher; + private final JobOperator jobLauncher; private final JobParameterRepository jobParameterRepository; private final List> jobParameterProviders; private final JobNameService jobNameService; private final TenantDetailsService tenantDetailsService; private final AppUserRepositoryWrapper userRepository; private final BusinessDateReadPlatformService businessDateReadPlatformService; + private final JobRepository jobRepository; public static final List FAILED_STATUSES = List.of(BatchStatus.FAILED, BatchStatus.ABANDONED, BatchStatus.STOPPED, BatchStatus.STOPPING, BatchStatus.UNKNOWN); public JobExecution run(Job job, ScheduledJobDetail scheduledJobDetail, Set jobParameterDTOSet, String tenantIdentifier) throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, - JobParametersInvalidException, JobRestartException, JobExecutionException { + InvalidJobParametersException, JobRestartException, JobExecutionException { boolean contextInitialized = false; final FineractPlatformTenant existingTenant = ThreadLocalContextUtil.getTenant(); @@ -91,18 +84,15 @@ public JobExecution run(Job job, ScheduledJobDetail scheduledJobDetail, Set businessDates = businessDateReadPlatformService.getBusinessDates(); + var businessDates = businessDateReadPlatformService.getBusinessDates(); ThreadLocalContextUtil.setActionContext(ActionContext.DEFAULT); ThreadLocalContextUtil.setBusinessDates(businessDates); } - Map> jobParameterMap = getJobParameter(scheduledJobDetail); - JobParameters jobParameters = new JobParametersBuilder(jobExplorer).getNextJobParameters(job) - .addJobParameters(new JobParameters(jobParameterMap)) - .addJobParameters(new JobParameters(provideCustomJobParameters( - jobNameService.getJobByHumanReadableName(scheduledJobDetail.getJobName()).getEnumStyleName(), - jobParameterDTOSet))) - .toJobParameters(); + Set> params = new HashSet<>(getJobParameter(scheduledJobDetail)); + params.addAll(provideCustomJobParameters( + jobNameService.getJobByHumanReadableName(scheduledJobDetail.getJobName()).getEnumStyleName(), jobParameterDTOSet)); + JobParameters jobParameters = NextJobParametersResolver.getNextJobParameters(jobRepository, job, new JobParameters(params)); JobExecution result = jobLauncher.run(job, jobParameters); if (FAILED_STATUSES.contains(result.getStatus())) { throw new JobExecutionException(result.getExitStatus().toString()); @@ -115,21 +105,20 @@ public JobExecution run(Job job, ScheduledJobDetail scheduledJobDetail, Set> getJobParameter(ScheduledJobDetail scheduledJobDetail) { + protected Set> getJobParameter(ScheduledJobDetail scheduledJobDetail) { List jobParameterList = jobParameterRepository .findJobParametersByJobId(scheduledJobDetail.getId()); - Map> jobParameterMap = new HashMap<>(); + Set> params = new HashSet<>(); for (org.apache.fineract.infrastructure.jobs.domain.JobParameter jobParameter : jobParameterList) { - jobParameterMap.put(jobParameter.getParameterName(), new JobParameter<>(jobParameter.getParameterValue(), String.class)); + params.add(new JobParameter<>(jobParameter.getParameterName(), jobParameter.getParameterValue(), String.class)); } - return jobParameterMap; + return params; } - protected Map> provideCustomJobParameters(String jobName, Set jobParameterDTOSet) { + protected Set> provideCustomJobParameters(String jobName, Set jobParameterDTOSet) { Optional> jobParameterProvider = jobParameterProviders.stream() .filter(provider -> provider.canProvideParametersForJob(jobName)).findFirst(); - Map> map = jobParameterProvider - .map(parameterProvider -> parameterProvider.provide(jobParameterDTOSet)).orElse(Collections.emptyMap()); - return map.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + return jobParameterProvider.>>map(provider -> new HashSet<>(provider.provide(jobParameterDTOSet))) + .orElse(Collections.emptySet()); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/NextJobParametersResolver.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/NextJobParametersResolver.java new file mode 100644 index 00000000000..688e1fc5ad4 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/NextJobParametersResolver.java @@ -0,0 +1,58 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.infrastructure.jobs.service; + +import org.springframework.batch.core.job.Job; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.JobInstance; +import org.springframework.batch.core.job.parameters.JobParameters; +import org.springframework.batch.core.job.parameters.JobParametersBuilder; +import org.springframework.batch.core.job.parameters.JobParametersIncrementer; +import org.springframework.batch.core.repository.JobRepository; + +/** + * Spring Batch 6's {@link org.springframework.batch.core.launch.JobOperator#start(Job, JobParameters)} silently ignores + * the passed {@link JobParameters} whenever the job defines a {@link JobParametersIncrementer}, delegating to + * {@code startNextInstance(job)} instead. Fineract's job launchers still need to pass their own parameters (e.g. custom + * job parameter ids, business dates) while jobs are identified with a {@code RunIdIncrementer}, so this replicates + * {@code SimpleJobOperator.startNextInstance}'s incrementer logic and merges Fineract's parameters on top, so the + * result can be run directly through {@link org.springframework.batch.core.launch.JobLauncher#run(Job, JobParameters)} + * (also inherited by {@link org.springframework.batch.core.launch.JobOperator}). + */ +public final class NextJobParametersResolver { + + private NextJobParametersResolver() {} + + public static JobParameters getNextJobParameters(JobRepository jobRepository, Job job, JobParameters jobParameters) { + JobParametersIncrementer incrementer = job.getJobParametersIncrementer(); + if (incrementer == null) { + return jobParameters; + } + JobInstance lastInstance = jobRepository.getLastJobInstance(job.getName()); + JobParameters previousParameters; + if (lastInstance == null) { + previousParameters = new JobParameters(); + } else { + JobExecution previousExecution = jobRepository.getLastJobExecution(lastInstance); + previousParameters = previousExecution == null ? new JobParameters() : previousExecution.getJobParameters(); + } + JobParameters nextParameters = incrementer.getNext(previousParameters); + return new JobParametersBuilder(nextParameters).addJobParameters(jobParameters).toJobParameters(); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedularWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedularWritePlatformServiceJpaRepositoryImpl.java index 836b41f18a4..9af79157d4b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedularWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedularWritePlatformServiceJpaRepositoryImpl.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.jobs.domain.SchedulerDetail; import org.apache.fineract.infrastructure.jobs.domain.SchedulerDetailRepository; import org.apache.fineract.infrastructure.jobs.exception.JobNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -49,7 +48,6 @@ public class SchedularWritePlatformServiceJpaRepositoryImpl implements Schedular private final JobDetailDataValidator dataValidator; - @Autowired public SchedularWritePlatformServiceJpaRepositoryImpl(final ScheduledJobDetailRepository scheduledJobDetailsRepository, final ScheduledJobRunHistoryRepository scheduledJobRunHistoryRepository, final JobDetailDataValidator dataValidator, final SchedulerDetailRepository schedulerDetailRepository) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java index bd708b125fb..fd8b79f2936 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java @@ -34,10 +34,9 @@ import org.apache.fineract.infrastructure.jobs.exception.JobNotFoundException; import org.apache.fineract.infrastructure.jobs.exception.OperationNotAllowedException; import org.apache.fineract.infrastructure.security.utils.ColumnValidator; -import org.springframework.beans.factory.annotation.Autowired; +import org.jspecify.annotations.NonNull; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -53,7 +52,6 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead private final PaginationHelper paginationHelper; - @Autowired public SchedulerJobRunnerReadServiceImpl(final JdbcTemplate jdbcTemplate, final ColumnValidator columnValidator, DatabaseSpecificSQLGenerator sqlGenerator, ScheduledJobDetailRepository jobDetailRepository, PaginationHelper paginationHelper) { @@ -71,7 +69,7 @@ public List findAllJobDetails() { } @Override - public JobDetailData retrieveOne(@NonNull IdTypeResolver.IdType idType, String identifier) { + public JobDetailData retrieveOne(IdTypeResolver.@NonNull IdType idType, String identifier) { JobDetailData jobDetail = switch (idType) { case ID -> jobDetailRepository.getDataById(Long.valueOf(identifier)); case SHORT_NAME -> jobDetailRepository.getDataByShortName(identifier); @@ -84,7 +82,7 @@ public JobDetailData retrieveOne(@NonNull IdTypeResolver.IdType idType, String i } @Override - public Page retrieveJobHistory(@NonNull IdTypeResolver.IdType idType, String identifier, + public Page retrieveJobHistory(IdTypeResolver.@NonNull IdType idType, String identifier, SearchParameters searchParameters) { if (!isJobExist(idType, identifier)) { throw new JobNotFoundException(idType, identifier); @@ -128,7 +126,7 @@ public Page retrieveJobHistory(@NonNull IdTypeResolver.IdT @Override @NonNull - public Long retrieveId(@NonNull IdTypeResolver.IdType idType, String identifier) { + public Long retrieveId(IdTypeResolver.@NonNull IdType idType, String identifier) { return switch (idType) { case ID -> Long.valueOf(identifier); case SHORT_NAME -> @@ -149,7 +147,7 @@ public boolean isUpdatesAllowed() { return true; } - private boolean isJobExist(@NonNull IdTypeResolver.IdType idType, @NonNull String jobId) { + private boolean isJobExist(IdTypeResolver.@NonNull IdType idType, @NonNull String jobId) { return switch (idType) { case ID -> jobDetailRepository.existsById(Long.valueOf(jobId)); case SHORT_NAME -> jobDetailRepository.existsByShortName(jobId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/StuckJobListener.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/StuckJobListener.java index c705a5582c3..15f06f12bc6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/StuckJobListener.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/StuckJobListener.java @@ -31,12 +31,12 @@ import org.apache.fineract.infrastructure.jobs.domain.JobExecutionRepository; import org.apache.fineract.useradministration.domain.AppUser; import org.apache.fineract.useradministration.domain.AppUserRepositoryWrapper; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.configuration.JobRegistry; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; -import org.springframework.lang.NonNull; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobConfiguration.java index fbb61af0ec8..f2feb5a99e0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobConfiguration.java @@ -28,11 +28,11 @@ import org.apache.fineract.infrastructure.jobs.service.aggregationjob.data.JournalEntryAggregationSummaryData; import org.apache.fineract.infrastructure.jobs.service.aggregationjob.listener.JournalEntryAggregationJobListener; import org.apache.fineract.infrastructure.jobs.service.aggregationjob.tasklet.JournalEntryAggregationTrackingTasklet; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobExecutionDecider.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobExecutionDecider.java index e0615bbd28a..362dc0d2295 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobExecutionDecider.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobExecutionDecider.java @@ -21,12 +21,12 @@ import java.time.LocalDate; import java.util.Objects; import lombok.extern.slf4j.Slf4j; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.job.JobExecution; import org.springframework.batch.core.job.flow.FlowExecutionStatus; import org.springframework.batch.core.job.flow.JobExecutionDecider; -import org.springframework.lang.NonNull; +import org.springframework.batch.core.step.StepExecution; import org.springframework.stereotype.Component; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobReader.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobReader.java index ef395997c00..8b15a9f6f20 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobReader.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobReader.java @@ -21,33 +21,28 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDate; -import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant; import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.infrastructure.core.service.database.DatabaseTypeResolver; import org.apache.fineract.infrastructure.core.service.migration.TenantDataSourceFactory; import org.apache.fineract.infrastructure.jobs.service.aggregationjob.data.JournalEntryAggregationSummaryData; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.annotation.BeforeStep; import org.springframework.batch.core.configuration.annotation.StepScope; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.batch.item.database.JdbcCursorItemReader; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; +import org.springframework.batch.infrastructure.item.database.JdbcCursorItemReader; import org.springframework.stereotype.Component; @Component @StepScope public class JournalEntryAggregationJobReader extends JdbcCursorItemReader { - private final DatabaseTypeResolver databaseTypeResolver; private LocalDate aggregatedOnDateFrom; private LocalDate aggregatedOnDateTo; public JournalEntryAggregationJobReader(TenantDataSourceFactory tenantDataSourceFactory, DatabaseTypeResolver databaseTypeResolver) { - this.databaseTypeResolver = databaseTypeResolver; - FineractPlatformTenant tenant = ThreadLocalContextUtil.getTenant(); - setDataSource(tenantDataSourceFactory.create(tenant)); - setSql(buildAggregationQuery()); - setRowMapper(this::mapRow); + super(tenantDataSourceFactory.create(ThreadLocalContextUtil.getTenant()), buildAggregationQuery(databaseTypeResolver), + JournalEntryAggregationJobReader::mapRow); } @BeforeStep @@ -64,7 +59,7 @@ public void beforeStep(StepExecution stepExecution) { } - private JournalEntryAggregationSummaryData mapRow(ResultSet rs, int rowNum) throws SQLException { + private static JournalEntryAggregationSummaryData mapRow(ResultSet rs, int rowNum) throws SQLException { return JournalEntryAggregationSummaryData.builder() // .glAccountId(rs.getLong("glAccountId")) // .productId(rs.getLong("productId")) // @@ -81,7 +76,7 @@ private JournalEntryAggregationSummaryData mapRow(ResultSet rs, int rowNum) thro .build(); // } - private String buildAggregationQuery() { + private static String buildAggregationQuery(DatabaseTypeResolver databaseTypeResolver) { String aggregateFunction = databaseTypeResolver.isMySQL() ? "GROUP_CONCAT(DISTINCT mlo.external_id ORDER BY mlo.external_id SEPARATOR ', ')" : "STRING_AGG(DISTINCT mlo.external_id, ', ' ORDER BY mlo.external_id)"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobWriter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobWriter.java index 3324a9bbb8d..a7e73b3c24b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobWriter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobWriter.java @@ -23,12 +23,12 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.jobs.service.aggregationjob.data.JournalEntryAggregationSummaryData; import org.apache.fineract.infrastructure.jobs.service.aggregationjob.services.JournalEntryAggregationWriterService; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.StepExecutionListener; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.configuration.annotation.StepScope; -import org.springframework.batch.item.Chunk; -import org.springframework.batch.item.ItemWriter; -import org.springframework.lang.NonNull; +import org.springframework.batch.core.listener.StepExecutionListener; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.Chunk; +import org.springframework.batch.infrastructure.item.ItemWriter; import org.springframework.stereotype.Component; @Component diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/listener/JournalEntryAggregationJobListener.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/listener/JournalEntryAggregationJobListener.java index 0d3dfc30973..59307d1604d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/listener/JournalEntryAggregationJobListener.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/listener/JournalEntryAggregationJobListener.java @@ -35,9 +35,8 @@ import org.apache.fineract.infrastructure.jobs.service.aggregationjob.domain.JournalEntryAggregationTrackingRepository; import org.apache.fineract.infrastructure.jobs.service.aggregationjob.services.JournalEntryAggregationWriterService; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobExecutionListener; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.listener.JobExecutionListener; import org.springframework.stereotype.Component; @Component @@ -100,8 +99,8 @@ private void logJobExecutionSummary(final JobExecution jobExecution) { .get(JournalEntryAggregationJobConstant.AGGREGATED_ON_DATE_TO); final Long jobExecutionId = jobExecution.getId(); final Long recordProcessCount = jobExecution.getStepExecutions().stream() - .filter(stepExecution -> stepExecution.getStepName().equals(JOB_SUMMARY_STEP_NAME)).mapToLong(StepExecution::getWriteCount) - .sum(); + .filter(stepExecution -> stepExecution.getStepName().equals(JOB_SUMMARY_STEP_NAME)) + .mapToLong(_stepExecution -> (int) _stepExecution.getWriteCount()).sum(); final Instant startDateTime = jobExecution.getStartTime() != null ? jobExecution.getStartTime().toInstant(ZoneOffset.UTC) : null; final Instant endDateTime = jobExecution.getEndTime() != null ? jobExecution.getEndTime().toInstant(ZoneOffset.UTC) : null; long jobDuration = 0L; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/tasklet/JournalEntryAggregationTrackingTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/tasklet/JournalEntryAggregationTrackingTasklet.java index bd8ba1e2b37..338b5335b7b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/tasklet/JournalEntryAggregationTrackingTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/tasklet/JournalEntryAggregationTrackingTasklet.java @@ -26,13 +26,13 @@ import org.apache.fineract.infrastructure.jobs.service.aggregationjob.JournalEntryAggregationJobConstant; import org.apache.fineract.infrastructure.jobs.service.aggregationjob.data.JournalEntryAggregationTrackingData; import org.apache.fineract.infrastructure.jobs.service.aggregationjob.services.JournalEntryAggregationWriterService; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepContribution; -import org.springframework.batch.core.StepExecution; +import org.jspecify.annotations.NonNull; +import org.springframework.batch.core.job.JobExecution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.core.step.StepExecution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; -import org.springframework.lang.NonNull; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.stereotype.Component; @RequiredArgsConstructor @@ -48,7 +48,7 @@ public RepeatStatus execute(StepContribution contribution, @NonNull ChunkContext Optional jobSummaryStepExecution = contribution.getStepExecution().getJobExecution().getStepExecutions().stream() .filter(stepExecution -> stepExecution.getStepName().equals(JournalEntryAggregationJobConstant.JOB_SUMMARY_STEP_NAME)) .findFirst(); - long writeCount = jobSummaryStepExecution.map(StepExecution::getWriteCount).orElse(0L); + long writeCount = jobSummaryStepExecution.map(_stepExecution -> (int) _stepExecution.getWriteCount()).orElse(0); log.info("Starting journal entry aggregation tasklet to insert into tracking table writeCount={}", writeCount); if (writeCount > 0) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsConfig.java index d33bba8f7f1..37580fec9b2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsConfig.java @@ -19,11 +19,11 @@ package org.apache.fineract.infrastructure.jobs.service.executealldirtyjobs; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsTasklet.java index 53c87824513..5074cef93b2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsTasklet.java @@ -24,10 +24,10 @@ import org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetail; import org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository; import org.apache.fineract.infrastructure.jobs.service.JobRegisterService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.stereotype.Component; @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayConfig.java index fbd7d47327a..9b2fe9e874c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayConfig.java @@ -21,9 +21,9 @@ import org.apache.fineract.infrastructure.businessdate.service.BusinessDateWritePlatformService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTasklet.java index c22bf2060a9..2808bd51944 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTasklet.java @@ -24,10 +24,10 @@ import org.apache.fineract.infrastructure.businessdate.service.BusinessDateWritePlatformService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayConfig.java index 7d356682a22..509cb4ce86b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayConfig.java @@ -22,11 +22,11 @@ import org.apache.fineract.infrastructure.businessdate.service.BusinessDateWritePlatformService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTasklet.java index 94c4145c531..672cc27ffb7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTasklet.java @@ -24,10 +24,10 @@ import org.apache.fineract.infrastructure.businessdate.service.BusinessDateWritePlatformService; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/jobparameterprovider/JobParameterProvider.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/jobparameterprovider/JobParameterProvider.java index a4e12e5a026..f7e52d5e1d5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/jobparameterprovider/JobParameterProvider.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/jobparameterprovider/JobParameterProvider.java @@ -18,14 +18,13 @@ */ package org.apache.fineract.infrastructure.jobs.service.jobparameterprovider; -import java.util.Map; import java.util.Set; import org.apache.fineract.infrastructure.jobs.data.JobParameterDTO; -import org.springframework.batch.core.JobParameter; +import org.springframework.batch.core.job.parameters.JobParameter; public interface JobParameterProvider { - Map> provide(Set jobParameterDTOList); + Set> provide(Set jobParameterDTOList); boolean canProvideParametersForJob(String jobName); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/jobparameterprovider/LoanCOBJobParameterProvider.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/jobparameterprovider/LoanCOBJobParameterProvider.java index 554f4a8837a..cdcaa0ad6f0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/jobparameterprovider/LoanCOBJobParameterProvider.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/jobparameterprovider/LoanCOBJobParameterProvider.java @@ -19,10 +19,8 @@ package org.apache.fineract.infrastructure.jobs.service.jobparameterprovider; import java.time.format.DateTimeFormatter; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; import lombok.RequiredArgsConstructor; @@ -33,7 +31,7 @@ import org.apache.fineract.infrastructure.jobs.domain.CustomJobParameterRepository; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.springbatch.SpringBatchJobConstants; -import org.springframework.batch.core.JobParameter; +import org.springframework.batch.core.job.parameters.JobParameter; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -45,11 +43,9 @@ public class LoanCOBJobParameterProvider extends AbstractJobParameterProvider> provide(Set jobParameterDTOSet) { - Map> jobParameterMap = new HashMap<>(); + public Set> provide(Set jobParameterDTOSet) { Long customJobParameterId = customJobParameterRepository.save(getJobParameterDTOListWithCorrectBusinessDate(jobParameterDTOSet)); - jobParameterMap.put(SpringBatchJobConstants.CUSTOM_JOB_PARAMETER_ID_KEY, new JobParameter<>(customJobParameterId, Long.class)); - return jobParameterMap; + return Set.of(new JobParameter<>(SpringBatchJobConstants.CUSTOM_JOB_PARAMETER_ID_KEY, customJobParameterId, Long.class)); } @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobConfiguration.java index 93efe9b2e1c..7f04cd4aece 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobConfiguration.java @@ -25,11 +25,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.jobs.service.retainedearning.data.AccountGLJournalEntryAnnualSummaryData; import org.apache.fineract.infrastructure.jobs.service.retainedearning.listener.RetainedEarningJobListener; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobReader.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobReader.java index 264a84c1a0b..850988f7dcd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobReader.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobReader.java @@ -26,11 +26,11 @@ import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.infrastructure.jobs.service.retainedearning.data.AccountGLJournalEntryAnnualSummaryData; import org.apache.fineract.infrastructure.jobs.service.retainedearning.services.RetainedEarningDataService; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.StepExecutionListener; import org.springframework.batch.core.configuration.annotation.StepScope; -import org.springframework.batch.item.ItemReader; -import org.springframework.batch.item.support.ListItemReader; +import org.springframework.batch.core.listener.StepExecutionListener; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ItemReader; +import org.springframework.batch.infrastructure.item.support.ListItemReader; import org.springframework.stereotype.Component; /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobWriter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobWriter.java index 8f023373132..ff1770bd58b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobWriter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobWriter.java @@ -30,11 +30,11 @@ import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.infrastructure.jobs.service.retainedearning.data.AccountGLJournalEntryAnnualSummaryData; import org.apache.fineract.infrastructure.jobs.service.retainedearning.services.RetainedEarningDataService; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.StepExecutionListener; import org.springframework.batch.core.configuration.annotation.StepScope; -import org.springframework.batch.item.Chunk; -import org.springframework.batch.item.ItemWriter; +import org.springframework.batch.core.listener.StepExecutionListener; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.Chunk; +import org.springframework.batch.infrastructure.item.ItemWriter; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/listener/RetainedEarningJobListener.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/listener/RetainedEarningJobListener.java index 953e682d7a7..f9756090f28 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/listener/RetainedEarningJobListener.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/listener/RetainedEarningJobListener.java @@ -26,8 +26,8 @@ import java.time.temporal.ChronoUnit; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobExecutionListener; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.listener.JobExecutionListener; import org.springframework.stereotype.Component; /** @@ -45,7 +45,7 @@ public class RetainedEarningJobListener implements JobExecutionListener { */ @Override public void beforeJob(JobExecution jobExecution) { - log.info("Starting Retained Earning Job: {}", jobExecution.getJobId()); + log.info("Starting Retained Earning Job: {}", jobExecution.getJobInstanceId()); } /** diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaConfig.java index 80d2766c9e2..da76d7e6108 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaConfig.java @@ -23,11 +23,11 @@ import org.apache.fineract.infrastructure.core.service.database.RoutingDataSourceServiceFactory; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaTasklet.java index 55b664e4862..c7d16cf169e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaTasklet.java @@ -27,10 +27,10 @@ import org.apache.fineract.infrastructure.core.service.database.RoutingDataSourceServiceFactory; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.useradministration.domain.AppUser; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.jdbc.core.JdbcTemplate; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java index 83d07f917ea..482b3b55931 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java @@ -24,6 +24,7 @@ import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import jakarta.persistence.UniqueConstraint; +import java.io.Serial; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.LinkedHashMap; @@ -49,6 +50,7 @@ @Accessors(chain = true) public class ReportMailingJob extends AbstractAuditableCustom { + @Serial private static final long serialVersionUID = -2197602941230009227L; @Column(name = "name", nullable = false) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java index 59296ee33d6..681460fcef6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java @@ -22,6 +22,7 @@ import jakarta.persistence.Entity; import jakarta.persistence.Table; import jakarta.persistence.UniqueConstraint; +import java.io.Serial; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -37,6 +38,7 @@ @Accessors(chain = true) public class ReportMailingJobConfiguration extends AbstractPersistableCustom { + @Serial private static final long serialVersionUID = 3099279770861263184L; @Column(name = "name", nullable = false) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepositoryWrapper.java index 2a4077a2532..8de9d1fb7e4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.infrastructure.reportmailingjob.domain; import org.apache.fineract.infrastructure.reportmailingjob.exception.ReportMailingJobNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -27,7 +26,6 @@ public class ReportMailingJobRepositoryWrapper { private final ReportMailingJobRepository reportMailingJobRepository; - @Autowired public ReportMailingJobRepositoryWrapper(final ReportMailingJobRepository reportMailingJobRepository) { this.reportMailingJobRepository = reportMailingJobRepository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java index dd0598a19d5..8e469109896 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java @@ -23,6 +23,7 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; +import java.io.Serial; import java.time.LocalDateTime; import lombok.Getter; import lombok.NoArgsConstructor; @@ -38,6 +39,7 @@ @Accessors(chain = true) public class ReportMailingJobRunHistory extends AbstractPersistableCustom { + @Serial private static final long serialVersionUID = -3757370929988421076L; @ManyToOne diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java index 8fd7d971faa..a1b82fb80be 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobConfigurationReadPlatformServiceImpl.java @@ -24,7 +24,6 @@ import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJobConfigurationData; import org.apache.fineract.infrastructure.reportmailingjob.exception.ReportMailingJobConfigurationNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -38,7 +37,6 @@ public class ReportMailingJobConfigurationReadPlatformServiceImpl implements Rep /** * ReportMailingJobConfigurationReadPlatformServiceImpl constructor **/ - @Autowired public ReportMailingJobConfigurationReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailServiceImpl.java index 374a614ccfa..43352be22bc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobEmailServiceImpl.java @@ -28,7 +28,6 @@ import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJobEmailData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; @@ -42,7 +41,6 @@ public class ReportMailingJobEmailServiceImpl implements ReportMailingJobEmailSe /** * ReportMailingJobEmailServiceImpl constructor **/ - @Autowired public ReportMailingJobEmailServiceImpl( final ReportMailingJobConfigurationReadPlatformService reportMailingJobConfigurationReadPlatformService) { this.reportMailingJobConfigurationReadPlatformService = reportMailingJobConfigurationReadPlatformService; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java index d6dc95e519c..609c3e481bd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobReadPlatformServiceImpl.java @@ -38,7 +38,6 @@ import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJobTimelineData; import org.apache.fineract.infrastructure.reportmailingjob.exception.ReportMailingJobNotFoundException; import org.apache.fineract.infrastructure.security.utils.ColumnValidator; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -52,7 +51,6 @@ public class ReportMailingJobReadPlatformServiceImpl implements ReportMailingJob private final DatabaseSpecificSQLGenerator sqlGenerator; private final PaginationHelper paginationHelper; - @Autowired public ReportMailingJobReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate, final ColumnValidator columnValidator, DatabaseSpecificSQLGenerator sqlGenerator, PaginationHelper paginationHelper) { this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformServiceImpl.java index 81b2194ab82..77af872789e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobRunHistoryReadPlatformServiceImpl.java @@ -30,7 +30,6 @@ import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator; import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJobRunHistoryData; import org.apache.fineract.infrastructure.security.utils.ColumnValidator; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @@ -44,7 +43,6 @@ public class ReportMailingJobRunHistoryReadPlatformServiceImpl implements Report private final ColumnValidator columnValidator; private final PaginationHelper paginationHelper; - @Autowired public ReportMailingJobRunHistoryReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate, final ColumnValidator columnValidator, DatabaseSpecificSQLGenerator sqlGenerator, PaginationHelper paginationHelper) { this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobWritePlatformServiceImpl.java index 25b3f032747..61b3d25f975 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/service/ReportMailingJobWritePlatformServiceImpl.java @@ -40,7 +40,6 @@ import org.apache.fineract.useradministration.domain.AppUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.NonTransientDataAccessException; import org.springframework.orm.jpa.JpaSystemException; @@ -57,7 +56,6 @@ public class ReportMailingJobWritePlatformServiceImpl implements ReportMailingJo private final ReportMailingJobRepository reportMailingJobRepository; private final PlatformSecurityContext platformSecurityContext; - @Autowired public ReportMailingJobWritePlatformServiceImpl(final ReportRepositoryWrapper reportRepositoryWrapper, final ReportMailingJobValidator reportMailingJobValidator, final ReportMailingJobRepositoryWrapper reportMailingJobRepositoryWrapper, diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/validation/ReportMailingJobValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/validation/ReportMailingJobValidator.java index 92608f51020..0c4ba3dd1a9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/validation/ReportMailingJobValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/validation/ReportMailingJobValidator.java @@ -18,8 +18,6 @@ */ package org.apache.fineract.infrastructure.reportmailingjob.validation; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Splitter; import com.google.gson.JsonElement; import com.google.gson.reflect.TypeToken; @@ -43,8 +41,9 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.reportmailingjob.ReportMailingJobConstants; import org.apache.fineract.infrastructure.reportmailingjob.data.ReportMailingJobEmailAttachmentFileFormat; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.json.JsonMapper; @Component public class ReportMailingJobValidator { @@ -53,7 +52,6 @@ public class ReportMailingJobValidator { private static final String EMAIL_REGEX = "^[\\w!#$%&’*+/=?`{|}~^-]+(?:\\.[\\w!#$%&’*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$"; private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX); - @Autowired public ReportMailingJobValidator(final FromJsonHelper fromJsonHelper) { this.fromJsonHelper = fromJsonHelper; } @@ -304,7 +302,7 @@ public HashMap validateStretchyReportParamMap(String stretchyRep if (!StringUtils.isEmpty(stretchyReportParamMap)) { try { - stretchyReportParamHashMap = new ObjectMapper().readValue(stretchyReportParamMap, + stretchyReportParamHashMap = new JsonMapper().readValue(stretchyReportParamMap, new TypeReference>() {}); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/config/AuthorizationServerConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/config/AuthorizationServerConfig.java index f7af911f644..e57c37624a5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/config/AuthorizationServerConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/config/AuthorizationServerConfig.java @@ -62,6 +62,7 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.annotation.web.configurers.oauth2.server.authorization.OAuth2AuthorizationServerConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.crypto.factory.PasswordEncoderFactories; @@ -71,7 +72,6 @@ import org.springframework.security.oauth2.server.authorization.client.InMemoryRegisteredClientRepository; import org.springframework.security.oauth2.server.authorization.client.RegisteredClient; import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository; -import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer; import org.springframework.security.oauth2.server.authorization.settings.ClientSettings; import org.springframework.security.oauth2.server.authorization.token.JwtEncodingContext; import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenCustomizer; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationServiceImpl.java index 1ff0c008d43..6c1634f4f9a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorConfigurationServiceImpl.java @@ -37,7 +37,6 @@ import org.apache.fineract.infrastructure.security.domain.TwoFactorConfiguration; import org.apache.fineract.infrastructure.security.domain.TwoFactorConfigurationRepository; import org.apache.fineract.useradministration.domain.AppUser; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -53,7 +52,6 @@ public class TwoFactorConfigurationServiceImpl implements TwoFactorConfiguration private final TwoFactorConfigurationRepository configurationRepository; - @Autowired public TwoFactorConfigurationServiceImpl(TwoFactorConfigurationRepository configurationRepository) { this.configurationRepository = configurationRepository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorServiceImpl.java index 9e845840f92..e5338871382 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TwoFactorServiceImpl.java @@ -38,7 +38,6 @@ import org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; import org.apache.fineract.infrastructure.sms.scheduler.SmsMessageScheduledJobService; import org.apache.fineract.useradministration.domain.AppUser; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CachePut; @@ -60,7 +59,6 @@ public class TwoFactorServiceImpl implements TwoFactorService { private final TwoFactorConfigurationService configurationService; - @Autowired public TwoFactorServiceImpl(AccessTokenGenerationService accessTokenGenerationService, PlatformEmailService emailService, SmsMessageScheduledJobService smsMessageScheduledJobService, OTPRequestRepository otpRequestRepository, TFAccessTokenRepository tfAccessTokenRepository, SmsMessageRepository smsMessageRepository, diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsDataValidator.java index aaa82a56dd9..6b40ef8ddde 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsDataValidator.java @@ -34,7 +34,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.sms.SmsApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -48,7 +47,6 @@ public final class SmsDataValidator { public static final Set UPDATE_REQUEST_DATA_PARAMETERS = new HashSet<>( Arrays.asList(SmsApiConstants.messageParamName, SmsApiConstants.campaignIdParamName)); - @Autowired public SmsDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessageAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessageAssembler.java index 34a0c631067..4b364fbb195 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessageAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessageAssembler.java @@ -32,7 +32,6 @@ import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper; import org.apache.fineract.portfolio.group.domain.Group; import org.apache.fineract.portfolio.group.domain.GroupRepositoryWrapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -45,7 +44,6 @@ public class SmsMessageAssembler { private final SmsCampaignRepository smsCampaignRepository; private final FromJsonHelper fromApiJsonHelper; - @Autowired public SmsMessageAssembler(final SmsMessageRepository smsMessageRepository, final GroupRepositoryWrapper groupRepositoryWrapper, final ClientRepositoryWrapper clientRepository, final StaffRepositoryWrapper staffRepository, final FromJsonHelper fromApiJsonHelper, final SmsCampaignRepository smsCampaignRepository) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsWritePlatformServiceJpaRepositoryImpl.java index 9d24e779950..e67b8dbbd39 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/service/SmsWritePlatformServiceJpaRepositoryImpl.java @@ -30,7 +30,6 @@ import org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.NonTransientDataAccessException; import org.springframework.orm.jpa.JpaSystemException; @@ -46,7 +45,6 @@ public class SmsWritePlatformServiceJpaRepositoryImpl implements SmsWritePlatfor private final SmsMessageRepository repository; private final SmsDataValidator validator; - @Autowired public SmsWritePlatformServiceJpaRepositoryImpl(final SmsMessageAssembler assembler, final SmsMessageRepository repository, final SmsDataValidator validator) { this.assembler = assembler; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/InputChannelInterceptor.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/InputChannelInterceptor.java index 271ef26fa1d..2ccc1b80676 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/InputChannelInterceptor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/InputChannelInterceptor.java @@ -21,8 +21,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.core.domain.ActionContext; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; +import org.jspecify.annotations.NonNull; import org.springframework.batch.integration.partition.StepExecutionRequest; -import org.springframework.lang.NonNull; import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageHandler; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/OutputChannelInterceptor.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/OutputChannelInterceptor.java index fb8166e9e8c..41a590f9398 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/OutputChannelInterceptor.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/OutputChannelInterceptor.java @@ -19,9 +19,9 @@ package org.apache.fineract.infrastructure.springbatch; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; +import org.jspecify.annotations.NonNull; import org.springframework.batch.integration.async.StepExecutionInterceptor; import org.springframework.batch.integration.partition.StepExecutionRequest; -import org.springframework.lang.NonNull; import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.support.GenericMessage; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/StepExecutionRequestHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/StepExecutionRequestHandler.java index 126039fd0ce..1709c47a89f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/StepExecutionRequestHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/StepExecutionRequestHandler.java @@ -20,11 +20,10 @@ import lombok.RequiredArgsConstructor; import org.springframework.batch.core.BatchStatus; -import org.springframework.batch.core.JobInterruptedException; -import org.springframework.batch.core.Step; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.explore.JobExplorer; +import org.springframework.batch.core.job.JobInterruptedException; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; +import org.springframework.batch.core.step.StepExecution; import org.springframework.batch.core.step.StepLocator; import org.springframework.batch.integration.partition.StepExecutionRequest; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -38,15 +37,13 @@ public class StepExecutionRequestHandler { private final JobRepository jobRepository; private final StepLocator stepLocator; - private final JobExplorer jobExplorer; + private final JobRepository jobExplorer; public void handle(StepExecutionRequest request) { - - Long jobExecutionId = request.getJobExecutionId(); Long stepExecutionId = request.getStepExecutionId(); String stepName = request.getStepName(); - StepExecution stepExecution = jobExplorer.getStepExecution(jobExecutionId, stepExecutionId); + StepExecution stepExecution = jobExplorer.getStepExecution(stepExecutionId); if (stepExecution == null) { throw new IllegalStateException("stepExecution cannot be null"); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/kafka/KafkaManagerConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/kafka/KafkaManagerConfig.java index 3e39d0ad392..c5dc01f4b12 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/kafka/KafkaManagerConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/kafka/KafkaManagerConfig.java @@ -43,7 +43,7 @@ import org.springframework.kafka.core.DefaultKafkaProducerFactory; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.core.ProducerFactory; -import org.springframework.kafka.support.serializer.JsonSerializer; +import org.springframework.kafka.support.serializer.JacksonJsonSerializer; import org.springframework.messaging.support.GenericMessage; @Configuration @@ -64,7 +64,7 @@ public ProducerFactory producerFactory() { fineractProperties.getRemoteJobMessageHandler().getKafka().getProducer().getExtraPropertiesMap()); props.put(BOOTSTRAP_SERVERS_CONFIG, fineractProperties.getRemoteJobMessageHandler().getKafka().getBootstrapServers()); props.put(KEY_SERIALIZER_CLASS_CONFIG, IntegerSerializer.class); - props.put(VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class); + props.put(VALUE_SERIALIZER_CLASS_CONFIG, JacksonJsonSerializer.class); return new DefaultKafkaProducerFactory<>(props); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/kafka/KafkaWorkerConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/kafka/KafkaWorkerConfig.java index babc7f54962..c9ce9307be8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/kafka/KafkaWorkerConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/springbatch/messagehandler/kafka/KafkaWorkerConfig.java @@ -23,7 +23,7 @@ import static org.apache.kafka.clients.consumer.ConsumerConfig.GROUP_ID_CONFIG; import static org.apache.kafka.clients.consumer.ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG; import static org.apache.kafka.clients.consumer.ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG; -import static org.springframework.kafka.support.serializer.JsonDeserializer.TRUSTED_PACKAGES; +import static org.springframework.kafka.support.serializer.JacksonJsonDeserializer.TRUSTED_PACKAGES; import java.util.HashMap; import java.util.Map; @@ -37,14 +37,16 @@ import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.integration.channel.QueueChannel; +import org.springframework.kafka.annotation.EnableKafka; import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; import org.springframework.kafka.core.ConsumerFactory; import org.springframework.kafka.core.DefaultKafkaConsumerFactory; import org.springframework.kafka.listener.ContainerProperties; -import org.springframework.kafka.support.serializer.JsonDeserializer; +import org.springframework.kafka.support.serializer.JacksonJsonDeserializer; @Configuration @Conditional(KafkaWorkerCondition.class) +@EnableKafka @Slf4j public class KafkaWorkerConfig { @@ -61,7 +63,7 @@ public ConsumerFactory consumerFactory() { props.put(BOOTSTRAP_SERVERS_CONFIG, kafkaProperties.getBootstrapServers()); props.put(GROUP_ID_CONFIG, kafkaProperties.getConsumer().getGroupId()); props.put(KEY_DESERIALIZER_CLASS_CONFIG, IntegerDeserializer.class); - props.put(VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class); + props.put(VALUE_DESERIALIZER_CLASS_CONFIG, JacksonJsonDeserializer.class); props.put(TRUSTED_PACKAGES, "*"); props.put(AUTO_OFFSET_RESET_CONFIG, "earliest"); return new DefaultKafkaConsumerFactory<>(props); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/data/LikelihoodDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/data/LikelihoodDataValidator.java index 61f3f0dee02..ff2cb77a90c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/data/LikelihoodDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/data/LikelihoodDataValidator.java @@ -35,7 +35,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.survey.api.LikelihoodApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -48,7 +47,6 @@ public class LikelihoodDataValidator { private final FromJsonHelper fromApiJsonHelper; private static final Set UPDATE_LIKELIHOOD_DATA_PARAMETERS = new HashSet<>(Arrays.asList(LikelihoodApiConstants.ACTIVE)); - @Autowired public LikelihoodDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/PovertyLineServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/PovertyLineServiceImpl.java index e5cd9d5d545..0f8aa632c99 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/PovertyLineServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/PovertyLineServiceImpl.java @@ -23,7 +23,6 @@ import org.apache.fineract.infrastructure.survey.data.LikeliHoodPovertyLineData; import org.apache.fineract.infrastructure.survey.data.PovertyLineData; import org.apache.fineract.infrastructure.survey.data.PpiPovertyLineData; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; import org.springframework.stereotype.Service; @@ -33,7 +32,6 @@ public class PovertyLineServiceImpl implements PovertyLineService { private final JdbcTemplate jdbcTemplate; - @Autowired PovertyLineServiceImpl(final JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/ReadLikelihoodServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/ReadLikelihoodServiceImpl.java index fa1ecec8b85..be31ddae819 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/ReadLikelihoodServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/ReadLikelihoodServiceImpl.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.List; import org.apache.fineract.infrastructure.survey.data.LikelihoodData; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; import org.springframework.stereotype.Service; @@ -31,7 +30,6 @@ public class ReadLikelihoodServiceImpl implements ReadLikelihoodService { private final JdbcTemplate jdbcTemplate; - @Autowired ReadLikelihoodServiceImpl(final JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/WriteLikelihoodServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/WriteLikelihoodServiceImpl.java index 095247fdf56..e4c2a2210cf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/WriteLikelihoodServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/service/WriteLikelihoodServiceImpl.java @@ -30,7 +30,6 @@ import org.apache.fineract.infrastructure.survey.domain.LikelihoodRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.NonTransientDataAccessException; import org.springframework.orm.jpa.JpaSystemException; @@ -47,7 +46,6 @@ public class WriteLikelihoodServiceImpl implements WriteLikelihoodService { private final LikelihoodDataValidator likelihoodDataValidator; private final LikelihoodRepository repository; - @Autowired WriteLikelihoodServiceImpl(final PlatformSecurityContext context, final LikelihoodDataValidator likelihoodDataValidator, final LikelihoodRepository repository) { this.context = context; diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropRequestData.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropRequestData.java index c905961e6d3..6cf139612ab 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropRequestData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropRequestData.java @@ -32,8 +32,6 @@ import static org.apache.fineract.interoperation.util.InteropUtil.PARAM_TRANSACTION_ROLE; import static org.apache.fineract.interoperation.util.InteropUtil.PARAM_TRANSACTION_TYPE; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -46,6 +44,8 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.interoperation.domain.InteropTransactionRole; import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.ext.javatime.deser.LocalDateTimeDeserializer; public class InteropRequestData { diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropAccountTransactionNotAllowedException.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropAccountTransactionNotAllowedException.java index ee0dd3a65a1..301da4acb23 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropAccountTransactionNotAllowedException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropAccountTransactionNotAllowedException.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.interoperation.exception; import jakarta.validation.constraints.NotNull; diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropKycDataNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropKycDataNotFoundException.java index 044793204fc..fe63a5d10fb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropKycDataNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropKycDataNotFoundException.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.interoperation.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferAlreadyCommittedException.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferAlreadyCommittedException.java index e143c7a51ae..d7bb49724fb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferAlreadyCommittedException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferAlreadyCommittedException.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.interoperation.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferAlreadyOnHoldException.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferAlreadyOnHoldException.java index 155b9f44560..5f8872377fc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferAlreadyOnHoldException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferAlreadyOnHoldException.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.interoperation.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferMissingException.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferMissingException.java index 0145c37289b..b79e925d7b9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferMissingException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/exception/InteropTransferMissingException.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.interoperation.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/serialization/InteropDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/serialization/InteropDataValidator.java index 068b8625579..ad777d76c36 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/serialization/InteropDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/serialization/InteropDataValidator.java @@ -33,7 +33,6 @@ import org.apache.fineract.interoperation.data.InteropTransactionRequestData; import org.apache.fineract.interoperation.data.InteropTransferRequestData; import org.apache.fineract.interoperation.domain.InteropIdentifierType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -41,7 +40,6 @@ public class InteropDataValidator { private final FromJsonHelper jsonHelper; - @Autowired public InteropDataValidator(final FromJsonHelper fromJsonHelper) { this.jsonHelper = fromJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropService.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropService.java index a2e79a5ddfc..52459ea69ac 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropService.java @@ -29,7 +29,7 @@ import org.apache.fineract.interoperation.data.InteropTransactionsData; import org.apache.fineract.interoperation.data.InteropTransferResponseData; import org.apache.fineract.interoperation.domain.InteropIdentifierType; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public interface InteropService { diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java index a8414585e63..ce3321ccad2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java @@ -108,11 +108,11 @@ import org.apache.fineract.portfolio.savings.exception.SavingsAccountNotFoundException; import org.apache.fineract.portfolio.savings.service.SavingsAccountDomainService; import org.apache.fineract.useradministration.domain.AppUser; +import org.jspecify.annotations.NonNull; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.lang.NonNull; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.transaction.annotation.Transactional; diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/ActiveMQNotificationEventListener.java b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/ActiveMQNotificationEventListener.java index 3bda17338cc..865daed72c4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/ActiveMQNotificationEventListener.java +++ b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/ActiveMQNotificationEventListener.java @@ -40,8 +40,8 @@ public class ActiveMQNotificationEventListener implements SessionAwareMessageLis @Override public void onMessage(Message message, Session session) throws JMSException { - if (message instanceof ObjectMessage) { - NotificationData notificationData = (NotificationData) ((ObjectMessage) message).getObject(); + if (message instanceof ObjectMessage objectMessage) { + NotificationData notificationData = (NotificationData) objectMessage.getObject(); notificationEventListener.receive(notificationData); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringNotificationEventListener.java b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringNotificationEventListener.java index b01903eabae..c81dd0a342c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringNotificationEventListener.java +++ b/fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringNotificationEventListener.java @@ -22,9 +22,9 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.notification.data.NotificationData; +import org.jspecify.annotations.NonNull; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Profile; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; @Component diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/data/HolidayDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/data/HolidayDataValidator.java index 90f43ae5f7c..fbb6ee81145 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/data/HolidayDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/data/HolidayDataValidator.java @@ -39,7 +39,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.organisation.holiday.api.HolidayApiConstants; import org.apache.fineract.organisation.holiday.domain.RescheduleType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -52,7 +51,6 @@ public class HolidayDataValidator { HolidayApiConstants.officesParamName, HolidayApiConstants.repaymentsRescheduledToParamName, HolidayApiConstants.reschedulingType)); - @Autowired public HolidayDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/HolidayRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/HolidayRepositoryWrapper.java index ec1956c2870..f111662bed1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/HolidayRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/HolidayRepositoryWrapper.java @@ -22,7 +22,6 @@ import java.util.List; import org.apache.fineract.organisation.holiday.exception.HolidayNotFoundException; import org.apache.fineract.organisation.holiday.service.HolidayUtil; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -35,7 +34,6 @@ public class HolidayRepositoryWrapper { private final HolidayRepository repository; - @Autowired public HolidayRepositoryWrapper(final HolidayRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/serialization/OfficeCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/serialization/OfficeCommandFromApiJsonDeserializer.java index 4e6f7ea15dc..bde948329b8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/serialization/OfficeCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/serialization/OfficeCommandFromApiJsonDeserializer.java @@ -34,7 +34,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -57,7 +56,6 @@ public final class OfficeCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; - @Autowired public OfficeCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/serialization/OfficeTransactionCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/serialization/OfficeTransactionCommandFromApiJsonDeserializer.java index 8029c28e0ca..3b7b6acefff 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/serialization/OfficeTransactionCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/serialization/OfficeTransactionCommandFromApiJsonDeserializer.java @@ -35,7 +35,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -57,7 +56,6 @@ public final class OfficeTransactionCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; - @Autowired public OfficeTransactionCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java index a091f673ff5..6dc052eb768 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.organisation.provisioning.data; +import java.io.Serial; import java.io.Serializable; import java.util.Collection; import java.util.List; @@ -33,6 +34,7 @@ @SuppressWarnings("unused") public final class ProvisioningCriteriaData implements Comparable, Serializable { + @Serial private static final long serialVersionUID = 1L; private Long criteriaId; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaDefinitionData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaDefinitionData.java index cbf5a6af41d..9992d5f3e30 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaDefinitionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaDefinitionData.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.organisation.provisioning.data; +import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; import lombok.Data; @@ -29,6 +30,7 @@ @Accessors(chain = true) public final class ProvisioningCriteriaDefinitionData implements Comparable, Serializable { + @Serial private static final long serialVersionUID = 1L; private Long id; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCategoryDefinitionJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCategoryDefinitionJsonDeserializer.java index 96b0d2b91e1..638f53e7eec 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCategoryDefinitionJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCategoryDefinitionJsonDeserializer.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -48,7 +47,6 @@ public class ProvisioningCategoryDefinitionJsonDeserializer { private static final Set SUPPORTED_PARAMETERS = new HashSet<>(Arrays.asList(CATEGORYNAME, CATEGORYDESCRIPTION)); private final FromJsonHelper fromApiJsonHelper; - @Autowired public ProvisioningCategoryDefinitionJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCriteriaDefinitionJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCriteriaDefinitionJsonDeserializer.java index 4b2d43b9672..9f7900cd825 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCriteriaDefinitionJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/serialization/ProvisioningCriteriaDefinitionJsonDeserializer.java @@ -38,7 +38,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.organisation.provisioning.constants.ProvisioningCriteriaConstants; import org.apache.fineract.organisation.provisioning.exception.ProvisioningCriteriaCannotBeCreatedException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -59,7 +58,6 @@ public class ProvisioningCriteriaDefinitionJsonDeserializer implements Provision Arrays.asList(JSON_CATEOGRYID_PARAM, JSON_CATEOGRYNAME_PARAM, JSON_MINIMUM_AGE_PARAM, JSON_MAXIMUM_AGE_PARAM, JSON_MINIMUM_AGE_PARAM, JSON_PROVISIONING_PERCENTAGE_PARAM, JSON_EXPENSE_ACCOUNT_PARAM, JSON_LIABILITY_ACCOUNT_PARAM)); - @Autowired public ProvisioningCriteriaDefinitionJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffCreateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffCreateCommandHandler.java index 0d24783f207..3abefebeefe 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffCreateCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffCreateCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.organisation.staff.handler; import io.github.resilience4j.retry.annotation.Retry; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffUpdateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffUpdateCommandHandler.java index c8e4b74bb1d..5f7f8a8b4f6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffUpdateCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffUpdateCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.organisation.staff.handler; import io.github.resilience4j.retry.annotation.Retry; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffUploadCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffUploadCommandHandler.java index f9a546349d2..443267b80bd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffUploadCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/handler/StaffUploadCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.organisation.staff.handler; import io.github.resilience4j.retry.annotation.Retry; diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/mapper/StaffCreateRequestMapper.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/mapper/StaffCreateRequestMapper.java index 51665ffc45a..c41eafc705d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/mapper/StaffCreateRequestMapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/mapper/StaffCreateRequestMapper.java @@ -29,7 +29,7 @@ public abstract class StaffCreateRequestMapper { protected final StaffDateMapper dateMapper = new StaffDateMapper(); - @Mapping(source = "isActive", target = "active") + @Mapping(target = "active", expression = "java( source.getIsActive() == null || source.getIsActive() )") @Mapping(source = "isLoanOfficer", target = "loanOfficer") @Mapping(expression = "java( dateMapper.map(source.getJoiningDate(), source.getDateFormat()) )", target = "joiningDate") @Mapping(ignore = true, target = "id") diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDayValidator.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDayValidator.java index 97416f3806a..7809b03c631 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDayValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDayValidator.java @@ -34,7 +34,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.organisation.workingdays.api.WorkingDaysApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; //Not used @@ -47,7 +46,6 @@ public class WorkingDayValidator { WorkingDaysApiConstants.localeParamName, WorkingDaysApiConstants.extendTermForDailyRepayments, WorkingDaysApiConstants.extendTermForRepaymentsOnHolidays)); - @Autowired public WorkingDayValidator(FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDaysRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDaysRepositoryWrapper.java index c23c91a3649..4803d752a69 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDaysRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDaysRepositoryWrapper.java @@ -22,7 +22,6 @@ import java.util.List; import org.apache.fineract.organisation.workingdays.exception.WorkingDaysNotFoundException; import org.apache.fineract.organisation.workingdays.service.WorkingDaysUtil; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -35,7 +34,6 @@ public class WorkingDaysRepositoryWrapper { private final WorkingDaysRepository repository; - @Autowired public WorkingDaysRepositoryWrapper(final WorkingDaysRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransfersDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransfersDataValidator.java index edd7b885cfa..f19a2595d41 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransfersDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransfersDataValidator.java @@ -39,7 +39,6 @@ import org.apache.fineract.portfolio.account.AccountDetailConstants; import org.apache.fineract.portfolio.account.api.AccountTransfersApiConstants; import org.apache.fineract.portfolio.paymentdetail.PaymentDetailConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -58,7 +57,6 @@ public class AccountTransfersDataValidator { PaymentDetailConstants.checkNumberParamName, PaymentDetailConstants.routingCodeParamName, PaymentDetailConstants.receiptNumberParamName, PaymentDetailConstants.bankNumberParamName)); - @Autowired public AccountTransfersDataValidator(final FromJsonHelper fromApiJsonHelper, final AccountTransfersDetailDataValidator accountTransfersDetailDataValidator) { this.fromApiJsonHelper = fromApiJsonHelper; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransfersDetailDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransfersDetailDataValidator.java index 8c7f876baa0..6fab09d8b16 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransfersDetailDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransfersDetailDataValidator.java @@ -31,7 +31,6 @@ import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -39,7 +38,6 @@ public class AccountTransfersDetailDataValidator { private final FromJsonHelper fromApiJsonHelper; - @Autowired public AccountTransfersDetailDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDataValidator.java index 36fbe302c18..ee9f7b1bcee 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDataValidator.java @@ -49,7 +49,6 @@ import org.apache.fineract.portfolio.account.domain.AccountTransferType; import org.apache.fineract.portfolio.account.domain.StandingInstructionType; import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -78,7 +77,6 @@ public class StandingInstructionDataValidator { StandingInstructionApiConstants.recurrenceFrequencyParamName, StandingInstructionApiConstants.recurrenceIntervalParamName, StandingInstructionApiConstants.recurrenceOnMonthDayParamName, StandingInstructionApiConstants.monthDayFormatParamName)); - @Autowired public StandingInstructionDataValidator(final FromJsonHelper fromApiJsonHelper, final AccountTransfersDetailDataValidator accountTransfersDetailDataValidator) { this.fromApiJsonHelper = fromApiJsonHelper; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferAssembler.java index 091a7dc40eb..46fa91a7155 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferAssembler.java @@ -31,7 +31,6 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -39,7 +38,6 @@ public class AccountTransferAssembler { private final AccountTransferDetailAssembler accountTransferDetailAssembler; - @Autowired public AccountTransferAssembler(final AccountTransferDetailAssembler accountTransferDetailAssembler) { this.accountTransferDetailAssembler = accountTransferDetailAssembler; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetailAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetailAssembler.java index a8fe76f2a13..1670f9d861d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetailAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetailAssembler.java @@ -38,7 +38,6 @@ import org.apache.fineract.portfolio.loanaccount.service.LoanAssembler; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; import org.apache.fineract.portfolio.savings.domain.SavingsAccountAssembler; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -50,7 +49,6 @@ public class AccountTransferDetailAssembler { private final FromJsonHelper fromApiJsonHelper; private final LoanAssembler loanAccountAssembler; - @Autowired public AccountTransferDetailAssembler(final ClientRepositoryWrapper clientRepository, final OfficeRepositoryWrapper officeRepositoryWrapper, final SavingsAccountAssembler savingsAccountAssembler, final FromJsonHelper fromApiJsonHelper, final LoanAssembler loanAccountAssembler) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionAssembler.java index 079bda7387b..3c0de149541 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionAssembler.java @@ -35,7 +35,6 @@ import java.time.MonthDay; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.organisation.monetary.domain.Money; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -43,7 +42,6 @@ public class StandingInstructionAssembler { private final AccountTransferDetailAssembler accountTransferDetailAssembler; - @Autowired public StandingInstructionAssembler(final AccountTransferDetailAssembler accountTransferDetailAssembler) { this.accountTransferDetailAssembler = accountTransferDetailAssembler; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsConfig.java index 69fecbdb4c4..f4ca0ba31f3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsConfig.java @@ -22,11 +22,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.account.service.AccountTransfersWritePlatformService; import org.apache.fineract.portfolio.account.service.StandingInstructionReadPlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsTasklet.java index 357dc35c7b3..cb5c7175480 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsTasklet.java @@ -45,10 +45,10 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.ScheduledDateGenerator; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; import org.apache.fineract.portfolio.savings.exception.InsufficientAccountBalanceException; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.jdbc.core.JdbcTemplate; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformServiceImpl.java index 521f647da7b..4782d63e02c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/service/FieldConfigurationReadPlatformServiceImpl.java @@ -23,7 +23,6 @@ import java.util.List; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.address.data.FieldConfigurationData; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @@ -34,7 +33,6 @@ public class FieldConfigurationReadPlatformServiceImpl implements FieldConfigura private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; - @Autowired public FieldConfigurationReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate) { this.context = context; this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepositoryWrapper.java index 23c9d56604b..02d58725b3b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstanceRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.calendar.domain; import org.apache.fineract.portfolio.calendar.exception.CalendarInstanceNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -38,7 +37,6 @@ public class CalendarInstanceRepositoryWrapper { private final CalendarInstanceRepository repository; - @Autowired public CalendarInstanceRepositoryWrapper(final CalendarInstanceRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRepositoryWrapper.java index d49d8dd5c35..45474dc15e4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.calendar.domain; import org.apache.fineract.portfolio.calendar.exception.CalendarNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -38,7 +37,6 @@ public class CalendarRepositoryWrapper { private final CalendarRepository repository; - @Autowired public CalendarRepositoryWrapper(final CalendarRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/serialization/CalendarCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/serialization/CalendarCommandFromApiJsonDeserializer.java index 8f6c2395b5c..3709ef4c777 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/serialization/CalendarCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/serialization/CalendarCommandFromApiJsonDeserializer.java @@ -41,7 +41,6 @@ import org.apache.fineract.portfolio.calendar.domain.CalendarRemindBy; import org.apache.fineract.portfolio.calendar.domain.CalendarWeekDaysType; import org.apache.fineract.portfolio.calendar.service.CalendarUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -54,7 +53,6 @@ public class CalendarCommandFromApiJsonDeserializer extends AbstractFromApiJsonD private final FromJsonHelper fromApiJsonHelper; - @Autowired public CalendarCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientFamilyMembersApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientFamilyMembersApiResource.java index c4969f8b2fc..272ed76d94e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientFamilyMembersApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientFamilyMembersApiResource.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.api; import io.swagger.v3.oas.annotations.Operation; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientChargeDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientChargeDataValidator.java index 8f3ebb3205d..6a7fae3c92f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientChargeDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientChargeDataValidator.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.client.api.ClientApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -41,7 +40,6 @@ public class ClientChargeDataValidator { private final FromJsonHelper fromApiJsonHelper; - @Autowired public ClientChargeDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java index 3d056ad7d08..ca9f59d1546 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java @@ -47,7 +47,6 @@ import org.apache.fineract.portfolio.client.api.ClientApiConstants; import org.apache.fineract.portfolio.client.domain.LegalForm; import org.apache.fineract.validation.constraints.DateFormatValidator; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -58,7 +57,6 @@ public final class ClientDataValidator { private final EntityDatatableChecksRepository entityDatatableChecksRepository; private static final String MOBILE_NUMBER_REGEX = "^\\+?[0-9]{7,15}$"; - @Autowired public ClientDataValidator(final FromJsonHelper fromApiJsonHelper, final ConfigurationReadPlatformService configurationReadPlatformService, final EntityDatatableChecksRepository entityDatatableChecksRepository) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddressRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddressRepositoryWrapper.java index f1b139e8668..05d0647c8de 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddressRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddressRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.client.domain; import org.apache.fineract.infrastructure.codes.domain.CodeValue; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -27,7 +26,6 @@ public class ClientAddressRepositoryWrapper { private final ClientAddressRepository clientAddressRepository; - @Autowired public ClientAddressRepositoryWrapper(final ClientAddressRepository clientAddressRepository) { this.clientAddressRepository = clientAddressRepository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargeRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargeRepositoryWrapper.java index 92e7a0486af..a884bc9cb35 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargeRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargeRepositoryWrapper.java @@ -20,7 +20,6 @@ import org.apache.fineract.organisation.monetary.domain.OrganisationCurrencyRepositoryWrapper; import org.apache.fineract.portfolio.charge.exception.ChargeNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -29,7 +28,6 @@ public class ClientChargeRepositoryWrapper { private final ClientChargeRepository repository; private final OrganisationCurrencyRepositoryWrapper organisationCurrencyRepository; - @Autowired public ClientChargeRepositoryWrapper(final ClientChargeRepository repository, final OrganisationCurrencyRepositoryWrapper organisationCurrencyRepositoryWrapper) { this.repository = repository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java index 5517b42a529..08dac564f58 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.domain; import jakarta.persistence.Column; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembersRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembersRepository.java index 2e9dade0bfb..d4b9b62e592 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembersRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembersRepository.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.domain; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepositoryWrapper.java index ec360de8eac..809522c9152 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPersonRepositoryWrapper.java @@ -21,7 +21,6 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.client.exception.ClientNonPersonNotFoundByClientIdException; import org.apache.fineract.portfolio.client.exception.ClientNonPersonNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -35,7 +34,6 @@ public class ClientNonPersonRepositoryWrapper { private final ClientNonPersonRepository repository; private final PlatformSecurityContext context; - @Autowired public ClientNonPersonRepositoryWrapper(final ClientNonPersonRepository repository, final PlatformSecurityContext context) { this.repository = repository; this.context = context; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java index f5c114429b9..1c4b2f34101 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.domain; import jakarta.persistence.Column; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetailsRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetailsRepository.java index 3cd10164cf9..99607d46362 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetailsRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetailsRepository.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.domain; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetailsRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetailsRepositoryWrapper.java index d454a532bba..b817243ec5d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetailsRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetailsRepositoryWrapper.java @@ -16,10 +16,8 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.domain; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -27,7 +25,6 @@ public class ClientTransferDetailsRepositoryWrapper { private final ClientTransferDetailsRepository repository; - @Autowired public ClientTransferDetailsRepositoryWrapper(final ClientTransferDetailsRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/AddClientFamilyMemberCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/AddClientFamilyMemberCommandHandler.java index 2677e72002b..b87ac1655e5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/AddClientFamilyMemberCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/AddClientFamilyMemberCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/DeleteClientFamilyMemberCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/DeleteClientFamilyMemberCommandHandler.java index 2aaebe59ccc..0003b8b8681 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/DeleteClientFamilyMemberCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/DeleteClientFamilyMemberCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientFamilyMemberCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientFamilyMemberCommandHandler.java index 5080400d4aa..69ce26d5aa6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientFamilyMemberCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientFamilyMemberCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java index af5c6c473bb..66ea56a9b11 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.serialization; import com.google.gson.JsonArray; @@ -36,7 +35,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.core.service.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -66,7 +64,6 @@ public final class ClientFamilyMemberCommandFromApiJsonDeserializer { public static final String RELATION_SHIP_ID = "relationShipId"; private final FromJsonHelper fromApiJsonHelper; - @Autowired public ClientFamilyMemberCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientIdentifierCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientIdentifierCommandFromApiJsonDeserializer.java index 22914962a64..edb4208ea93 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientIdentifierCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientIdentifierCommandFromApiJsonDeserializer.java @@ -32,7 +32,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromApiJsonDeserializer; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.client.command.ClientIdentifierCommand; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -57,7 +56,6 @@ public final class ClientIdentifierCommandFromApiJsonDeserializer extends Abstra Arrays.asList(DOCUMENT_TYPE_ID, DOCUMENT_KEY, STATUS, DESCRIPTION, ISSUANCE_DATE, EXPIRY_DATE, LOCALE, DATE_FORMAT)); private final FromJsonHelper fromApiJsonHelper; - @Autowired public ClientIdentifierCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientAddressReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientAddressReadPlatformServiceImpl.java index 0ce164a69f0..ab905f68f78 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientAddressReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientAddressReadPlatformServiceImpl.java @@ -23,7 +23,6 @@ import java.util.Collection; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.address.data.ClientAddressData; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @@ -34,7 +33,6 @@ public class ClientAddressReadPlatformServiceImpl implements ClientAddressReadPl private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; - @Autowired public ClientAddressReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate) { this.context = context; this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformService.java index 686a6bb02f6..20aedb98ef0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersReadPlatformService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.service; import java.util.List; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformService.java index 9b7dd7edbb3..91545481f58 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.service; import org.apache.fineract.infrastructure.core.api.JsonCommand; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java index 4400f4c3d80..878b3dd9d2c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.client.service; import com.google.gson.JsonArray; @@ -39,7 +38,6 @@ import org.apache.fineract.portfolio.client.serialization.ClientFamilyMemberCommandFromApiJsonDeserializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -52,7 +50,6 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily private final ClientRepositoryWrapper clientRepositoryWrapper; private final ClientFamilyMemberCommandFromApiJsonDeserializer apiJsonDeserializer; - @Autowired public ClientFamilyMembersWritePlatformServiceImpl(final PlatformSecurityContext context, final CodeValueRepository codeValueRepository, final ClientFamilyMembersRepository clientFamilyRepository, final ClientRepositoryWrapper clientRepositoryWrapper, final ClientFamilyMemberCommandFromApiJsonDeserializer apiJsonDeserializer) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierWritePlatformServiceJpaRepositoryImpl.java index 11d82bcf3df..513c6f2b3ab 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierWritePlatformServiceJpaRepositoryImpl.java @@ -39,7 +39,6 @@ import org.apache.fineract.portfolio.client.serialization.ClientIdentifierCommandFromApiJsonDeserializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.orm.jpa.JpaSystemException; import org.springframework.stereotype.Service; @@ -56,7 +55,6 @@ public class ClientIdentifierWritePlatformServiceJpaRepositoryImpl implements Cl private final CodeValueRepositoryWrapper codeValueRepository; private final ClientIdentifierCommandFromApiJsonDeserializer clientIdentifierCommandFromApiJsonDeserializer; - @Autowired public ClientIdentifierWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final ClientRepositoryWrapper clientRepository, final ClientIdentifierRepository clientIdentifierRepository, final CodeValueRepositoryWrapper codeValueRepository, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/serialization/CollateralCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/serialization/CollateralCommandFromApiJsonDeserializer.java index 160a9aa39f5..aba572acf1c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/serialization/CollateralCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/serialization/CollateralCommandFromApiJsonDeserializer.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.collateral.api.CollateralApiConstants.CollateralJSONinputParams; import org.apache.fineract.portfolio.collateral.command.CollateralCommand; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -44,7 +43,6 @@ public final class CollateralCommandFromApiJsonDeserializer extends AbstractFrom private final FromJsonHelper fromApiJsonHelper; - @Autowired public CollateralCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagementRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagementRepositoryWrapper.java index 1eeef86592d..ec33881c4a5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagementRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagementRepositoryWrapper.java @@ -28,7 +28,6 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct; import org.apache.fineract.portfolio.loanproduct.domain.LoanProductRepository; import org.apache.fineract.portfolio.loanproduct.exception.LoanProductNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -38,7 +37,6 @@ public class ClientCollateralManagementRepositoryWrapper { private final ClientRepositoryWrapper clientRepositoryWrapper; private final LoanProductRepository loanProductRepository; - @Autowired public ClientCollateralManagementRepositoryWrapper(final ClientCollateralManagementRepository clientCollateralManagementRepository, final ClientRepositoryWrapper clientRepositoryWrapper, final LoanProductRepository loanProductRepository) { this.clientCollateralManagementRepository = clientCollateralManagementRepository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementRepositoryWrapper.java index 7089ca117f3..e3d5626e093 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementRepositoryWrapper.java @@ -20,7 +20,6 @@ import java.util.List; import org.apache.fineract.portfolio.collateral.exception.CollateralNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -28,7 +27,6 @@ public class CollateralManagementRepositoryWrapper { private final CollateralManagementDomainRepository collateralManagementDomainRepository; - @Autowired public CollateralManagementRepositoryWrapper(final CollateralManagementDomainRepository collateralManagementDomainRepository) { this.collateralManagementDomainRepository = collateralManagementDomainRepository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/serialization/CollateralManagementCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/serialization/CollateralManagementCommandFromApiJsonDeserializer.java index 2bf2cd42f12..74bdfb98ccb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/serialization/CollateralManagementCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/serialization/CollateralManagementCommandFromApiJsonDeserializer.java @@ -19,13 +19,11 @@ package org.apache.fineract.portfolio.collateralmanagement.serialization; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; public class CollateralManagementCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; - @Autowired public CollateralManagementCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/CollectionSheetTransactionDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/CollectionSheetTransactionDataValidator.java index 31ed4ded4ca..99ef1e4e67b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/CollectionSheetTransactionDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/CollectionSheetTransactionDataValidator.java @@ -42,7 +42,6 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.portfolio.collectionsheet.CollectionSheetConstants; import org.apache.fineract.portfolio.paymentdetail.PaymentDetailConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -71,7 +70,6 @@ public class CollectionSheetTransactionDataValidator { PaymentDetailConstants.routingCodeParamName, PaymentDetailConstants.receiptNumberParamName, PaymentDetailConstants.bankNumberParamName)); - @Autowired public CollectionSheetTransactionDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetBulkDisbursalCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetBulkDisbursalCommandFromApiJsonDeserializer.java index a591bf6ff52..296ce59c93e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetBulkDisbursalCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetBulkDisbursalCommandFromApiJsonDeserializer.java @@ -31,7 +31,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.collectionsheet.command.CollectionSheetBulkDisbursalCommand; import org.apache.fineract.portfolio.collectionsheet.command.SingleDisbursalCommand; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -43,7 +42,6 @@ public final class CollectionSheetBulkDisbursalCommandFromApiJsonDeserializer private final FromJsonHelper fromApiJsonHelper; - @Autowired public CollectionSheetBulkDisbursalCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetBulkRepaymentCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetBulkRepaymentCommandFromApiJsonDeserializer.java index 1df7450b89e..c46ff694d50 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetBulkRepaymentCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetBulkRepaymentCommandFromApiJsonDeserializer.java @@ -35,7 +35,6 @@ import org.apache.fineract.portfolio.collectionsheet.command.SingleRepaymentCommand; import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail; import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetailAssembler; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -48,7 +47,6 @@ public final class CollectionSheetBulkRepaymentCommandFromApiJsonDeserializer private final FromJsonHelper fromApiJsonHelper; private final PaymentDetailAssembler paymentDetailAssembler; - @Autowired public CollectionSheetBulkRepaymentCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper, final PaymentDetailAssembler paymentDetailAssembler) { this.fromApiJsonHelper = fromApiJsonHelper; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetGenerateCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetGenerateCommandFromApiJsonDeserializer.java index bd134480e3f..82b933d734b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetGenerateCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/serialization/CollectionSheetGenerateCommandFromApiJsonDeserializer.java @@ -41,7 +41,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -57,7 +56,6 @@ public class CollectionSheetGenerateCommandFromApiJsonDeserializer { Arrays.asList(transactionDateParamName, localeParamName, dateFormatParamName, officeIdParamName, staffIdParamName)); private final FromJsonHelper fromApiJsonHelper; - @Autowired public CollectionSheetGenerateCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/serialization/FundCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/serialization/FundCommandFromApiJsonDeserializer.java index fddf2834aea..6ae9467ffb6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/serialization/FundCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/serialization/FundCommandFromApiJsonDeserializer.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -49,7 +48,6 @@ public final class FundCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; - @Autowired public FundCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepositoryWrapper.java index e06899f17fb..c8d9e67ceba 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRepositoryWrapper.java @@ -21,7 +21,6 @@ import java.time.LocalDate; import org.apache.fineract.organisation.office.domain.Office; import org.apache.fineract.portfolio.group.exception.GroupNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -34,7 +33,6 @@ public class GroupRepositoryWrapper { private final GroupRepository repository; - @Autowired public GroupRepositoryWrapper(final GroupRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRoleRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRoleRepositoryWrapper.java index a9f445751f1..5af83af0dbc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRoleRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRoleRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.group.domain; import org.apache.fineract.portfolio.group.exception.GroupRoleNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -27,7 +26,6 @@ public class GroupRoleRepositoryWrapper { private final GroupRoleRepository repository; - @Autowired public GroupRoleRepositoryWrapper(final GroupRoleRepository rRepository) { this.repository = rRepository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupMemberNotFoundInGSIMException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupMemberNotFoundInGSIMException.java index 23817fbad7f..d64f4ef24c7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupMemberNotFoundInGSIMException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupMemberNotFoundInGSIMException.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.group.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupRolesDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupRolesDataValidator.java index 5c38b46ce9b..6bbb42ea31d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupRolesDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupRolesDataValidator.java @@ -35,7 +35,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.group.api.GroupingTypesApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -45,7 +44,6 @@ public class GroupRolesDataValidator { private static final Set GROUP_ROLES_REQUEST_DATA_PARAMETERS = new HashSet<>( Arrays.asList(GroupingTypesApiConstants.roleParamName, GroupingTypesApiConstants.clientIdParamName)); - @Autowired public GroupRolesDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupingTypesDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupingTypesDataValidator.java index 25470d90cb8..ca3077557a2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupingTypesDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupingTypesDataValidator.java @@ -39,7 +39,6 @@ import org.apache.fineract.portfolio.client.api.ClientApiConstants; import org.apache.fineract.portfolio.group.api.GroupingTypesApiConstants; import org.apache.fineract.portfolio.group.domain.GroupRepositoryWrapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -71,7 +70,6 @@ public final class GroupingTypesDataValidator { Arrays.asList(GroupingTypesApiConstants.localeParamName, GroupingTypesApiConstants.dateFormatParamName, GroupingTypesApiConstants.closureDateParamName, GroupingTypesApiConstants.closureReasonIdParamName)); - @Autowired public GroupingTypesDataValidator(final FromJsonHelper fromApiJsonHelper, final GroupRepositoryWrapper groupRepositoryWrapper) { this.fromApiJsonHelper = fromApiJsonHelper; this.groupRepositoryWrapper = groupRepositoryWrapper; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/starter/GroupConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/starter/GroupConfiguration.java index 3b6413f1a15..d24af120585 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/starter/GroupConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/starter/GroupConfiguration.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.group.starter; import org.apache.fineract.commands.service.CommandProcessingService; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartsApiResource.java index b5d605adf31..68fe22ca095 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/api/InterestRateChartsApiResource.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.api; import io.swagger.v3.oas.annotations.Operation; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartCreateCommand.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartCreateCommand.java index a0a72c6168d..c9eaa9964c3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartCreateCommand.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartCreateCommand.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.command; import lombok.Data; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartDeleteCommand.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartDeleteCommand.java index 1486c0a6f84..b9fc381e3a9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartDeleteCommand.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartDeleteCommand.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.command; import lombok.Data; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsCreateCommand.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsCreateCommand.java index 5b3cdde0057..2c1b1416004 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsCreateCommand.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsCreateCommand.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.command; import lombok.Data; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsDeleteCommand.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsDeleteCommand.java index fb62d9f9c50..0c33a75e37c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsDeleteCommand.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsDeleteCommand.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.command; import lombok.Data; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsUpdateCommand.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsUpdateCommand.java index 5d4905b8684..e3315bd317a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsUpdateCommand.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartSlabsUpdateCommand.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.command; import lombok.Data; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartUpdateCommand.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartUpdateCommand.java index ceab67450b8..72a30e7a8d4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartUpdateCommand.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/command/InterestRateChartUpdateCommand.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.command; import lombok.Data; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveDataValidator.java index ddeff959b7d..c67c6489711 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveDataValidator.java @@ -50,7 +50,6 @@ import org.apache.fineract.portfolio.interestratechart.incentive.InterestIncentiveAttributeName; import org.apache.fineract.portfolio.interestratechart.incentive.InterestIncentiveEntityType; import org.apache.fineract.portfolio.interestratechart.incentive.InterestIncentiveType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -66,7 +65,6 @@ public class InterestIncentiveDataValidator { Arrays.asList(InterestIncentiveApiConstants.idParamName, entityTypeParamName, attributeNameParamName, conditionTypeParamName, attributeValueParamName, incentiveTypeparamName, amountParamName)); - @Autowired public InterestIncentiveDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartCreateRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartCreateRequest.java index a28d768d581..c8448098353 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartCreateRequest.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartCreateRequest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import java.io.Serial; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartCreateResponse.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartCreateResponse.java index 05f353039ab..50aaa3fd29e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartCreateResponse.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartCreateResponse.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import java.io.Serial; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDataValidator.java index cd30a0544ea..57e6191feed 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDataValidator.java @@ -49,7 +49,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.portfolio.interestratechart.InterestRateChartApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -66,7 +65,6 @@ public class InterestRateChartDataValidator { nameParamName, descriptionParamName, fromDateParamName, endDateParamName, chartSlabs, InterestRateChartApiConstants.deleteParamName, isPrimaryGroupingByAmountParamName)); - @Autowired public InterestRateChartDataValidator(final FromJsonHelper fromApiJsonHelper, final InterestRateChartSlabDataValidator chartSlabDataValidator) { this.fromApiJsonHelper = fromApiJsonHelper; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDeleteRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDeleteRequest.java index 71d24d235e1..517a6fd253b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDeleteRequest.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDeleteRequest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import jakarta.validation.constraints.NotNull; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDeleteResponse.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDeleteResponse.java index 38f85f188df..fbe6dba156c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDeleteResponse.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartDeleteResponse.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import java.io.Serial; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabDataValidator.java index 0f8180b4920..991f0329b8f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabDataValidator.java @@ -51,7 +51,6 @@ import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType; import org.apache.fineract.portfolio.interestratechart.InterestIncentiveApiConstants; import org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -69,7 +68,6 @@ public class InterestRateChartSlabDataValidator { descriptionParamName, periodTypeParamName, fromPeriodParamName, toPeriodParamName, amountRangeFromParamName, amountRangeToParamName, annualInterestRateParamName, currencyCodeParamName, incentivesParamName)); - @Autowired public InterestRateChartSlabDataValidator(final FromJsonHelper fromApiJsonHelper, final InterestIncentiveDataValidator interestIncentiveDataValidator) { this.fromApiJsonHelper = fromApiJsonHelper; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsCreateRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsCreateRequest.java index 127959faa5a..ec776f94391 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsCreateRequest.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsCreateRequest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import io.swagger.v3.oas.annotations.Hidden; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsCreateResponse.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsCreateResponse.java index 62c59bd3182..e0bfded1eb3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsCreateResponse.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsCreateResponse.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import java.io.Serial; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsDeleteRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsDeleteRequest.java index e8f9e091efc..fd8d18fdd64 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsDeleteRequest.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsDeleteRequest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import jakarta.validation.constraints.NotNull; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsDeleteResponse.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsDeleteResponse.java index b8f9da85ee7..ad00cb334b2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsDeleteResponse.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsDeleteResponse.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import java.io.Serial; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsUpdateRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsUpdateRequest.java index c211c7e872d..fc34b08b81a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsUpdateRequest.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsUpdateRequest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import io.swagger.v3.oas.annotations.Hidden; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsUpdateResponse.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsUpdateResponse.java index 10ecaa4faa9..f788fe75626 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsUpdateResponse.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabsUpdateResponse.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import java.io.Serial; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartUpdateRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartUpdateRequest.java index 53b37587dca..753261947c3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartUpdateRequest.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartUpdateRequest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import io.swagger.v3.oas.annotations.Hidden; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartUpdateResponse.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartUpdateResponse.java index 7ac93d63be1..8bf8f2516b5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartUpdateResponse.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartUpdateResponse.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.data; import java.io.Serial; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartCreateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartCreateCommandHandler.java index 8555f12db51..2f8ff2a17b1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartCreateCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartCreateCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.handler; import io.github.resilience4j.retry.annotation.Retry; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartDeleteCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartDeleteCommandHandler.java index 530dc25064c..8b1dd6d288d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartDeleteCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartDeleteCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.handler; import io.github.resilience4j.retry.annotation.Retry; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsCreateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsCreateCommandHandler.java index 435ae43ecc8..4cb83f0866f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsCreateCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsCreateCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.handler; import io.github.resilience4j.retry.annotation.Retry; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsDeleteCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsDeleteCommandHandler.java index 9d1e29769b5..f9fa2bad135 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsDeleteCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsDeleteCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.handler; import io.github.resilience4j.retry.annotation.Retry; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsUpdateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsUpdateCommandHandler.java index 3fb86de012d..63319545ef6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsUpdateCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartSlabsUpdateCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.handler; import io.github.resilience4j.retry.annotation.Retry; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartUpdateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartUpdateCommandHandler.java index b9716a6aea0..faaf74b407d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartUpdateCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/handler/InterestRateChartUpdateCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.handler; import io.github.resilience4j.retry.annotation.Retry; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentiveDropdownReadService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentiveDropdownReadService.java index 69e67593020..471f8be1bf3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentiveDropdownReadService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentiveDropdownReadService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.util.Collection; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentivesDropdownReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentivesDropdownReadServiceImpl.java index 234f5de3fee..32fa506ca97 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentivesDropdownReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentivesDropdownReadServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.util.Collection; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentivesEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentivesEnumerations.java index f6864d90e23..23f7e5afabb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentivesEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentivesEnumerations.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.util.ArrayList; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartDropdownReadService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartDropdownReadService.java index 54d2416d4bb..6be92c7b101 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartDropdownReadService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartDropdownReadService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.util.Collection; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartDropdownReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartDropdownReadServiceImpl.java index 8d582b0557f..3b627be6ae3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartDropdownReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartDropdownReadServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.util.Collection; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadService.java index 0b61eee3eed..57d01e4281c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.util.Collection; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsReadService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsReadService.java index c21b5acfc8e..ceafca38952 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsReadService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsReadService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.util.List; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsReadServiceImpl.java index 24c39ec975d..1c661d44ebd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsReadServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.math.BigDecimal; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsWriteService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsWriteService.java index 9e5f3ed18f2..547e297c73e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsWriteService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsWriteService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import org.apache.fineract.portfolio.interestratechart.data.InterestRateChartSlabsCreateRequest; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsWriteServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsWriteServiceImpl.java index 94c7b12d3bd..b7519588f13 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsWriteServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabsWriteServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.math.BigDecimal; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartWriteService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartWriteService.java index 3ed739eb7d2..130b8f1e0ba 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartWriteService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartWriteService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import org.apache.fineract.portfolio.interestratechart.data.InterestRateChartCreateRequest; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartWriteServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartWriteServiceImpl.java index c9dbaf36d8c..ab1b6a4c213 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartWriteServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartWriteServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.service; import java.time.LocalDate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/starter/InterestRateChartConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/starter/InterestRateChartConfiguration.java index 0f7516fcc3f..f32049f5b93 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/starter/InterestRateChartConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/starter/InterestRateChartConfiguration.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.starter; import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java index 19f88a56c84..81dfe573f05 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java @@ -42,7 +42,6 @@ import org.apache.fineract.portfolio.loanaccount.guarantor.data.ObligeeData; import org.apache.fineract.portfolio.savings.data.DepositAccountOnHoldTransactionData; import org.apache.fineract.portfolio.savings.service.SavingsEnumerations; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -58,7 +57,6 @@ public class GuarantorReadPlatformServiceImpl implements GuarantorReadPlatformSe private final StaffReadService staffReadPlatformService; private final LoanRepositoryWrapper loanRepositoryWrapper; - @Autowired public GuarantorReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate, final ClientReadPlatformService clientReadPlatformService, final StaffReadService staffReadPlatformService, final LoanRepositoryWrapper loanRepositoryWrapper) { this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorWritePlatformServiceJpaRepositoryIImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorWritePlatformServiceJpaRepositoryIImpl.java index d15dcebc1b5..d2bc2c4fa61 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorWritePlatformServiceJpaRepositoryIImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorWritePlatformServiceJpaRepositoryIImpl.java @@ -57,7 +57,6 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccountAssembler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.NonTransientDataAccessException; import org.springframework.orm.jpa.JpaSystemException; @@ -80,7 +79,6 @@ public class GuarantorWritePlatformServiceJpaRepositoryIImpl implements Guaranto private final AccountAssociationsRepository accountAssociationsRepository; private final GuarantorDomainService guarantorDomainService; - @Autowired public GuarantorWritePlatformServiceJpaRepositoryIImpl(final LoanRepositoryWrapper loanRepositoryWrapper, final GuarantorRepository guarantorRepository, final ClientRepositoryWrapper clientRepositoryWrapper, final StaffRepositoryWrapper staffRepositoryWrapper, final GroupRepositoryWrapper groupRepositoryWrapper, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/accrualactivityposting/AccrualActivityPostingConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/accrualactivityposting/AccrualActivityPostingConfig.java index fdb9ae16407..f63d9a147c9 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/accrualactivityposting/AccrualActivityPostingConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/accrualactivityposting/AccrualActivityPostingConfig.java @@ -20,11 +20,11 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/accrualactivityposting/AccrualActivityPostingTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/accrualactivityposting/AccrualActivityPostingTasklet.java index 8b721deedc9..ac9d5020050 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/accrualactivityposting/AccrualActivityPostingTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/accrualactivityposting/AccrualActivityPostingTasklet.java @@ -30,10 +30,10 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; import org.apache.fineract.portfolio.loanaccount.service.LoanAccrualActivityProcessingService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.stereotype.Component; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesConfig.java index 50902ad8f32..cd0e442aa10 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesConfig.java @@ -19,11 +19,11 @@ package org.apache.fineract.portfolio.loanaccount.jobs.addaccrualentries; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesTasklet.java index ef4b06310bc..138d20479a7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesTasklet.java @@ -25,11 +25,11 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.jobs.exception.JobExecutionException; import org.apache.fineract.portfolio.loanaccount.service.LoanAccrualsProcessingService; -import org.springframework.batch.core.StepContribution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; -import org.springframework.lang.NonNull; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.stereotype.Component; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansConfig.java index 27fb15cdf99..b238c50632e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansConfig.java @@ -21,11 +21,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.loanaccount.service.LoanAccrualsProcessingService; import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansTasklet.java index 68d3e5d799d..b6a343cf087 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansTasklet.java @@ -27,10 +27,10 @@ import org.apache.fineract.infrastructure.jobs.exception.JobExecutionException; import org.apache.fineract.portfolio.loanaccount.service.LoanAccrualsProcessingService; import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentConfig.java index 056a2b76042..52cc1bf0f8b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentConfig.java @@ -22,11 +22,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.loanaccount.service.LoanChargeWritePlatformService; import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentTasklet.java index 0477ab170ee..7be6eb915bd 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentTasklet.java @@ -33,10 +33,10 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.data.OverdueLoanScheduleData; import org.apache.fineract.portfolio.loanaccount.service.LoanChargeWritePlatformService; import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansConfig.java index fe8c357e9bc..f51b3e7bf3a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansConfig.java @@ -19,11 +19,11 @@ package org.apache.fineract.portfolio.loanaccount.jobs.applyholidaystoloans; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansTasklet.java index ee14d9ce43a..55acf9a42d6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansTasklet.java @@ -44,10 +44,10 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanApplicationTerms; import org.apache.fineract.portfolio.loanaccount.mapper.LoanTermVariationsMapper; import org.apache.fineract.portfolio.loanaccount.service.LoanUtilService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.stereotype.Component; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningConfig.java index 564549fceae..4a934945f0f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningConfig.java @@ -21,11 +21,11 @@ import org.apache.fineract.accounting.provisioning.service.ProvisioningEntriesWritePlatformService; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.organisation.provisioning.service.ProvisioningCriteriaReadPlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTasklet.java index a444c45429f..b2187ac0218 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTasklet.java @@ -28,10 +28,10 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.organisation.provisioning.data.ProvisioningCriteriaData; import org.apache.fineract.organisation.provisioning.service.ProvisioningCriteriaReadPlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanConfig.java index b07942ad92d..c9ba504ba14 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanConfig.java @@ -24,11 +24,11 @@ import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; import org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService; import org.apache.fineract.portfolio.loanaccount.service.RecalculateInterestPoster; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanTasklet.java index 844a6c0b10a..66dd64e85a5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanTasklet.java @@ -22,7 +22,6 @@ import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; @@ -39,11 +38,11 @@ import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; import org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService; import org.apache.fineract.portfolio.loanaccount.service.RecalculateInterestPoster; -import org.springframework.batch.core.JobParameter; -import org.springframework.batch.core.StepContribution; +import org.springframework.batch.core.job.parameters.JobParameters; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationContext; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @@ -61,9 +60,9 @@ public class RecalculateInterestForLoanTasklet implements Tasklet { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { - Map> jobParameters = chunkContext.getStepContext().getStepExecution().getJobParameters().getParameters(); + JobParameters jobParameters = chunkContext.getStepContext().getStepExecution().getJobParameters(); if (!jobParameters.isEmpty()) { - final String officeId = (String) jobParameters.get("officeId").getValue(); + final String officeId = jobParameters.getString("officeId"); log.debug("recalculateInterest: officeId={}", officeId); Long officeIdLong = Long.valueOf(officeId); @@ -71,8 +70,8 @@ public RepeatStatus execute(StepContribution contribution, ChunkContext chunkCon if (office == null) { throw new OfficeNotFoundException(officeIdLong); } - final int threadPoolSize = Integer.parseInt((String) jobParameters.get("thread-pool-size").getValue()); - final int batchSize = Integer.parseInt((String) jobParameters.get("batch-size").getValue()); + final int threadPoolSize = Integer.parseInt(jobParameters.getString("thread-pool-size")); + final int batchSize = Integer.parseInt(jobParameters.getString("batch-size")); recalculateInterest(office, threadPoolSize, batchSize); } else { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansConfig.java index 76d3fc9cc8a..d34a8ae8082 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansConfig.java @@ -22,11 +22,11 @@ import org.apache.fineract.portfolio.account.service.AccountAssociationsReadPlatformService; import org.apache.fineract.portfolio.account.service.AccountTransfersWritePlatformService; import org.apache.fineract.portfolio.loanaccount.service.LoanChargeReadPlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansTasklet.java index b0c30566979..d252ce79239 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansTasklet.java @@ -39,10 +39,10 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; import org.apache.fineract.portfolio.loanaccount.service.LoanChargeReadPlatformService; import org.apache.fineract.portfolio.loanproduct.exception.LinkedAccountRequiredException; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java index a4c6279b182..9e28b839694 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java @@ -38,7 +38,6 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleData; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanSchedulePeriodData; import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -53,7 +52,6 @@ public class LoanScheduleHistoryReadPlatformServiceImpl implements LoanScheduleH private final JdbcTemplate jdbcTemplate; private final PlatformSecurityContext context; - @Autowired public LoanScheduleHistoryReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate, final PlatformSecurityContext context) { this.context = context; this.jdbcTemplate = jdbcTemplate; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanScheduleValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanScheduleValidator.java index 76909dfde31..02b61d25521 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanScheduleValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanScheduleValidator.java @@ -38,7 +38,6 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.portfolio.loanaccount.api.LoanApiConstants; import org.apache.fineract.portfolio.loanproduct.LoanProductConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -80,7 +79,6 @@ public final class LoanScheduleValidator { private final FromJsonHelper fromApiJsonHelper; - @Autowired public LoanScheduleValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanTransactionValidatorImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanTransactionValidatorImpl.java index 45b5809d44e..aa77c93d1e2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanTransactionValidatorImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanTransactionValidatorImpl.java @@ -94,7 +94,7 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleType; import org.apache.fineract.portfolio.loanaccount.service.LoanUtilService; import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Component; @Component("loanTransactionValidator") diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java index 82b630e9a72..3735c15984f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.loanaccount.service; import java.math.BigDecimal; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualActivityProcessingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualActivityProcessingServiceImpl.java index 0a40e116e74..cb3daee0a1b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualActivityProcessingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualActivityProcessingServiceImpl.java @@ -53,8 +53,8 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationTypeEnum; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; +import org.jspecify.annotations.NonNull; import org.springframework.data.domain.PageRequest; -import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java index fbb50eeaa1c..3425ef97c84 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java @@ -360,7 +360,7 @@ private void addAccruals(@NonNull final Loan loan, @NonNull LocalDate tillDate, if (progressiveAccrual && accruedTill != null && !DateUtils.isAfter(tillDate, accruedTill)) { if (isFinal) { adjustAccrualsAfter(loan, accrualDate, addJournal); - } else if (loanTransactionRepository.existsNonReversedByLoanAndTypesAndOnOrAfterDate(loan, ACCRUAL_TYPES, accrualDate) + } else if (loanTransactionRepository.existsNonReversedAccrualOnOrAfterDate(loan, accrualDate) && hasNoActiveChargeOnDate(loan, accrualDate)) { return; } @@ -968,8 +968,9 @@ private void addUpdateIncomeAndAccrualTransaction(Loan loan, LoanInterestRecalcu private void createUpdateIncomePostingTransaction(Loan loan, LoanInterestRecalcualtionAdditionalDetails compoundingDetail, BigDecimal interest, BigDecimal fee, BigDecimal penalties, ExternalId externalId) { - final Optional incomeTransaction = loanTransactionRepository.findNonReversedByLoanAndTypesAndDate(loan, - Set.of(INCOME_POSTING), compoundingDetail.getEffectiveDate()); + final Optional incomeTransaction = loanTransactionRepository + .findNonReversedByLoanAndDate(loan, compoundingDetail.getEffectiveDate()).stream() + .filter(t -> t.getTypeOf() == INCOME_POSTING).findFirst(); if (incomeTransaction.isEmpty()) { final LoanTransaction transaction = LoanTransaction.incomePosting(loan, loan.getOffice(), compoundingDetail.getEffectiveDate(), compoundingDetail.getAmount(), interest, fee, penalties, externalId); @@ -995,8 +996,9 @@ private void createUpdateAccrualTransaction(Loan loan, LoanInterestRecalcualtion } if (loan.isPeriodicAccrualAccountingEnabledOnLoanProduct()) { - final Optional accrualTransaction = loanTransactionRepository.findNonReversedByLoanAndTypesAndDate(loan, - Set.of(LoanTransactionType.ACCRUAL, LoanTransactionType.ACCRUAL_ADJUSTMENT), compoundingDetail.getEffectiveDate()); + final Optional accrualTransaction = loanTransactionRepository + .findNonReversedByLoanAndDate(loan, compoundingDetail.getEffectiveDate()).stream() + .filter(t -> ACCRUAL_TYPES.contains(t.getTypeOf())).findFirst(); if (accrualTransaction.isEmpty() || !MathUtil.isEqualTo(accrualTransaction.get().getAmount(), compoundingDetail.getAmount())) { accrualTransaction.ifPresent(accrualTrans -> reverseTransaction(accrualTrans, addEvent)); @@ -1075,8 +1077,7 @@ private void createIncomePostingAndAccrualTransactionOnLoanClosure(Loan loan, Lo journalEntryPoster.postJournalEntriesForLoanTransaction(savedFinalIncomeTransaction, false, false); if (loan.isPeriodicAccrualAccountingEnabledOnLoanProduct()) { - final LocalDate lastAccruedDate = loanTransactionRepository - .findLastNonReversedTransactionDateByLoanAndTypes(loan, ACCRUAL_TYPES) // + final LocalDate lastAccruedDate = loanTransactionRepository.findLastNonReversedAccrualTransactionDate(loan) .orElse(loan.getDisbursementDate()); HashMap feeDetails = new HashMap<>(); @@ -1103,10 +1104,10 @@ private Map determineReceivableIncomeForeClosure(final Loan loan, .findTransactionDataForForeclosureIncome(loan, tillDate); for (TransactionPortionsForForeclosure transactionPortion : transactionPortions) { - LoanTransactionType transactionType = transactionPortion.getTransactionType(); - BigDecimal interestPortion = transactionPortion.getInterestPortion(); - BigDecimal feePortion = transactionPortion.getFeeChargesPortion(); - BigDecimal penaltyPortion = transactionPortion.getPenaltyChargesPortion(); + LoanTransactionType transactionType = transactionPortion.transactionType(); + BigDecimal interestPortion = transactionPortion.interestPortion(); + BigDecimal feePortion = transactionPortion.feeChargesPortion(); + BigDecimal penaltyPortion = transactionPortion.penaltyChargesPortion(); if (transactionType.isAccrual()) { receivableInterest = receivableInterest.plus(Money.of(currency, interestPortion)); @@ -1177,8 +1178,8 @@ private void ensureAccrualTransactionMappings(final Loan loan, final boolean cha } private List retrieveListOfAccrualTransactions(final Loan loan) { - return loanTransactionRepository.findNonReversedByLoanAndTypes(loan, ACCRUAL_TYPES).stream() - .sorted(LoanTransactionComparator.INSTANCE).collect(Collectors.toList()); + return loanTransactionRepository.findNonReversedAccrualsByLoan(loan).stream().sorted(LoanTransactionComparator.INSTANCE) + .collect(Collectors.toList()); } private boolean isChargeOnDueDate() { @@ -1254,12 +1255,12 @@ private void updateLoanChargesPaidBy(Loan loan, LoanTransaction accrual, Map types, final LocalDate effectiveDate, final boolean addEvent) { - loanTransactionRepository.findNonReversedByLoanAndTypesAndAfterDate(loan, types, effectiveDate) + loanTransactionRepository.findNonReversedByLoanAndAfterDate(loan, effectiveDate).stream().filter(t -> types.contains(t.getTypeOf())) .forEach(transaction -> reverseTransaction(transaction, addEvent)); } private void reverseTransactionsOnOrAfter(final Loan loan, final Set types, final LocalDate date) { - loanTransactionRepository.findNonReversedByLoanAndTypesAndOnOrAfterDate(loan, types, date) + loanTransactionRepository.findNonReversedByLoanAndOnOrAfterDate(loan, date).stream().filter(t -> types.contains(t.getTypeOf())) .forEach(transaction -> reverseTransaction(transaction, true)); } @@ -1269,9 +1270,10 @@ private void reverseTransactionsOnOrAfter(final Loan loan, final Set { - createAccrualAdjustment(loan, transaction, addEvent); - }); + loanTransactionRepository.findNonReversedByLoanAndAfterDate(loan, lastDueDate).stream().filter(t -> t.getTypeOf() == ACCRUAL) + .forEach(transaction -> { + createAccrualAdjustment(loan, transaction, addEvent); + }); } private void createAccrualAdjustment(final Loan loan, final LoanTransaction accrualTransaction, final boolean addEvent) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanBuyDownFeeAmortizationProcessingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanBuyDownFeeAmortizationProcessingServiceImpl.java index 85f5d14e35a..0d6cf8a6785 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanBuyDownFeeAmortizationProcessingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanBuyDownFeeAmortizationProcessingServiceImpl.java @@ -44,7 +44,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; import org.apache.fineract.portfolio.loanaccount.repository.LoanBuyDownFeeBalanceRepository; import org.apache.fineract.portfolio.loanaccount.util.BuyDownFeeAmortizationUtil; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingServiceImpl.java index 710635a3626..ba57aea3397 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingServiceImpl.java @@ -45,7 +45,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; import org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository; import org.apache.fineract.portfolio.loanaccount.util.CapitalizedIncomeAmortizationUtil; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanDisbursementService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanDisbursementService.java index 66b40cd6797..7e4bd334666 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanDisbursementService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanDisbursementService.java @@ -59,7 +59,7 @@ import org.apache.fineract.portfolio.loanaccount.serialization.LoanChargeValidator; import org.apache.fineract.portfolio.loanaccount.serialization.LoanDisbursementValidator; import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java index 5a4bda1f74f..419bef8cb14 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java @@ -1636,14 +1636,14 @@ public Collection retrieveAllOverdueInstallmentsForLoan @Override public Integer retriveLoanCounter(final Long groupId, final Integer loanType, Long productId) { final String sql = "Select MAX(l.loan_product_counter) from m_loan l where l.group_id = ? and l.loan_type_enum = ? and l.product_id=?"; - return this.jdbcTemplate.queryForObject(sql, new Object[] { groupId, loanType, productId }, Integer.class); + return this.jdbcTemplate.queryForObject(sql, Integer.class, groupId, loanType, productId); } @SuppressWarnings("deprecation") @Override public Integer retriveLoanCounter(final Long clientId, Long productId) { final String sql = "Select MAX(l.loan_product_counter) from m_loan l where l.client_id = ? and l.product_id=?"; - return this.jdbcTemplate.queryForObject(sql, new Object[] { clientId, productId }, Integer.class); + return this.jdbcTemplate.queryForObject(sql, Integer.class, clientId, productId); } @Override diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanTransactionAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanTransactionAssembler.java index d199848968b..e6b1ab1eb21 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanTransactionAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanTransactionAssembler.java @@ -35,7 +35,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail; import org.apache.fineract.portfolio.paymentdetail.service.PaymentDetailWritePlatformService; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; @RequiredArgsConstructor public class LoanTransactionAssembler { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixReadPlatformServiceImpl.java index bdbf2a9700c..3d9093450f1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixReadPlatformServiceImpl.java @@ -28,7 +28,6 @@ import org.apache.fineract.portfolio.loanproduct.productmix.data.ProductMixData; import org.apache.fineract.portfolio.loanproduct.productmix.exception.ProductMixNotFoundException; import org.apache.fineract.portfolio.loanproduct.service.LoanProductReadPlatformService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -42,7 +41,6 @@ public class ProductMixReadPlatformServiceImpl implements ProductMixReadPlatform private final JdbcTemplate jdbcTemplate; private final LoanProductReadPlatformService loanProductReadPlatformService; - @Autowired public ProductMixReadPlatformServiceImpl(final PlatformSecurityContext context, final JdbcTemplate jdbcTemplate, final LoanProductReadPlatformService loanProductReadPlatformService) { this.context = context; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixWritePlatformServiceJpaRepositoryImpl.java index 008dd45c5d5..4efe341bf6b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/service/ProductMixWritePlatformServiceJpaRepositoryImpl.java @@ -40,7 +40,6 @@ import org.apache.fineract.portfolio.loanproduct.productmix.exception.ProductMixNotFoundException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.NonTransientDataAccessException; import org.springframework.orm.jpa.JpaSystemException; @@ -57,7 +56,6 @@ public class ProductMixWritePlatformServiceJpaRepositoryImpl implements ProductM private final ProductMixRepository productMixRepository; private final LoanProductRepository productRepository; - @Autowired public ProductMixWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final ProductMixRepository productMixRepository, final LoanProductRepository productRepository) { this.context = context; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/MeetingRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/MeetingRepositoryWrapper.java index f125037b572..adfac24ba53 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/MeetingRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/MeetingRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.meeting.domain; import org.apache.fineract.portfolio.meeting.exception.MeetingNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -38,7 +37,6 @@ public class MeetingRepositoryWrapper { private final MeetingRepository repository; - @Autowired public MeetingRepositoryWrapper(final MeetingRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/listener/NoteListener.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/listener/NoteListener.java index e3ac4f2eb6d..0b2b46207c3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/listener/NoteListener.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/listener/NoteListener.java @@ -20,7 +20,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.fineract.portfolio.note.data.NoteCreateRequest; +import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; +import org.apache.fineract.portfolio.note.data.NoteCreateEvent; import org.apache.fineract.portfolio.note.service.NoteWritePlatformService; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; @@ -33,17 +34,26 @@ class NoteListener { private final NoteWritePlatformService noteWritePlatformService; @EventListener - void onCreate(NoteCreateRequest request) { - noteWritePlatformService.createNote(request); + void onCreate(NoteCreateEvent event) { + createNote(event); } @EventListener - void onUpdate(NoteCreateRequest request) { - noteWritePlatformService.createNote(request); + void onUpdate(NoteCreateEvent event) { + createNote(event); } @EventListener - void onDelete(NoteCreateRequest request) { - noteWritePlatformService.createNote(request); + void onDelete(NoteCreateEvent event) { + createNote(event); + } + + private void createNote(NoteCreateEvent event) { + ThreadLocalContextUtil.init(event.getContext()); + try { + noteWritePlatformService.createNote(event.getRequest()); + } finally { + ThreadLocalContextUtil.reset(); + } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/api/RateApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/api/RateApiResource.java index c18d11224da..8941b77a83e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/api/RateApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/api/RateApiResource.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.rate.api; import io.swagger.v3.oas.annotations.Operation; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/RateRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/RateRepositoryWrapper.java index 4bed457f1f5..cd46cbf4b5e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/RateRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/RateRepositoryWrapper.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Objects; import org.apache.fineract.portfolio.rate.exception.RateNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -30,7 +29,6 @@ public class RateRepositoryWrapper { private final RateRepository repository; - @Autowired public RateRepositoryWrapper(final RateRepository repository) { this.repository = repository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/exception/RateNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/exception/RateNotFoundException.java index 625e0d1be1c..0750b4b024e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/exception/RateNotFoundException.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/exception/RateNotFoundException.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.rate.exception; import org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/serialization/RateDefinitionCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/serialization/RateDefinitionCommandFromApiJsonDeserializer.java index e341e225696..e119ef261d2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/serialization/RateDefinitionCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/serialization/RateDefinitionCommandFromApiJsonDeserializer.java @@ -35,7 +35,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.portfolio.rate.api.RateApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -49,7 +48,6 @@ public class RateDefinitionCommandFromApiJsonDeserializer { private final FromJsonHelper fromApiJsonHelper; - @Autowired public RateDefinitionCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateEnumerations.java index 041fcc7ae35..71f21e69aa6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateEnumerations.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.rate.service; import org.apache.fineract.infrastructure.core.data.EnumOptionData; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java index 754b7a8cbd1..7dc16c1e4cf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.rate.service; import java.math.BigDecimal; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositAccountTransactionsApiResourceSwagger.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositAccountTransactionsApiResourceSwagger.java index 0f27bf85e75..c4b2eb6c758 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositAccountTransactionsApiResourceSwagger.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositAccountTransactionsApiResourceSwagger.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.api; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountDataValidator.java index 9c690ac314a..cb8159e5aad 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountDataValidator.java @@ -96,7 +96,6 @@ import org.apache.fineract.portfolio.savings.SavingsPeriodFrequencyType; import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.savings.domain.SavingsAccount; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -105,7 +104,6 @@ public class DepositAccountDataValidator { private final FromJsonHelper fromApiJsonHelper; private final DepositProductDataValidator productDataValidator; - @Autowired public DepositAccountDataValidator(final FromJsonHelper fromApiJsonHelper, final DepositProductDataValidator productDataValidator) { this.fromApiJsonHelper = fromApiJsonHelper; this.productDataValidator = productDataValidator; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountTransactionDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountTransactionDataValidator.java index f3740f790e8..70b7d51f209 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountTransactionDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountTransactionDataValidator.java @@ -53,7 +53,6 @@ import org.apache.fineract.portfolio.savings.DepositAccountType; import org.apache.fineract.portfolio.savings.DepositsApiConstants; import org.apache.fineract.portfolio.savings.SavingsApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -82,7 +81,6 @@ public class DepositAccountTransactionDataValidator { private static final Set DEPOSIT_ACCOUNT_PRE_MATURE_CALCULATION_REQUEST_DATA_PARAMETERS = new HashSet<>( Arrays.asList(DepositsApiConstants.localeParamName, DepositsApiConstants.dateFormatParamName, closedOnDateParamName)); - @Autowired public DepositAccountTransactionDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java index 80af0549f00..203389d2e2d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountAssembler.java @@ -100,7 +100,6 @@ import org.apache.fineract.portfolio.savings.exception.RecurringDepositProductNotFoundException; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; import org.apache.fineract.useradministration.domain.AppUser; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -123,7 +122,6 @@ public class DepositAccountAssembler { private final ExternalIdFactory externalIdFactory; private final ConfigurationDomainService configurationDomainService; - @Autowired public DepositAccountAssembler(final SavingsAccountTransactionSummaryWrapper savingsAccountTransactionSummaryWrapper, final ClientRepositoryWrapper clientRepository, final GroupRepositoryWrapper groupRepository, final StaffRepositoryWrapper staffRepository, final FixedDepositProductRepository fixedDepositProductRepository, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java index 2574ba5fa9f..1a2af577a8d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java @@ -80,7 +80,6 @@ import org.apache.fineract.useradministration.domain.AppUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; @@ -102,7 +101,6 @@ public class SavingsAccountAssembler { private final ConfigurationDomainService configurationDomainService; private final ExternalIdFactory externalIdFactory; - @Autowired public SavingsAccountAssembler(final SavingsAccountTransactionSummaryWrapper savingsAccountTransactionSummaryWrapper, final SavingsAccountTransactionDataSummaryWrapper savingsAccountTransactionDataSummaryWrapper, final ClientRepositoryWrapper clientRepository, final GroupRepositoryWrapper groupRepository, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/CloseGSIMCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/CloseGSIMCommandHandler.java index d03b23abe7a..317b34263de 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/CloseGSIMCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/CloseGSIMCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMAccountActivationCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMAccountActivationCommandHandler.java index 1d762523aec..c1bd54e42e6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMAccountActivationCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMAccountActivationCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMApplicationApprovalCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMApplicationApprovalCommandHandler.java index dbfe1663f0b..b3108384a74 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMApplicationApprovalCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMApplicationApprovalCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMApplicationRejectionHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMApplicationRejectionHandler.java index 0f46ee0880d..da5d72e29fe 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMApplicationRejectionHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMApplicationRejectionHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMDepositCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMDepositCommandHandler.java index f530588d38a..b0ea4d6f72a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMDepositCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMDepositCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMUndoApprovalCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMUndoApprovalCommandHandler.java index 94004637c22..c6f80c0058d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMUndoApprovalCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/GSIMUndoApprovalCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/addaccrualtransactionforsavings/AddAccrualTransactionForSavingsConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/addaccrualtransactionforsavings/AddAccrualTransactionForSavingsConfig.java index b9b61ccea86..d4d0fb6a18d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/addaccrualtransactionforsavings/AddAccrualTransactionForSavingsConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/addaccrualtransactionforsavings/AddAccrualTransactionForSavingsConfig.java @@ -20,11 +20,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.savings.service.SavingsAccrualWritePlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/addaccrualtransactionforsavings/AddAccrualTransactionForSavingsTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/addaccrualtransactionforsavings/AddAccrualTransactionForSavingsTasklet.java index 5638221996b..0143661e481 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/addaccrualtransactionforsavings/AddAccrualTransactionForSavingsTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/addaccrualtransactionforsavings/AddAccrualTransactionForSavingsTasklet.java @@ -24,10 +24,10 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.jobs.exception.JobExecutionException; import org.apache.fineract.portfolio.savings.service.SavingsAccrualWritePlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @RequiredArgsConstructor public class AddAccrualTransactionForSavingsTasklet implements Tasklet { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsConfig.java index f2170bcba51..1c31d2ef3de 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsConfig.java @@ -21,11 +21,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.savings.service.SavingsAccountChargeReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsTasklet.java index eb929d523ac..83e02ec2a09 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsTasklet.java @@ -28,10 +28,10 @@ import org.apache.fineract.portfolio.savings.data.SavingsAccountAnnualFeeData; import org.apache.fineract.portfolio.savings.service.SavingsAccountChargeReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleConfig.java index f49661a690d..1696216f858 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleConfig.java @@ -20,11 +20,11 @@ import org.apache.fineract.adhocquery.service.AdHocReadPlatformService; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleTasklet.java index e5c71132469..9be457639c1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleTasklet.java @@ -30,10 +30,10 @@ import org.apache.fineract.adhocquery.service.AdHocReadPlatformService; import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.jdbc.core.JdbcTemplate; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleConfig.java index 64cc452ce31..2b60a0b0a3f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleConfig.java @@ -22,11 +22,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.savings.service.DepositAccountReadPlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleTasklet.java index e49ffe3ce5e..eab90cbb85c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleTasklet.java @@ -37,10 +37,10 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.savings.DepositAccountUtils; import org.apache.fineract.portfolio.savings.service.DepositAccountReadPlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.jdbc.core.JdbcTemplate; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesConfig.java index 8da16a36593..87c9f6d13b2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesConfig.java @@ -21,11 +21,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.savings.service.SavingsAccountChargeReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesTasklet.java index 0fb54dbaeab..8bfe5d2da98 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesTasklet.java @@ -30,10 +30,10 @@ import org.apache.fineract.portfolio.savings.data.SavingsAccountAnnualFeeData; import org.apache.fineract.portfolio.savings.service.SavingsAccountChargeReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingConfig.java index b82dd2397b3..4102cab7877 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingConfig.java @@ -25,11 +25,11 @@ import org.apache.fineract.portfolio.savings.service.SavingsAccountReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; import org.apache.fineract.portfolio.savings.service.SavingsSchedularInterestPosterTask; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingTasklet.java index e579456ec3c..6b1433a0261 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingTasklet.java @@ -38,10 +38,10 @@ import org.apache.fineract.portfolio.savings.data.SavingsAccountData; import org.apache.fineract.portfolio.savings.service.SavingsAccountReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsSchedularInterestPosterTask; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationContext; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsConfig.java index 255b4912deb..e41ccb90ec4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsConfig.java @@ -21,11 +21,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.account.service.AccountTransfersWritePlatformService; import org.apache.fineract.portfolio.savings.service.DepositAccountReadPlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsTasklet.java index 0632438c1e2..75da073df66 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsTasklet.java @@ -29,10 +29,10 @@ import org.apache.fineract.portfolio.account.service.AccountTransfersWritePlatformService; import org.apache.fineract.portfolio.savings.exception.InsufficientAccountBalanceException; import org.apache.fineract.portfolio.savings.service.DepositAccountReadPlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsConfig.java index 0a02bfc7705..d86cbcf7947 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsConfig.java @@ -21,11 +21,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.savings.service.DepositAccountReadPlatformService; import org.apache.fineract.portfolio.savings.service.DepositAccountWritePlatformService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsTasklet.java index 5f956586a40..1dc6561e6c0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsTasklet.java @@ -29,10 +29,10 @@ import org.apache.fineract.portfolio.savings.data.DepositAccountData; import org.apache.fineract.portfolio.savings.service.DepositAccountReadPlatformService; import org.apache.fineract.portfolio.savings.service.DepositAccountWritePlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsConfig.java index 87222732432..233e454e919 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsConfig.java @@ -19,11 +19,11 @@ package org.apache.fineract.portfolio.savings.jobs.updatesavingsdormantaccounts; import org.apache.fineract.infrastructure.jobs.service.JobName; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsTasklet.java index 29c751cd613..76663e7a3ba 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsTasklet.java @@ -25,10 +25,10 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.portfolio.savings.service.SavingsAccountReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.stereotype.Component; @Slf4j diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositAccountInterestCalculationService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositAccountInterestCalculationService.java index 8a93e0f0ea4..e40b4b3899e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositAccountInterestCalculationService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositAccountInterestCalculationService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.service; import java.util.HashMap; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositAccountInterestCalculationServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositAccountInterestCalculationServiceImpl.java index 5a67649deff..99373fbf614 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositAccountInterestCalculationServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositAccountInterestCalculationServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.service; import static org.apache.fineract.portfolio.savings.DepositsApiConstants.annualInterestRateParamName; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GroupSavingsIndividualMonitoringWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GroupSavingsIndividualMonitoringWritePlatformService.java index 3dbe63da1da..bb79e6892f1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GroupSavingsIndividualMonitoringWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GroupSavingsIndividualMonitoringWritePlatformService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.service; import java.math.BigDecimal; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java index 562f9883c2d..186f5c44fe6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java @@ -49,14 +49,13 @@ import org.apache.fineract.portfolio.search.data.TableQueryData; import org.apache.fineract.portfolio.search.data.TransactionSearchRequest; import org.apache.fineract.portfolio.search.service.SearchUtil; +import org.jspecify.annotations.NonNull; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.support.PageableExecutionUtils; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; -import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import org.springframework.transaction.annotation.Transactional; @Transactional(readOnly = true) @@ -103,7 +102,7 @@ public Page searchTransactions(@NonNull Long savi MathUtil.formatToSql(searchParameters.getToAmount()), columnFilters); Page emptyResult = PageableExecutionUtils.getPage(new ArrayList<>(0), pageable, () -> 0); - if (addTransactionTypesFilter(searchParameters, columnFilters) == null) { + if (noMatchingTransactionTypes(searchParameters, columnFilters)) { return emptyResult; } @@ -140,8 +139,7 @@ private static void addFromToFilter(@NonNull String column, String fromValue, St } } - @Nullable - private static Boolean addTransactionTypesFilter(@NonNull TransactionSearchRequest searchParameters, + private static boolean noMatchingTransactionTypes(@NonNull TransactionSearchRequest searchParameters, List columnFilters) { Predicate filter = null; Boolean credit = searchParameters.getCredit(); @@ -167,11 +165,11 @@ private static Boolean addTransactionTypesFilter(@NonNull TransactionSearchReque filter = filter.and(t -> t != SavingsAccountTransactionType.INVALID); List filteredTypes = SavingsAccountTransactionType.getFiltered(filter); if (filteredTypes.isEmpty()) { - return null; + return true; } else { String[] values = filteredTypes.stream().map(t -> String.valueOf(t.getId())).toArray(String[]::new); columnFilters.add(ColumnFilterData.create("transaction_type_enum", SqlOperator.IN, values)); - return true; + return false; } } return false; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountRepositoryWrapper.java index 59a0820e1b3..536bf5f471a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.shareaccounts.domain; import org.apache.fineract.portfolio.accounts.exceptions.ShareAccountNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -27,7 +26,6 @@ public class ShareAccountRepositoryWrapper { private final ShareAccountRepository shareAccountRepository; - @Autowired public ShareAccountRepositoryWrapper(final ShareAccountRepository shareAccountRepository) { this.shareAccountRepository = shareAccountRepository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesConfig.java index 48e8c6152c1..83395f8d938 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesConfig.java @@ -21,11 +21,11 @@ import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.portfolio.shareaccounts.service.ShareAccountDividendReadPlatformService; import org.apache.fineract.portfolio.shareaccounts.service.ShareAccountSchedularService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; -import org.springframework.batch.core.launch.support.RunIdIncrementer; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesTasklet.java index a85515b7c0f..34c9077735f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesTasklet.java @@ -29,10 +29,10 @@ import org.apache.fineract.infrastructure.jobs.exception.JobExecutionException; import org.apache.fineract.portfolio.shareaccounts.service.ShareAccountDividendReadPlatformService; import org.apache.fineract.portfolio.shareaccounts.service.ShareAccountSchedularService; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @Slf4j @RequiredArgsConstructor diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java index 794edefca25..cd8d11585db 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java @@ -71,7 +71,6 @@ import org.apache.fineract.useradministration.domain.AppUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -108,7 +107,6 @@ public class ShareAccountDataSerializer { ShareAccountApiConstants.requesteddate_paramname, ShareAccountApiConstants.requestedshares_paramname, ShareAccountApiConstants.purchasedprice_paramname, ShareAccountApiConstants.dateformat_paramname)); - @Autowired public ShareAccountDataSerializer(final PlatformSecurityContext platformSecurityContext, final FromJsonHelper fromApiJsonHelper, final ChargeRepositoryWrapper chargeRepository, final SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper, final ClientRepositoryWrapper clientRepositoryWrapper, final ShareProductRepositoryWrapper shareProductRepository, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividentPayOutDetailsRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividentPayOutDetailsRepositoryWrapper.java index 753e610a692..cd440bd4292 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividentPayOutDetailsRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividentPayOutDetailsRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.shareproducts.domain; import org.apache.fineract.portfolio.shareproducts.exception.DividendNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -27,7 +26,6 @@ public class ShareProductDividentPayOutDetailsRepositoryWrapper { private final ShareProductDividentPayOutDetailsRepository shareProductDividentPayOutDetailsRepository; - @Autowired public ShareProductDividentPayOutDetailsRepositoryWrapper( final ShareProductDividentPayOutDetailsRepository shareProductDividentPayOutDetailsRepository) { this.shareProductDividentPayOutDetailsRepository = shareProductDividentPayOutDetailsRepository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductRepositoryWrapper.java index 7c107ab06f4..9eab5d3b31c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductRepositoryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.shareproducts.domain; import org.apache.fineract.portfolio.products.exception.ProductNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -27,7 +26,6 @@ public class ShareProductRepositoryWrapper { private final ShareProductRepository shareProductRepository; - @Autowired public ShareProductRepositoryWrapper(final ShareProductRepository shareProductRepository) { this.shareProductRepository = shareProductRepository; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java index fa7bc44c100..b5cc40f19c4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java @@ -52,7 +52,6 @@ import org.apache.fineract.portfolio.shareproducts.data.ShareProductMarketPriceData; import org.apache.fineract.portfolio.shareproducts.domain.ShareProduct; import org.apache.fineract.portfolio.shareproducts.domain.ShareProductMarketPrice; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -82,7 +81,6 @@ public class ShareProductDataSerializer { private final ChargeRepositoryWrapper chargeRepository; private final PlatformSecurityContext platformSecurityContext; - @Autowired public ShareProductDataSerializer(final FromJsonHelper fromApiJsonHelper, final ChargeRepositoryWrapper chargeRepository, final PlatformSecurityContext platformSecurityContext) { this.fromApiJsonHelper = fromApiJsonHelper; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/data/TransfersDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/data/TransfersDataValidator.java index cf697a5e5bd..9216464806d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/data/TransfersDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/data/TransfersDataValidator.java @@ -36,7 +36,6 @@ import org.apache.fineract.portfolio.client.api.ClientApiConstants; import org.apache.fineract.portfolio.group.api.GroupingTypesApiConstants; import org.apache.fineract.portfolio.transfer.api.TransferApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -66,7 +65,6 @@ public final class TransfersDataValidator { private static final Set WITHDRAW_CLIENT_TRANSFER_DATA_PARAMETERS = new HashSet<>(Arrays.asList(TransferApiConstants.note)); - @Autowired public TransfersDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java b/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java index edf42dab0dc..8e5241dd74b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java +++ b/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java @@ -18,7 +18,6 @@ */ package org.apache.fineract.template.domain; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -36,6 +35,7 @@ import lombok.Setter; import lombok.experimental.Accessors; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; +import tools.jackson.databind.annotation.JsonSerialize; @Entity @Table(name = "m_template", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name") }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateEntity.java b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateEntity.java index 4c8e545149a..e514dd5d21d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateEntity.java +++ b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateEntity.java @@ -18,8 +18,8 @@ */ package org.apache.fineract.template.domain; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.google.gson.annotations.SerializedName; +import tools.jackson.databind.annotation.JsonSerialize; @JsonSerialize(using = TemplateEntitySerializer.class) public enum TemplateEntity { diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateEntitySerializer.java b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateEntitySerializer.java index b2ffa42d82c..0bf70981c45 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateEntitySerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateEntitySerializer.java @@ -18,22 +18,20 @@ */ package org.apache.fineract.template.domain; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import java.io.IOException; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; -public class TemplateEntitySerializer extends JsonSerializer { +public class TemplateEntitySerializer extends ValueSerializer { @Override public void serialize(final TemplateEntity value, final JsonGenerator generator, - @SuppressWarnings("unused") final SerializerProvider provider) throws IOException, JsonProcessingException { + @SuppressWarnings("unused") final SerializationContext provider) { generator.writeStartObject(); - generator.writeFieldName("id"); + generator.writeName("id"); generator.writeNumber(value.getId()); - generator.writeFieldName("name"); + generator.writeName("name"); generator.writeString(value.getName()); generator.writeEndObject(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateType.java b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateType.java index 7ca149fd8db..26f681a1559 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateType.java +++ b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateType.java @@ -18,8 +18,8 @@ */ package org.apache.fineract.template.domain; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.google.gson.annotations.SerializedName; +import tools.jackson.databind.annotation.JsonSerialize; @JsonSerialize(using = TemplateTypeSerializer.class) public enum TemplateType { diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateTypeSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateTypeSerializer.java index ce37561b489..570f727a4b7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateTypeSerializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateTypeSerializer.java @@ -18,22 +18,20 @@ */ package org.apache.fineract.template.domain; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import java.io.IOException; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; -public class TemplateTypeSerializer extends JsonSerializer { +public class TemplateTypeSerializer extends ValueSerializer { @Override public void serialize(final TemplateType value, final JsonGenerator generator, - @SuppressWarnings("unused") final SerializerProvider provider) throws IOException, JsonProcessingException { + @SuppressWarnings("unused") final SerializationContext provider) { generator.writeStartObject(); - generator.writeFieldName("id"); + generator.writeName("id"); generator.writeNumber(value.getId()); - generator.writeFieldName("name"); + generator.writeName("name"); generator.writeString(value.getName()); generator.writeEndObject(); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/service/TemplateMergeServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/template/service/TemplateMergeServiceImpl.java index e484401ee02..70603080b03 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/template/service/TemplateMergeServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/template/service/TemplateMergeServiceImpl.java @@ -18,7 +18,6 @@ */ package org.apache.fineract.template.service; -import com.fasterxml.jackson.databind.ObjectMapper; import com.github.mustachejava.DefaultMustacheFactory; import com.github.mustachejava.Mustache; import com.github.mustachejava.MustacheFactory; @@ -51,6 +50,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; +import tools.jackson.databind.json.JsonMapper; @Slf4j @RequiredArgsConstructor @@ -118,7 +118,7 @@ private Map getMapFromUrl(final String url) throws IOException { if (connection.getContentType().equals("text/plain")) { result.put("src", response); } else { - result = new ObjectMapper().readValue(response, HashMap.class); + result = new JsonMapper().readValue(response, HashMap.class); } return result; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/service/TrustModifier.java b/fineract-provider/src/main/java/org/apache/fineract/template/service/TrustModifier.java index 390bca73e7b..4e6ee29fe6b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/template/service/TrustModifier.java +++ b/fineract-provider/src/main/java/org/apache/fineract/template/service/TrustModifier.java @@ -48,8 +48,7 @@ private TrustModifier() { public static void relaxHostChecking(final HttpURLConnection conn) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException { - if (conn instanceof HttpsURLConnection) { - final HttpsURLConnection httpsConnection = (HttpsURLConnection) conn; + if (conn instanceof HttpsURLConnection httpsConnection) { final SSLSocketFactory factory = prepFactory(httpsConnection); httpsConnection.setSSLSocketFactory(factory); httpsConnection.setHostnameVerifier(TRUSTING_HOSTNAME_VERIFIER); diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PasswordPreferencesDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PasswordPreferencesDataValidator.java index 86959cb8bbb..d9c86a113ad 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PasswordPreferencesDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PasswordPreferencesDataValidator.java @@ -34,7 +34,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.useradministration.api.PasswordPreferencesApiConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -44,7 +43,6 @@ public class PasswordPreferencesDataValidator { private static final Set REQUEST_DATA_PARAMETERS = new HashSet<>( Arrays.asList(PasswordPreferencesApiConstants.VALIDATION_POLICY_ID)); - @Autowired public PasswordPreferencesDataValidator(FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/JpaUserDomainService.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/JpaUserDomainService.java index 6b8c123019d..c6fffa03ba5 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/JpaUserDomainService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/JpaUserDomainService.java @@ -20,7 +20,6 @@ import org.apache.fineract.infrastructure.core.service.PlatformEmailService; import org.apache.fineract.infrastructure.security.service.PlatformPasswordEncoder; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,7 +30,6 @@ public class JpaUserDomainService implements UserDomainService { private final PlatformPasswordEncoder applicationPasswordEncoder; private final PlatformEmailService emailService; - @Autowired public JpaUserDomainService(final AppUserRepository userRepository, final PlatformPasswordEncoder applicationPasswordEncoder, final PlatformEmailService emailService) { this.userRepository = userRepository; diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/serialization/PermissionsCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/serialization/PermissionsCommandFromApiJsonDeserializer.java index 327bcc4e1df..1803f7307db 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/serialization/PermissionsCommandFromApiJsonDeserializer.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/serialization/PermissionsCommandFromApiJsonDeserializer.java @@ -30,7 +30,6 @@ import org.apache.fineract.infrastructure.core.serialization.FromApiJsonDeserializer; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.useradministration.command.PermissionsCommand; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -45,7 +44,6 @@ public final class PermissionsCommandFromApiJsonDeserializer extends AbstractFro private static final Set SUPPORTED_PARAMETERS = new HashSet<>(Arrays.asList("permissions")); private final FromJsonHelper fromApiJsonHelper; - @Autowired public PermissionsCommandFromApiJsonDeserializer(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleDataValidator.java index 3e11d5daf65..92cba644164 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleDataValidator.java @@ -33,7 +33,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -50,7 +49,6 @@ public final class RoleDataValidator { private final FromJsonHelper fromApiJsonHelper; - @Autowired public RoleDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/UserDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/UserDataValidator.java index 6a382872bd9..ec344e67986 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/UserDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/UserDataValidator.java @@ -40,7 +40,6 @@ import org.apache.fineract.useradministration.domain.AppUser; import org.apache.fineract.useradministration.domain.PasswordValidationPolicy; import org.apache.fineract.useradministration.domain.PasswordValidationPolicyRepository; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -72,7 +71,6 @@ public final class UserDataValidator { private final PasswordValidationPolicyRepository passwordValidationPolicy; - @Autowired public UserDataValidator(final FromJsonHelper fromApiJsonHelper, final PasswordValidationPolicyRepository passwordValidationPolicy) { this.fromApiJsonHelper = fromApiJsonHelper; this.passwordValidationPolicy = passwordValidationPolicy; diff --git a/fineract-provider/src/main/resources/META-INF/orm.xml b/fineract-provider/src/main/resources/META-INF/orm.xml index 4f05f84e62d..3a1c4a0e3d2 100644 --- a/fineract-provider/src/main/resources/META-INF/orm.xml +++ b/fineract-provider/src/main/resources/META-INF/orm.xml @@ -23,8 +23,7 @@ + xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence/orm https://jakarta.ee/xml/ns/persistence/orm/orm_3_0.xsd" version="3.0"> diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml index 4c0a187a5e5..e3f0c3ba520 100644 --- a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml +++ b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml @@ -270,4 +270,5 @@ + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0251_spring_batch_6_upgrade.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0251_spring_batch_6_upgrade.xml new file mode 100644 index 00000000000..b402667c0d4 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0251_spring_batch_6_upgrade.xml @@ -0,0 +1,46 @@ + + + + + + + + ALTER SEQUENCE BATCH_JOB_SEQ RENAME TO BATCH_JOB_INSTANCE_SEQ; + + + + + + RENAME TABLE BATCH_JOB_SEQ TO BATCH_JOB_INSTANCE_SEQ; + + + diff --git a/fineract-provider/src/main/webapp/WEB-INF/web.xml b/fineract-provider/src/main/webapp/WEB-INF/web.xml index 21c476b6802..7038f2dd49e 100644 --- a/fineract-provider/src/main/webapp/WEB-INF/web.xml +++ b/fineract-provider/src/main/webapp/WEB-INF/web.xml @@ -19,10 +19,10 @@ under the License. --> - + xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" + id="fineract-platform-provider" version="6.0"> Fineract Platform A provider of microfinance services which applications can diff --git a/fineract-provider/src/test/java/org/apache/fineract/AbstractSpringTest.java b/fineract-provider/src/test/java/org/apache/fineract/AbstractSpringTest.java index eef3ccd035a..a92fdc9586d 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/AbstractSpringTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/AbstractSpringTest.java @@ -21,16 +21,13 @@ import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.web.WebAppConfiguration; -@ExtendWith(SpringExtension.class) @TestPropertySource("classpath:application-test.properties") @WebAppConfiguration -@ContextConfiguration(classes = TestConfiguration.class) +@SpringJUnitConfig(classes = TestConfiguration.class) public class AbstractSpringTest { @BeforeAll diff --git a/fineract-provider/src/test/java/org/apache/fineract/TestConfiguration.java b/fineract-provider/src/test/java/org/apache/fineract/TestConfiguration.java index e5866903f18..a68ab818802 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/TestConfiguration.java +++ b/fineract-provider/src/test/java/org/apache/fineract/TestConfiguration.java @@ -46,21 +46,21 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; +import org.springframework.batch.core.configuration.JobLocator; import org.springframework.batch.core.configuration.JobRegistry; -import org.springframework.batch.core.explore.JobExplorer; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.batch.core.launch.JobOperator; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.repository.explore.JobExplorer; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration; -import org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties; -import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; +import org.springframework.boot.batch.autoconfigure.BatchAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.gson.autoconfigure.GsonAutoConfiguration; +import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; +import org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration; +import org.springframework.boot.liquibase.autoconfigure.LiquibaseAutoConfiguration; +import org.springframework.boot.liquibase.autoconfigure.LiquibaseProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @@ -78,9 +78,8 @@ * (and faster to run such tests). */ @Configuration -@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, - DataSourceTransactionManagerAutoConfiguration.class, GsonAutoConfiguration.class, JdbcTemplateAutoConfiguration.class, - LiquibaseAutoConfiguration.class, BatchAutoConfiguration.class }) +@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, + GsonAutoConfiguration.class, JdbcTemplateAutoConfiguration.class, LiquibaseAutoConfiguration.class, BatchAutoConfiguration.class }) @EnableTransactionManagement @EnableWebSecurity @EnableConfigurationProperties({ FineractProperties.class, LiquibaseProperties.class }) @@ -200,6 +199,12 @@ public JobRegistry jobRegistry() { return mock(JobRegistry.class, RETURNS_MOCKS); } + @Primary + @Bean + public JobLocator jobLocator() { + return mock(JobLocator.class, RETURNS_MOCKS); + } + @Primary @Bean public JobRepository jobRepository() { diff --git a/fineract-provider/src/test/java/org/apache/fineract/TestSuite.java b/fineract-provider/src/test/java/org/apache/fineract/TestSuite.java index a198623488e..e9cc6b4ea5c 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/TestSuite.java +++ b/fineract-provider/src/test/java/org/apache/fineract/TestSuite.java @@ -19,17 +19,14 @@ package org.apache.fineract; import io.cucumber.spring.CucumberContextConfiguration; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.web.WebAppConfiguration; @CucumberContextConfiguration -@ExtendWith(SpringExtension.class) @TestPropertySource("classpath:application-test.properties") @WebAppConfiguration -@ContextConfiguration(classes = TestConfiguration.class) +@SpringJUnitConfig(classes = TestConfiguration.class) // @SpringBootTest(classes = TestConfiguration.class) public class TestSuite { diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/CommandStrategyUtilsTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/CommandStrategyUtilsTest.java index b15fbf35e47..ff5dec42121 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/CommandStrategyUtilsTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/CommandStrategyUtilsTest.java @@ -127,8 +127,8 @@ public void testBuildRequestFromQueryParametersTypeConversion(String fieldName, // then assertThat(result).isNotNull(); Object actualValue = getFieldValue(result, fieldName); - if (expectedValue instanceof BigDecimal) { - assertThat((BigDecimal) actualValue).isEqualByComparingTo((BigDecimal) expectedValue); + if (expectedValue instanceof BigDecimal decimal) { + assertThat((BigDecimal) actualValue).isEqualByComparingTo(decimal); } else { assertThat(actualValue).isEqualTo(expectedValue); } diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustChargeByChargeExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustChargeByChargeExternalIdCommandStrategyTest.java index b9b1c6af562..781e6d06fae 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustChargeByChargeExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustChargeByChargeExternalIdCommandStrategyTest.java @@ -32,7 +32,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustChargeCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustChargeCommandStrategyTest.java index 31ce6eed890..f5fa0774eba 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustChargeCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustChargeCommandStrategyTest.java @@ -31,7 +31,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionByExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionByExternalIdCommandStrategyTest.java index 541740c6db3..154172df629 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionByExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionByExternalIdCommandStrategyTest.java @@ -32,7 +32,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionCommandStrategyTest.java index 2942478f7dd..419a1d8e2b3 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/AdjustLoanTransactionCommandStrategyTest.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CollectChargesByLoanExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CollectChargesByLoanExternalIdCommandStrategyTest.java index a3d8d3a8bdc..126000fbd50 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CollectChargesByLoanExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CollectChargesByLoanExternalIdCommandStrategyTest.java @@ -33,7 +33,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateAccountTransferCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateAccountTransferCommandStrategyTest.java index f472a2517e8..9d2e3c13450 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateAccountTransferCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateAccountTransferCommandStrategyTest.java @@ -32,7 +32,7 @@ import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateChargeByLoanExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateChargeByLoanExternalIdCommandStrategyTest.java index 0b917c3f8f2..f83eb35d846 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateChargeByLoanExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateChargeByLoanExternalIdCommandStrategyTest.java @@ -32,7 +32,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateDatatableEntryCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateDatatableEntryCommandStrategyTest.java index 51daced8cda..9840def3c49 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateDatatableEntryCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateDatatableEntryCommandStrategyTest.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategyTest.java index 6dfc8702024..80f156c0c63 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategyTest.java @@ -29,7 +29,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateSavingsAccountChargeCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateSavingsAccountChargeCommandStrategyTest.java index a5469118d8e..a928febd91c 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateSavingsAccountChargeCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateSavingsAccountChargeCommandStrategyTest.java @@ -29,7 +29,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateTransactionByLoanExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateTransactionByLoanExternalIdCommandStrategyTest.java index 07bce8239c0..a987c8d84a4 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateTransactionByLoanExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateTransactionByLoanExternalIdCommandStrategyTest.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategyTest.java index ae6317f9b00..464d12d2284 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategyTest.java @@ -29,7 +29,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/DisburseToSavingsCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/DisburseToSavingsCommandStrategyTest.java index 8ae7e57e4f3..4a1d711020a 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/DisburseToSavingsCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/DisburseToSavingsCommandStrategyTest.java @@ -29,7 +29,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetChargeByChargeExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetChargeByChargeExternalIdCommandStrategyTest.java index ceea0670b74..c9b2f0b775c 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetChargeByChargeExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetChargeByChargeExternalIdCommandStrategyTest.java @@ -33,7 +33,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetChargeByIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetChargeByIdCommandStrategyTest.java index 58c7643b2ec..3ed2d8424c8 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetChargeByIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetChargeByIdCommandStrategyTest.java @@ -32,7 +32,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdAndDataTableIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdAndDataTableIdCommandStrategyTest.java index af96927a23e..d36fe369844 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdAndDataTableIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdAndDataTableIdCommandStrategyTest.java @@ -33,7 +33,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.assertj.core.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategyTest.java index b2962806439..247acadee20 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategyTest.java @@ -34,7 +34,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanByExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanByExternalIdCommandStrategyTest.java index 1d0f33d0081..3d920d5f89d 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanByExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanByExternalIdCommandStrategyTest.java @@ -36,7 +36,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategyTest.java index ca80698b312..2ed79946463 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategyTest.java @@ -34,7 +34,7 @@ import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.core.api.MutableUriInfo; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByExternalIdCommandStrategyTest.java index d088df7fd15..322c76cbf5c 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByExternalIdCommandStrategyTest.java @@ -32,7 +32,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByIdCommandStrategyTest.java index 9ed960674a7..d69efd78af4 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanTransactionByIdCommandStrategyTest.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanExternalIdCommandStrategyTest.java index 0b601d520c5..9379fbb8480 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanExternalIdCommandStrategyTest.java @@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; import org.apache.fineract.portfolio.loanaccount.api.request.ReAgePreviewRequest; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleData; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanIdCommandStrategyTest.java index 5d2e1c2ab95..b6c05b2c27f 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetReagePreviewByLoanIdCommandStrategyTest.java @@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource; import org.apache.fineract.portfolio.loanaccount.api.request.ReAgePreviewRequest; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleData; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/LoanStateTransistionsByExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/LoanStateTransistionsByExternalIdCommandStrategyTest.java index 1f92bb903dc..d820641ec5a 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/LoanStateTransistionsByExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/LoanStateTransistionsByExternalIdCommandStrategyTest.java @@ -33,7 +33,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationByExternalIdCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationByExternalIdCommandStrategyTest.java index 33307919cb9..2eadbeb51fb 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationByExternalIdCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationByExternalIdCommandStrategyTest.java @@ -32,7 +32,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationCommandStrategyTest.java index eb92505d273..8225447bb6c 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/ModifyLoanApplicationCommandStrategyTest.java @@ -31,7 +31,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.loanaccount.api.LoansApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/PaySavingsAccountChargeCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/PaySavingsAccountChargeCommandStrategyTest.java index b114fa8bf8d..3c4465bb3bd 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/PaySavingsAccountChargeCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/PaySavingsAccountChargeCommandStrategyTest.java @@ -30,7 +30,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/UpdateDatatableEntryOneToManyCommandStrategyTest.java b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/UpdateDatatableEntryOneToManyCommandStrategyTest.java index b5f5567a758..d3b717de1e7 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/UpdateDatatableEntryOneToManyCommandStrategyTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/UpdateDatatableEntryOneToManyCommandStrategyTest.java @@ -28,7 +28,7 @@ import org.apache.fineract.batch.domain.BatchRequest; import org.apache.fineract.batch.domain.BatchResponse; import org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; diff --git a/fineract-provider/src/test/java/org/apache/fineract/cob/common/InitialisationTaskletStepDefinitions.java b/fineract-provider/src/test/java/org/apache/fineract/cob/common/InitialisationTaskletStepDefinitions.java index 80f831f4129..27ed640253e 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/cob/common/InitialisationTaskletStepDefinitions.java +++ b/fineract-provider/src/test/java/org/apache/fineract/cob/common/InitialisationTaskletStepDefinitions.java @@ -34,11 +34,13 @@ import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.useradministration.domain.AppUser; import org.apache.fineract.useradministration.domain.AppUserRepositoryWrapper; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.JobInstance; +import org.springframework.batch.core.job.parameters.JobParameters; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.scope.context.StepContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.security.core.context.SecurityContextHolder; public class InitialisationTaskletStepDefinitions implements En { @@ -67,7 +69,7 @@ public InitialisationTaskletStepDefinitions() { businessDates.put(BusinessDateType.BUSINESS_DATE, businessDate); businessDates.put(BusinessDateType.COB_DATE, cobBusinessDate); ThreadLocalContextUtil.setBusinessDates(businessDates); - JobExecution jobExecution = new JobExecution(1L); + JobExecution jobExecution = new JobExecution(1L, new JobInstance(1L, "job"), new JobParameters()); jobExecution.getExecutionContext().put(LoanCOBConstant.BUSINESS_DATE_PARAMETER_NAME, cobBusinessDate.format(DateTimeFormatter.ISO_DATE)); StepExecution stepExecution = new StepExecution("step", jobExecution); diff --git a/fineract-provider/src/test/java/org/apache/fineract/cob/listener/JobExecutionContextCopyListenerTest.java b/fineract-provider/src/test/java/org/apache/fineract/cob/listener/JobExecutionContextCopyListenerTest.java index a3de553429f..8d89884b318 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/cob/listener/JobExecutionContextCopyListenerTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/cob/listener/JobExecutionContextCopyListenerTest.java @@ -29,9 +29,11 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.JobInstance; +import org.springframework.batch.core.job.parameters.JobParameters; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; @ExtendWith(MockitoExtension.class) public class JobExecutionContextCopyListenerTest { @@ -46,7 +48,7 @@ public void verifyJobExecutionContextMapIsCopiedToEmptyStepExecutionContextMap() Map jobExecutionContextMap = createRandomHashmap(); jobExecutionContextMap.put("BusinessDate", "value"); jobExecutionContextMap.put("IS_CATCH_UP", "value"); - final JobExecution jobExecution = new JobExecution(1L); + final JobExecution jobExecution = new JobExecution(1L, new JobInstance(1L, "job"), new JobParameters()); jobExecution.setExecutionContext(new ExecutionContext(jobExecutionContextMap)); final StepExecution stepExecution = new StepExecution("someStep", jobExecution); @@ -68,7 +70,7 @@ public void verifyStepExecutionContextMapNotOverwritten() { expectedStepExecutionContextMap.put("BusinessDate", "BusinessDate anotherValue"); expectedStepExecutionContextMap.put("IS_CATCH_UP", "IS_CATCH_UP anotherValue"); - final JobExecution jobExecution = new JobExecution(1L); + final JobExecution jobExecution = new JobExecution(1L, new JobInstance(1L, "job"), new JobParameters()); jobExecution.setExecutionContext(new ExecutionContext(jobExecutionContextMap)); final StepExecution actualStepExecution = new StepExecution("someStep", jobExecution); actualStepExecution.setExecutionContext(new ExecutionContext(expectedStepExecutionContextMap)); diff --git a/fineract-provider/src/test/java/org/apache/fineract/cob/listener/LoanItemListenerStepDefinitions.java b/fineract-provider/src/test/java/org/apache/fineract/cob/listener/LoanItemListenerStepDefinitions.java index 08f0c1b2e68..1911b1bc148 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/cob/listener/LoanItemListenerStepDefinitions.java +++ b/fineract-provider/src/test/java/org/apache/fineract/cob/listener/LoanItemListenerStepDefinitions.java @@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.mockito.Mockito; -import org.springframework.batch.item.Chunk; +import org.springframework.batch.infrastructure.item.Chunk; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.support.TransactionTemplate; diff --git a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/ApplyLoanLockTaskletStepDefinitions.java b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/ApplyLoanLockTaskletStepDefinitions.java index 00edcec67b2..0ae1a0dd886 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/ApplyLoanLockTaskletStepDefinitions.java +++ b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/ApplyLoanLockTaskletStepDefinitions.java @@ -42,11 +42,13 @@ import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepContribution; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.JobInstance; +import org.springframework.batch.core.job.parameters.JobParameters; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.support.TransactionTemplate; @@ -72,7 +74,7 @@ public ApplyLoanLockTaskletStepDefinitions() { HashMap businessDateMap = new HashMap<>(); businessDateMap.put(BusinessDateType.COB_DATE, LocalDate.now(ZoneId.systemDefault())); ThreadLocalContextUtil.setBusinessDates(businessDateMap); - JobExecution jobExecution = new JobExecution(1L, null); + JobExecution jobExecution = new JobExecution(1L, new JobInstance(1L, "job"), new JobParameters()); StepExecution stepExecution = new StepExecution("test", jobExecution); ExecutionContext executionContext = new ExecutionContext(); COBParameter loanCOBParameter = new COBParameter(1L, 4L); diff --git a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanCOBPartitionerTest.java b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanCOBPartitionerTest.java index a5c1459e91a..2ffebb6e509 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanCOBPartitionerTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanCOBPartitionerTest.java @@ -38,12 +38,12 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.job.JobExecution; import org.springframework.batch.core.launch.JobExecutionNotRunningException; import org.springframework.batch.core.launch.JobOperator; import org.springframework.batch.core.launch.NoSuchJobExecutionException; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; @ExtendWith(MockitoExtension.class) class LoanCOBPartitionerTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemProcessorStepDefinitions.java b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemProcessorStepDefinitions.java index 9b2709b3fe9..687d1685d07 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemProcessorStepDefinitions.java +++ b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemProcessorStepDefinitions.java @@ -33,9 +33,11 @@ import org.apache.fineract.cob.COBBusinessStepService; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.service.ProgressiveLoanModelProcessingService; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.JobInstance; +import org.springframework.batch.core.job.parameters.JobParameters; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; public class LoanItemProcessorStepDefinitions implements En { @@ -53,7 +55,7 @@ public class LoanItemProcessorStepDefinitions implements En { public LoanItemProcessorStepDefinitions() { Given("/^The LoanItemProcessor.process method with item (.*)$/", (String loanItem) -> { - JobExecution jobExecution = new JobExecution(1L); + JobExecution jobExecution = new JobExecution(1L, new JobInstance(1L, "job"), new JobParameters()); jobExecution.getExecutionContext().put(LoanCOBConstant.BUSINESS_DATE_PARAMETER_NAME, LocalDate.now(ZoneId.systemDefault()).toString()); StepExecution stepExecution = new StepExecution("test", jobExecution); diff --git a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemReaderStepDefinitions.java b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemReaderStepDefinitions.java index a65d826efa2..3a0bea63230 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemReaderStepDefinitions.java +++ b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemReaderStepDefinitions.java @@ -45,9 +45,11 @@ import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.JobInstance; +import org.springframework.batch.core.job.parameters.JobParameters; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; public class LoanItemReaderStepDefinitions implements En { @@ -68,7 +70,7 @@ public class LoanItemReaderStepDefinitions implements En { public LoanItemReaderStepDefinitions() { Given("/^The LoanItemReader.read method with loanIds (.*)$/", (String loanIds) -> { - JobExecution jobExecution = new JobExecution(1L); + JobExecution jobExecution = new JobExecution(1L, new JobInstance(1L, "job"), new JobParameters()); ExecutionContext jobExecutionContext = new ExecutionContext(); jobExecution.setExecutionContext(jobExecutionContext); StepExecution stepExecution = new StepExecution("test", jobExecution); diff --git a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemReaderTest.java b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemReaderTest.java index 7e98a274363..ffc13eaf286 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemReaderTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemReaderTest.java @@ -48,9 +48,9 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; @ExtendWith(MockitoExtension.class) class LoanItemReaderTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemWriterStepDefinitions.java b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemWriterStepDefinitions.java index f6f6c568114..e8f39e46a21 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemWriterStepDefinitions.java +++ b/fineract-provider/src/test/java/org/apache/fineract/cob/loan/LoanItemWriterStepDefinitions.java @@ -27,14 +27,14 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; import org.mockito.Mockito; -import org.springframework.batch.item.Chunk; +import org.springframework.batch.infrastructure.item.Chunk; public class LoanItemWriterStepDefinitions implements En { private final LockingService loanLockingService = mock(LockingService.class); private final LoanRepository loanRepository = mock(LoanRepository.class); - private final LoanItemWriter loanItemWriter = new LoanItemWriter(loanLockingService); + private final LoanItemWriter loanItemWriter = new LoanItemWriter(loanRepository, loanLockingService); private Chunk items; diff --git a/fineract-provider/src/test/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsTaskletTest.java index fa4ef94028f..ba5af298b98 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/commands/jobs/PurgeProcessedCommandsTaskletTest.java @@ -45,9 +45,9 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @ExtendWith(MockitoExtension.class) public class PurgeProcessedCommandsTaskletTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/data/BusinessDateSerializationTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/data/BusinessDateSerializationTest.java index 87721a3d08c..749d1b948c7 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/data/BusinessDateSerializationTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/data/BusinessDateSerializationTest.java @@ -21,22 +21,25 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import java.time.LocalDate; import java.time.ZoneId; import org.apache.fineract.infrastructure.businessdate.data.api.BusinessDateResponse; import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType; +import org.apache.fineract.infrastructure.core.jersey.serializer.legacy.JacksonLocalDateArrayModule; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; class BusinessDateSerializationTest { - private final ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule()) - .setSerializationInclusion(JsonInclude.Include.NON_NULL); + private final ObjectMapper mapper = JsonMapper.builder() + .changeDefaultPropertyInclusion( + incl -> incl.withContentInclusion(JsonInclude.Include.NON_NULL).withValueInclusion(JsonInclude.Include.NON_NULL)) + .addModule(new JacksonLocalDateArrayModule()).build(); @Test - void serializeBusinessDateData() throws JsonProcessingException { + void serializeBusinessDateData() throws JacksonException { var now = LocalDate.now(ZoneId.systemDefault()); var businessDateResponse = BusinessDateResponse.builder().type(BusinessDateType.BUSINESS_DATE) .description(BusinessDateType.BUSINESS_DATE.getDescription()).date(now).build(); @@ -48,7 +51,7 @@ void serializeBusinessDateData() throws JsonProcessingException { } @Test - void serializeBusinessDateData_COB() throws JsonProcessingException { + void serializeBusinessDateData_COB() throws JacksonException { var now = LocalDate.now(ZoneId.systemDefault()); var businessDateResponse = BusinessDateResponse.builder().type(BusinessDateType.COB_DATE) .description(BusinessDateType.COB_DATE.getDescription()).date(now).build(); diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/classpath/ClasspathDuplicatesStepDefinitions.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/classpath/ClasspathDuplicatesStepDefinitions.java index 7afdd8b21ca..3969cce01bb 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/classpath/ClasspathDuplicatesStepDefinitions.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/classpath/ClasspathDuplicatesStepDefinitions.java @@ -209,6 +209,12 @@ private boolean isHarmlessDuplicate(String resourcePath) { || resourcePath.endsWith("classic-engine.properties") // || resourcePath.endsWith("loader.properties") // // ProGuard configuration files are safe to have multiple versions of - || resourcePath.equals("META-INF/proguard/gson.pro"); // + || resourcePath.equals("META-INF/proguard/gson.pro") // + // commons-email2-jakarta depends on commons-email2-core, both ship the identical + // MIME type mapping resource + || resourcePath.equals("META-INF/mime.types") // + // httpclient5 and docker-java-transport-zerodep both bundle the identical + // Mozilla public suffix list data file + || resourcePath.equals("org/publicsuffix/list/effective_tld_names.dat"); // } } diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/config/ContentS3ConfigTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/config/ContentS3ConfigTest.java index 881a474f280..1749052d325 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/config/ContentS3ConfigTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/config/ContentS3ConfigTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.config; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/config/TransactionManagerDataSourceInvariantTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/config/TransactionManagerDataSourceInvariantTest.java index 7f6a5bf5cb5..efaa47ec1e8 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/config/TransactionManagerDataSourceInvariantTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/config/TransactionManagerDataSourceInvariantTest.java @@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.service.database.RoutingDataSource; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers; +import org.springframework.boot.transaction.autoconfigure.TransactionManagerCustomizers; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.transaction.PlatformTransactionManager; diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilterTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilterTest.java index 7fd69195a41..07a703f1316 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilterTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilterTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.core.filters; import static org.mockito.ArgumentMatchers.anyString; diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/jersey/CommandProcessingResultSerializationTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/jersey/CommandProcessingResultSerializationTest.java index c279a2f3062..68525449002 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/jersey/CommandProcessingResultSerializationTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/jersey/CommandProcessingResultSerializationTest.java @@ -33,15 +33,16 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter; import org.springframework.test.context.ContextConfiguration; +import tools.jackson.databind.json.JsonMapper; @SpringBootTest @ContextConfiguration(classes = TestConfiguration.class) public class CommandProcessingResultSerializationTest { @Autowired - private MappingJackson2HttpMessageConverter converter; + private JsonMapper objectMapper; @Test public void testCommandProcessingResultSerialization() throws IOException { @@ -52,6 +53,7 @@ public void testCommandProcessingResultSerialization() throws IOException { "resourceIdentifier", null, null, null, null, null, null, null, Boolean.TRUE, null, new ExternalId("externalId"), ExternalId.empty(), null); SimpleHttpOutputMessage outputMessage = new SimpleHttpOutputMessage(os, headers); + JacksonJsonHttpMessageConverter converter = new JacksonJsonHttpMessageConverter(objectMapper); converter.write(commandProcessingResult, MediaType.APPLICATION_JSON, outputMessage); Map result = new Gson().fromJson(os.toString(Charset.defaultCharset()), Map.class); assertEquals(4, result.size()); diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/creditbureau/service/ExternalCreditBureauIntegrationWritePlatformServiceImplTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/creditbureau/service/ExternalCreditBureauIntegrationWritePlatformServiceImplTest.java index 4f9341330c7..99b5ce9330f 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/creditbureau/service/ExternalCreditBureauIntegrationWritePlatformServiceImplTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/creditbureau/service/ExternalCreditBureauIntegrationWritePlatformServiceImplTest.java @@ -27,10 +27,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.gson.JsonParser; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -63,6 +59,7 @@ import org.apache.fineract.infrastructure.creditbureau.serialization.CreditBureauTokenCommandFromApiJsonDeserializer; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; +import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; @@ -70,7 +67,11 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.Spy; -import org.springframework.lang.NonNull; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.ObjectNode; public class ExternalCreditBureauIntegrationWritePlatformServiceImplTest { @@ -92,7 +93,7 @@ public class ExternalCreditBureauIntegrationWritePlatformServiceImplTest { @Mock private CreditBureauTokenCommandFromApiJsonDeserializer fromApiJsonDeserializer; - private final ObjectMapper mapper = new ObjectMapper(); + private final ObjectMapper mapper = new JsonMapper(); @InjectMocks private ExternalCreditBureauIntegrationWritePlatformServiceImpl underTest; @@ -128,7 +129,7 @@ public void setup() { } private String createResponseObjectArrayData(Supplier responseMessageGenerator, Function dataGenerator) - throws JsonProcessingException { + throws JacksonException { ObjectNode jsonResponse = mapper.createObjectNode(); jsonResponse.put("ResponseMessage", responseMessageGenerator.get()); @@ -137,7 +138,7 @@ private String createResponseObjectArrayData(Supplier responseMessageGen } private String createResponseObjectObjectData(Supplier responseMessageGenerator, Function dataGenerator) - throws JsonProcessingException { + throws JacksonException { ObjectNode jsonResponse = mapper.createObjectNode(); jsonResponse.put("ResponseMessage", responseMessageGenerator.get()); @@ -353,14 +354,14 @@ public void okHttpNoBodyReturned() throws IOException { } @Test - public void extractUniqueIdSuccessTest() throws JsonProcessingException { + public void extractUniqueIdSuccessTest() throws JacksonException { String json = createResponseObjectArrayData(() -> "Success", data -> data.add(mapper.createObjectNode().put("UniqueID", "123456"))); Long id = underTest.extractUniqueId(json); assertEquals(123456L, id.longValue()); } @Test - public void extractUniqueIdEmptyResultTest() throws JsonProcessingException { + public void extractUniqueIdEmptyResultTest() throws JacksonException { String json = createResponseObjectArrayData(() -> "NoResult", data -> data); PlatformDataIntegrityException result = assertThrows(PlatformDataIntegrityException.class, () -> { underTest.extractUniqueId(json); @@ -369,7 +370,7 @@ public void extractUniqueIdEmptyResultTest() throws JsonProcessingException { } @Test - public void extractUniqueIdMultipleResultTest() throws JsonProcessingException { + public void extractUniqueIdMultipleResultTest() throws JacksonException { String json = createResponseObjectArrayData(() -> "NoResult", data -> data.add(mapper.createObjectNode().put("UniqueID", "123456").put("NRC", "NRCID1")) .add(mapper.createObjectNode().put("UniqueID", "7654321").put("NRC", "NRCID2"))); @@ -380,7 +381,7 @@ public void extractUniqueIdMultipleResultTest() throws JsonProcessingException { } @Test - public void extractUniqueIdNoDataTest() throws JsonProcessingException { + public void extractUniqueIdNoDataTest() throws JacksonException { String json = createResponseObjectArrayData(() -> "NoData", data -> null); PlatformDataIntegrityException result = assertThrows(PlatformDataIntegrityException.class, () -> { underTest.extractUniqueId(json); @@ -411,7 +412,7 @@ public void createTokenTest() throws IOException { } @NonNull - private String createValidToken() throws JsonProcessingException { + private String createValidToken() throws JacksonException { ObjectNode jsonResponse = mapper.createObjectNode(); jsonResponse.put("access_token", "AccessToken"); jsonResponse.put("expires_in", 3600); @@ -423,7 +424,7 @@ private String createValidToken() throws JsonProcessingException { return mapper.writeValueAsString(jsonResponse); } - private JsonCommand initialJsonCommand() throws JsonProcessingException { + private JsonCommand initialJsonCommand() throws JacksonException { ObjectNode command = mapper.createObjectNode(); command.put("NRC", "NRCID"); command.put("creditBureauID", "1"); // Must match to the mocked config diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadServiceImplTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadServiceImplTest.java index 9f01e688bac..80699b1d2d0 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadServiceImplTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReadServiceImplTest.java @@ -38,12 +38,14 @@ import org.apache.fineract.infrastructure.core.service.database.DatabaseTypeResolver; import org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData; import org.apache.fineract.infrastructure.dataqueries.exception.DatatableNotFoundException; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.mockito.Mock; import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.JdbcTemplate; @@ -70,6 +72,11 @@ public class DatatableReadServiceImplTest { @Autowired private DatatableReadService underTest; + @BeforeEach + public void setUp() { + MockitoAnnotations.openMocks(this); + } + @Test public void testSqlInjectionCaughtQueryDataTable() { when(jdbcTemplate.queryForObject(anyString(), eq(Integer.class), anyString())).thenReturn(1); diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReportingProcessServiceTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReportingProcessServiceTest.java index 3c40856ab62..d5d743105e6 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReportingProcessServiceTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/dataqueries/service/DatatableReportingProcessServiceTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.dataqueries.service; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsTaskletTest.java index 2bfbaf3828f..bc944cade29 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/PurgeExternalEventsTaskletTest.java @@ -43,9 +43,9 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @ExtendWith(MockitoExtension.class) public class PurgeExternalEventsTaskletTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTaskletTest.java index 550997db74d..22b27403338 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTaskletTest.java @@ -61,9 +61,9 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.data.domain.Pageable; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.transaction.TransactionStatus; diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/producer/kafka/KafkaExternalEventProducerTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/producer/kafka/KafkaExternalEventProducerTest.java index f951d3326fc..66f292b65fc 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/producer/kafka/KafkaExternalEventProducerTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/producer/kafka/KafkaExternalEventProducerTest.java @@ -25,6 +25,7 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; import org.apache.fineract.infrastructure.core.config.FineractProperties; +import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -33,7 +34,6 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.support.SendResult; -import org.springframework.lang.NonNull; @ExtendWith(MockitoExtension.class) diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/document/DocumentBusinessEventSerializerTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/document/DocumentBusinessEventSerializerTest.java index 5ab60d471cd..ef6e7e2f6a4 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/document/DocumentBusinessEventSerializerTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/document/DocumentBusinessEventSerializerTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.event.external.service.serialization.serializer.document; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAdjustTransactionBusinessEventSerializerTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAdjustTransactionBusinessEventSerializerTest.java index e4e66c6ffae..2aa0a1aa497 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAdjustTransactionBusinessEventSerializerTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAdjustTransactionBusinessEventSerializerTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.event.external.service.serialization.serializer.loan; import static java.nio.charset.StandardCharsets.UTF_8; diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBApiFilterTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBApiFilterTest.java index 63d49b4c6de..9b1c6503997 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBApiFilterTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBApiFilterTest.java @@ -64,7 +64,7 @@ import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequestRepository; import org.apache.fineract.useradministration.domain.AppUser; import org.apache.fineract.useradministration.exception.UnAuthenticatedUserException; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBFilterHelperTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBFilterHelperTest.java index d419365fa23..f485cc5d582 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBFilterHelperTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/filter/LoanCOBFilterHelperTest.java @@ -24,7 +24,7 @@ import java.util.List; import org.apache.fineract.cob.service.InlineLoanCOBExecutorServiceImpl; import org.apache.fineract.cob.service.LoanAccountLockService; -import org.apache.fineract.cob.service.RetrieveIdService; +import org.apache.fineract.cob.service.RetrieveLoanIdService; import org.apache.fineract.infrastructure.core.config.FineractProperties; import org.apache.fineract.infrastructure.core.http.BodyCachingHttpServletRequestWrapper; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; @@ -32,7 +32,6 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequestRepository; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; @@ -56,7 +55,7 @@ public class LoanCOBFilterHelperTest { @Mock private FineractProperties fineractProperties; @Mock - private RetrieveIdService retrieveIdService; + private RetrieveLoanIdService retrieveIdService; @Mock private LoanRescheduleRequestRepository loanRescheduleRequestRepository; @@ -64,11 +63,6 @@ public class LoanCOBFilterHelperTest { @InjectMocks private LoanCOBFilterHelperImpl helper; - @BeforeEach - public void initLoanCOBFilterHelper() throws Exception { - helper.afterPropertiesSet(); - } - @Test public void testCOBFilterUnescapedChars() throws IOException { String json = """ diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/JobStarterTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/JobStarterTest.java index 4dea58338b8..a66f34bf0aa 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/JobStarterTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/JobStarterTest.java @@ -26,7 +26,6 @@ import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.stream.Stream; import org.apache.fineract.infrastructure.businessdate.service.BusinessDateReadPlatformService; @@ -55,25 +54,25 @@ import org.quartz.JobExecutionException; import org.springframework.batch.core.BatchStatus; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobParameters; -import org.springframework.batch.core.JobParametersIncrementer; -import org.springframework.batch.core.JobParametersInvalidException; -import org.springframework.batch.core.explore.JobExplorer; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException; -import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException; -import org.springframework.batch.core.repository.JobRestartException; +import org.springframework.batch.core.job.Job; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.parameters.InvalidJobParametersException; +import org.springframework.batch.core.job.parameters.JobParameters; +import org.springframework.batch.core.job.parameters.JobParametersIncrementer; +import org.springframework.batch.core.launch.JobExecutionAlreadyRunningException; +import org.springframework.batch.core.launch.JobInstanceAlreadyCompleteException; +import org.springframework.batch.core.launch.JobOperator; +import org.springframework.batch.core.launch.JobRestartException; +import org.springframework.batch.core.repository.JobRepository; @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) public class JobStarterTest { @Mock - private JobExplorer jobExplorer; + private JobRepository jobExplorer; @Mock - private JobLauncher jobLauncher; + private JobOperator jobLauncher; @Mock private JobParameterRepository jobParameterRepository; @Mock @@ -100,8 +99,9 @@ public void getJobParameterTest() { when(scheduledJobDetail.getId()).thenReturn(1L); when(jobParameterRepository.findJobParametersByJobId(1L)) .thenReturn(List.of(new JobParameter().setJobId(1L).setParameterName("testParamKey").setParameterValue("testParamValue"))); - Map> result = underTest.getJobParameter(scheduledJobDetail); - Assertions.assertEquals("testParamValue", result.get("testParamKey").getValue()); + Set> result = underTest.getJobParameter(scheduledJobDetail); + Assertions.assertEquals("testParamValue", + result.stream().filter(p -> "testParamKey".equals(p.name())).findFirst().orElseThrow().value()); } @Test @@ -115,7 +115,7 @@ public void provideCustomJobParameters() { @Test public void runWithComplete() throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, - JobParametersInvalidException, JobRestartException, JobExecutionException { + InvalidJobParametersException, JobRestartException, JobExecutionException { JobExecution jobExecution = Mockito.mock(JobExecution.class); Job job = Mockito.mock(Job.class); ScheduledJobDetail scheduledJobDetail = Mockito.mock(ScheduledJobDetail.class); @@ -127,7 +127,7 @@ public void runWithComplete() throws JobInstanceAlreadyCompleteException, JobExe @Test public void runWithFailed() throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, - JobParametersInvalidException, JobRestartException, JobExecutionException { + InvalidJobParametersException, JobRestartException, JobExecutionException { JobExecution jobExecution = Mockito.mock(JobExecution.class); Job job = Mockito.mock(Job.class); ScheduledJobDetail scheduledJobDetail = Mockito.mock(ScheduledJobDetail.class); @@ -138,12 +138,13 @@ public void runWithFailed() throws JobInstanceAlreadyCompleteException, JobExecu when(jobExecution.getExitStatus()).thenReturn(new ExitStatus(failedStatus.name(), "testException")); JobExecutionException exception = Assertions.assertThrows(JobExecutionException.class, () -> underTest.run(job, scheduledJobDetail, Set.of(), "default")); - Assertions.assertEquals(String.format("exitCode=%s;exitDescription=%s", failedStatus.name(), "testException"), + Assertions.assertEquals( + String.format("exitCode=%s;exitDescription=%s;exitException=null", failedStatus.name(), "testException"), exception.getMessage()); } } - private void setupMocks(JobExecution jobExecution, Job job, ScheduledJobDetail scheduledJobDetail) throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, JobParametersInvalidException, JobRestartException { + private void setupMocks(JobExecution jobExecution, Job job, ScheduledJobDetail scheduledJobDetail) throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, InvalidJobParametersException, JobRestartException { when(scheduledJobDetail.getId()).thenReturn(1L); when(scheduledJobDetail.getJobName()).thenReturn("testJobName"); when(jobParameterRepository.findJobParametersByJobId(1L)).thenReturn(List.of(new JobParameter().setJobId(1L).setParameterName("testParamKey").setParameterValue("testParamValue"))); diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobConfigurationTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobConfigurationTest.java index edae43fdce7..603a66a8fcd 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobConfigurationTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobConfigurationTest.java @@ -19,8 +19,11 @@ package org.apache.fineract.infrastructure.jobs.service.aggregationjob; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; +import com.zaxxer.hikari.HikariDataSource; import org.apache.fineract.infrastructure.core.config.FineractProperties; import org.apache.fineract.infrastructure.core.service.database.DatabaseTypeResolver; import org.apache.fineract.infrastructure.core.service.migration.TenantDataSourceFactory; @@ -31,10 +34,10 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.job.JobExecution; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.scope.context.JobSynchronizationManager; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.infrastructure.item.ExecutionContext; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.transaction.PlatformTransactionManager; @@ -90,6 +93,7 @@ public void testJournalEntryDailyAggregationJob() { given(fineractProperties.getJob()).willReturn(fineractJobProperties); given(fineractJobProperties.getJournalEntryAggregation()).willReturn(journalEntryAggregationProperties); given(fineractJobProperties.getJournalEntryAggregation().getChunkSize()).willReturn(5); + given(tenantDataSourceFactory.create(any())).willReturn(mock(HikariDataSource.class)); JobSynchronizationManager.register(jobExecution); assertNotNull(configuration.journalEntryAggregation(), "The journalEntryDailyAggregationJob bean should not be null"); } diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobExecutionDeciderTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobExecutionDeciderTest.java index 9713bed2f9e..87dc5030cff 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobExecutionDeciderTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobExecutionDeciderTest.java @@ -36,10 +36,10 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.job.JobExecution; import org.springframework.batch.core.job.flow.FlowExecutionStatus; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; @ExtendWith(MockitoExtension.class) public class JournalEntryAggregationJobExecutionDeciderTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobReaderTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobReaderTest.java index 696badbfa10..9d367804078 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobReaderTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobReaderTest.java @@ -45,9 +45,9 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.job.JobExecution; import org.springframework.batch.core.scope.context.JobSynchronizationManager; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.infrastructure.item.ExecutionContext; @ExtendWith(MockitoExtension.class) public class JournalEntryAggregationJobReaderTest { @@ -76,6 +76,7 @@ public void setUp() { ThreadLocalContextUtil.setTenant(tenant); ThreadLocalContextUtil .setBusinessDates(new HashMap<>(Map.of(BusinessDateType.BUSINESS_DATE, LocalDate.now(ZoneId.systemDefault())))); + when(tenantDataSourceFactory.create(tenant)).thenReturn(dataSource); } @AfterEach diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobWriterTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobWriterTest.java index 511b83b6379..d8218066bd0 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobWriterTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/JournalEntryAggregationJobWriterTest.java @@ -32,9 +32,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.item.Chunk; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.Chunk; @ExtendWith(MockitoExtension.class) public class JournalEntryAggregationJobWriterTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/listener/JournalEntryAggregationJobListenerTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/listener/JournalEntryAggregationJobListenerTest.java index 304fcce7359..a97dcb617e3 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/listener/JournalEntryAggregationJobListenerTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/listener/JournalEntryAggregationJobListenerTest.java @@ -39,9 +39,11 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.job.JobInstance; +import org.springframework.batch.core.job.parameters.JobParameters; import org.springframework.batch.core.scope.context.JobContext; -import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.infrastructure.item.ExecutionContext; @ExtendWith(MockitoExtension.class) public class JournalEntryAggregationJobListenerTest { @@ -113,7 +115,7 @@ public void testBeforeJobWithLastAggregatedOnDate() { when(fineractJobProperties.getJournalEntryAggregation().getExcludeRecentNDays()).thenReturn(lookBackDays); when(trackingRepository.findLatestAggregatedOnDate()).thenReturn(lastAggregatedOnDate); - JobExecution jobExecution = new JobExecution(1L); + JobExecution jobExecution = new JobExecution(1L, new JobInstance(1L, "job"), new JobParameters()); // Act listener.beforeJob(jobExecution); diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/tasklet/JournalEntryAggregationTrackingTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/tasklet/JournalEntryAggregationTrackingTaskletTest.java index f3f2b6c1e59..13820ddaa0a 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/tasklet/JournalEntryAggregationTrackingTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/aggregationjob/tasklet/JournalEntryAggregationTrackingTaskletTest.java @@ -21,7 +21,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -45,13 +44,13 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepContribution; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.job.JobExecution; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.scope.context.StepContext; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) @@ -97,7 +96,6 @@ private static Stream recordWriteCount() { public void testHappyPath(final Long recordWriteCount) throws Exception { given(stepContribution.getStepExecution()).willReturn(stepExecution); given(stepExecution.getWriteCount()).willReturn(recordWriteCount); - doNothing().when(journalEntryAggregationWriterService).insertJournalEntryTracking(any(JournalEntryAggregationTrackingData.class)); given(chunkContext.getStepContext()).willReturn(stepContext); given(stepContext.getStepExecution()).willReturn(stepExecution); given(stepExecution.getJobExecution()).willReturn(jobExecutionContext); diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTaskletTest.java index 5ac38eb20ac..edcb7b13de3 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTaskletTest.java @@ -34,9 +34,9 @@ import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTaskletTest.java index f630a772680..2519af08077 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTaskletTest.java @@ -34,9 +34,9 @@ import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobConfigurationTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobConfigurationTest.java index 05b707e2748..2c3944fc15b 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobConfigurationTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobConfigurationTest.java @@ -34,11 +34,11 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.FlowBuilder; import org.springframework.batch.core.job.flow.Flow; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.transaction.PlatformTransactionManager; @ExtendWith(MockitoExtension.class) diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobReaderTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobReaderTest.java index 04ce2585493..05b3b6d88d2 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobReaderTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobReaderTest.java @@ -47,7 +47,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.step.StepExecution; @ExtendWith(MockitoExtension.class) class RetainedEarningJobReaderTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobWriterTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobWriterTest.java index 061e4b98b37..272e8d41694 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobWriterTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/RetainedEarningJobWriterTest.java @@ -49,8 +49,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.item.Chunk; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.Chunk; @ExtendWith(MockitoExtension.class) class RetainedEarningJobWriterTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/listener/RetainedEarningJobListenerTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/listener/RetainedEarningJobListenerTest.java index c2b9892119b..a4ec47907e6 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/listener/RetainedEarningJobListenerTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/retainedearning/listener/RetainedEarningJobListenerTest.java @@ -35,8 +35,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.job.JobExecution; +import org.springframework.batch.core.step.StepExecution; @ExtendWith(MockitoExtension.class) class RetainedEarningJobListenerTest { @@ -56,7 +56,7 @@ public void setup() { public void testBeforeJob() { // beforeJob should complete without exceptions and log the job ID retainedEarningJobListener.beforeJob(jobExecution); - verify(jobExecution).getJobId(); + verify(jobExecution).getJobInstanceId(); } @Test diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/security/service/TemporaryPasswordAwareAuthenticationProviderTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/security/service/TemporaryPasswordAwareAuthenticationProviderTest.java index b4e7e438738..4ee499d5126 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/security/service/TemporaryPasswordAwareAuthenticationProviderTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/security/service/TemporaryPasswordAwareAuthenticationProviderTest.java @@ -39,9 +39,6 @@ class TemporaryPasswordAwareAuthenticationProviderTest { @BeforeEach void setUp() { passwordEncoder = mock(PasswordEncoder.class); - UserDetailsService userDetailsService = mock(UserDetailsService.class); - subject = new TemporaryPasswordAwareAuthenticationProvider(userDetailsService); - subject.setPasswordEncoder(passwordEncoder); } @Test @@ -49,7 +46,7 @@ void authenticateShouldSucceedWithPermanentPassword() { AppUser user = mockEnabledUser(); when(user.getPassword()).thenReturn("{bcrypt}main"); when(passwordEncoder.matches("secret", "{bcrypt}main")).thenReturn(true); - subject.setUserDetailsService(username -> user); + subject = createSubject(username -> user); subject.authenticate(UsernamePasswordAuthenticationToken.unauthenticated("demo", "secret")); } @@ -62,7 +59,7 @@ void authenticateShouldSucceedWithValidTemporaryPassword() { when(user.getTemporaryPassword()).thenReturn("{bcrypt}temp"); when(passwordEncoder.matches("temporary-secret", "{bcrypt}main")).thenReturn(false); when(passwordEncoder.matches("temporary-secret", "{bcrypt}temp")).thenReturn(true); - subject.setUserDetailsService(username -> user); + subject = createSubject(username -> user); subject.authenticate(UsernamePasswordAuthenticationToken.unauthenticated("demo", "temporary-secret")); } @@ -73,12 +70,18 @@ void authenticateShouldFailWithExpiredTemporaryPassword() { when(user.getPassword()).thenReturn("{bcrypt}main"); when(user.hasValidTemporaryPassword()).thenReturn(false); when(passwordEncoder.matches("temporary-secret", "{bcrypt}main")).thenReturn(false); - subject.setUserDetailsService(username -> user); + subject = createSubject(username -> user); assertThrows(BadCredentialsException.class, () -> subject.authenticate(UsernamePasswordAuthenticationToken.unauthenticated("demo", "temporary-secret"))); } + private TemporaryPasswordAwareAuthenticationProvider createSubject(UserDetailsService userDetailsService) { + TemporaryPasswordAwareAuthenticationProvider provider = new TemporaryPasswordAwareAuthenticationProvider(userDetailsService); + provider.setPasswordEncoder(passwordEncoder); + return provider; + } + private AppUser mockEnabledUser() { AppUser user = mock(AppUser.class); when(user.getUsername()).thenReturn("demo"); diff --git a/fineract-provider/src/test/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImplTest.java b/fineract-provider/src/test/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImplTest.java index 7e06d13d0ba..c767d2cf91f 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImplTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImplTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.organisation.teller.service; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/account/data/StandingInstructionDataSerializationTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/account/data/StandingInstructionDataSerializationTest.java index 4d3cf14e9e6..4015169285f 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/account/data/StandingInstructionDataSerializationTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/account/data/StandingInstructionDataSerializationTest.java @@ -21,13 +21,14 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import java.math.BigDecimal; import java.time.LocalDate; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; /** * Test class to verify JSON serialization of StandingInstructionData, particularly focusing on the status field @@ -39,8 +40,8 @@ public class StandingInstructionDataSerializationTest { @BeforeEach public void setUp() { - objectMapper = new ObjectMapper(); - objectMapper.findAndRegisterModules(); // Register JavaTimeModule for LocalDate support + objectMapper = JsonMapper.builder().findAndAddModules().build(); // Register JavaTimeModule for LocalDate + // support } /** @@ -95,7 +96,7 @@ public void testStatusFieldSerialization() throws Exception { assertEquals(1L, jsonNode.get("id").asLong()); assertNotNull(jsonNode.get("name"), "name field should be present in JSON"); - assertEquals("Test Standing Instruction", jsonNode.get("name").asText()); + assertEquals("Test Standing Instruction", jsonNode.get("name").asString()); assertNotNull(jsonNode.get("amount"), "amount field should be present in JSON"); assertEquals(1000, jsonNode.get("amount").asInt()); @@ -109,10 +110,10 @@ public void testStatusFieldSerialization() throws Exception { assertEquals(3L, statusNode.get("id").asLong(), "status.id should be 3 for DELETED state"); assertNotNull(statusNode.get("code"), "status.code should be present"); - assertEquals("DELETED", statusNode.get("code").asText()); + assertEquals("DELETED", statusNode.get("code").asString()); assertNotNull(statusNode.get("value"), "status.value should be present"); - assertEquals("Deleted", statusNode.get("value").asText()); + assertEquals("Deleted", statusNode.get("value").asString()); } /** @@ -129,7 +130,7 @@ public void testStatusFieldSerializationForDifferentStates() throws Exception { assertNotNull(activeNode.get("status"), "status field should be present for ACTIVE state"); assertEquals(1L, activeNode.get("status").get("id").asLong()); - assertEquals("ACTIVE", activeNode.get("status").get("code").asText()); + assertEquals("ACTIVE", activeNode.get("status").get("code").asString()); // Test DISABLED state (status=2) EnumOptionData disabledStatus = new EnumOptionData(2L, "DISABLED", "Disabled"); @@ -140,7 +141,7 @@ public void testStatusFieldSerializationForDifferentStates() throws Exception { assertNotNull(disabledNode.get("status"), "status field should be present for DISABLED state"); assertEquals(2L, disabledNode.get("status").get("id").asLong()); - assertEquals("DISABLED", disabledNode.get("status").get("code").asText()); + assertEquals("DISABLED", disabledNode.get("status").get("code").asString()); // Test DELETED state (status=3) EnumOptionData deletedStatus = new EnumOptionData(3L, "DELETED", "Deleted"); @@ -151,7 +152,7 @@ public void testStatusFieldSerializationForDifferentStates() throws Exception { assertNotNull(deletedNode.get("status"), "status field should be present for DELETED state"); assertEquals(3L, deletedNode.get("status").get("id").asLong()); - assertEquals("DELETED", deletedNode.get("status").get("code").asText()); + assertEquals("DELETED", deletedNode.get("status").get("code").asString()); } /** diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/account/service/AccountAssociationsReadPlatformServiceImplTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/account/service/AccountAssociationsReadPlatformServiceImplTest.java index b9897acc728..062a1cae0da 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/account/service/AccountAssociationsReadPlatformServiceImplTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/account/service/AccountAssociationsReadPlatformServiceImplTest.java @@ -1,5 +1,4 @@ /** - /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -28,6 +27,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -37,6 +37,8 @@ public class AccountAssociationsReadPlatformServiceImplTest { + private AutoCloseable mocks; + @Mock private JdbcTemplate jdbcTemplate; @@ -45,7 +47,7 @@ public class AccountAssociationsReadPlatformServiceImplTest { @BeforeEach public void setUp() { - MockitoAnnotations.initMocks(this); + mocks = MockitoAnnotations.openMocks(this); } @Test @@ -75,4 +77,9 @@ public void testRetriveLoanAssociations_HandlesIntegerFromDatabase() { service.retriveLoanAssociations(1L, 1); }); } + + @AfterEach + void tearDown() throws Exception { + mocks.close(); + } } diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/delinquency/validator/DelinquencyActionParseAndValidatorTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/delinquency/validator/DelinquencyActionParseAndValidatorTest.java index a8a514639a2..95a74f3573b 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/delinquency/validator/DelinquencyActionParseAndValidatorTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/delinquency/validator/DelinquencyActionParseAndValidatorTest.java @@ -27,8 +27,6 @@ import static org.apache.fineract.portfolio.delinquency.validator.DelinquencyActionParameters.START_DATE; import static org.junit.jupiter.api.Assertions.assertThrows; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.JsonParser; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -46,12 +44,15 @@ import org.apache.fineract.portfolio.delinquency.helper.DelinquencyEffectivePauseHelper; import org.apache.fineract.portfolio.loanaccount.domain.Loan; import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.function.Executable; import org.mockito.Mockito; -import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; class DelinquencyActionParseAndValidatorTest { @@ -62,7 +63,7 @@ class DelinquencyActionParseAndValidatorTest { private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.US); @Test - public void testParseAndValidationIsOKForPause() throws JsonProcessingException { + public void testParseAndValidationIsOKForPause() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("07 September 2022")); @@ -77,7 +78,7 @@ public void testParseAndValidationIsOKForPause() throws JsonProcessingException } @Test - public void testParseAndValidationIsOKForResume() throws JsonProcessingException { + public void testParseAndValidationIsOKForResume() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); @@ -94,7 +95,7 @@ public void testParseAndValidationIsOKForResume() throws JsonProcessingException } @Test - public void testPauseBothStartAndEndDateIsOverlappingWithAnActivePause() throws JsonProcessingException { + public void testPauseBothStartAndEndDateIsOverlappingWithAnActivePause() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("07 September 2022")); @@ -110,7 +111,7 @@ public void testPauseBothStartAndEndDateIsOverlappingWithAnActivePause() throws } @Test - public void testPauseStartIsOverlappingWithAnActivePause() throws JsonProcessingException { + public void testPauseStartIsOverlappingWithAnActivePause() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("11 September 2022")); @@ -126,7 +127,7 @@ public void testPauseStartIsOverlappingWithAnActivePause() throws JsonProcessing } @Test - public void testNewPauseEndIsOverlappingWithExistingPause() throws JsonProcessingException { + public void testNewPauseEndIsOverlappingWithExistingPause() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("11 September 2022")); @@ -141,7 +142,7 @@ public void testNewPauseEndIsOverlappingWithExistingPause() throws JsonProcessin } @Test - public void testNewPauseIsOverlappingWithExistingPauseBecauseSameDates() throws JsonProcessingException { + public void testNewPauseIsOverlappingWithExistingPauseBecauseSameDates() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("11 September 2022")); @@ -157,7 +158,7 @@ public void testNewPauseIsOverlappingWithExistingPauseBecauseSameDates() throws } @Test - public void testNewPauseIsNotOverlappingBecauseThereWasAResume() throws JsonProcessingException { + public void testNewPauseIsNotOverlappingBecauseThereWasAResume() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("11 September 2022")); @@ -176,7 +177,7 @@ public void testNewPauseIsNotOverlappingBecauseThereWasAResume() throws JsonProc } @Test - public void testResumeIsNotOverlappingWithAnActivePause() throws JsonProcessingException { + public void testResumeIsNotOverlappingWithAnActivePause() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); @@ -189,7 +190,7 @@ public void testResumeIsNotOverlappingWithAnActivePause() throws JsonProcessingE } @Test - public void testValidationErrorWhenDelinquencyActionIsMissing() throws JsonProcessingException { + public void testValidationErrorWhenDelinquencyActionIsMissing() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.APPROVED); @@ -201,7 +202,7 @@ public void testValidationErrorWhenDelinquencyActionIsMissing() throws JsonProce } @Test - public void testValidationErrorWhenLoanIsNotActive() throws JsonProcessingException { + public void testValidationErrorWhenLoanIsNotActive() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.APPROVED); @@ -213,7 +214,7 @@ public void testValidationErrorWhenLoanIsNotActive() throws JsonProcessingExcept } @Test - public void testValidationErrorResumeShouldHaveNoEndDate() throws JsonProcessingException { + public void testValidationErrorResumeShouldHaveNoEndDate() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); @@ -225,7 +226,7 @@ public void testValidationErrorResumeShouldHaveNoEndDate() throws JsonProcessing } @Test - public void testValidationErrorResumeInvalidStartDate() throws JsonProcessingException { + public void testValidationErrorResumeInvalidStartDate() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); @@ -237,7 +238,7 @@ public void testValidationErrorResumeInvalidStartDate() throws JsonProcessingExc } @Test - public void testValidationErrorResumeOnExistingResumeDate() throws JsonProcessingException { + public void testValidationErrorResumeOnExistingResumeDate() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); @@ -263,7 +264,7 @@ public void testValidationErrorResumeOnExistingResumeDate() throws JsonProcessin } @Test - public void testValidationErrorPausePeriodShouldBeAtLeastOneDay() throws JsonProcessingException { + public void testValidationErrorPausePeriodShouldBeAtLeastOneDay() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); @@ -275,7 +276,7 @@ public void testValidationErrorPausePeriodShouldBeAtLeastOneDay() throws JsonPro } @Test - public void testValidationErrorPausePeriodMustNotBeBeforeDisbursement() throws JsonProcessingException { + public void testValidationErrorPausePeriodMustNotBeBeforeDisbursement() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("11 September 2022")); @@ -314,7 +315,7 @@ public void testStartDateIsMissingForResume() { } @Test - public void testNewPausePeriodStartingOnExistingEndDate() throws JsonProcessingException { + public void testNewPausePeriodStartingOnExistingEndDate() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("11 September 2022")); @@ -331,7 +332,7 @@ public void testNewPausePeriodStartingOnExistingEndDate() throws JsonProcessingE } @Test - public void testNewPauseEndingOnExistingStartDate() throws JsonProcessingException { + public void testNewPauseEndingOnExistingStartDate() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("11 September 2022")); @@ -348,7 +349,7 @@ public void testNewPauseEndingOnExistingStartDate() throws JsonProcessingExcepti } @Test - public void testNewPausePeriodStartingOnExistingEffectiveEndDate() throws JsonProcessingException { + public void testNewPausePeriodStartingOnExistingEffectiveEndDate() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("11 September 2022")); @@ -368,7 +369,7 @@ public void testNewPausePeriodStartingOnExistingEffectiveEndDate() throws JsonPr } @Test - public void testParseAndValidationIsOKForBackdatedPause() throws JsonProcessingException { + public void testParseAndValidationIsOKForBackdatedPause() throws JacksonException { Loan loan = Mockito.mock(Loan.class); Mockito.when(loan.getStatus()).thenReturn(LoanStatus.ACTIVE); Mockito.when(loan.getDisbursementDate()).thenReturn(localDate("07 September 2022")); @@ -384,7 +385,7 @@ public void testParseAndValidationIsOKForBackdatedPause() throws JsonProcessingE @NonNull private JsonCommand delinquencyAction(@Nullable String action, @Nullable String startDate, @Nullable String endDate) - throws JsonProcessingException { + throws JacksonException { Map map = new HashMap<>(); Optional.ofNullable(action).ifPresent(a -> map.put(ACTION, a)); map.put(DATE_FORMAT, "dd MMMM yyyy"); @@ -399,8 +400,8 @@ private LocalDate localDate(String date) { } @NonNull - private JsonCommand createJsonCommand(Map jsonMap) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); + private JsonCommand createJsonCommand(Map jsonMap) throws JacksonException { + ObjectMapper objectMapper = new JsonMapper(); String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonMap); return new JsonCommand(null, JsonParser.parseString(json)); } diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResourceRetrieveApprovalTemplateTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResourceRetrieveApprovalTemplateTest.java index 64a0e3685f0..fae53a5f764 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResourceRetrieveApprovalTemplateTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResourceRetrieveApprovalTemplateTest.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.loanaccount.api; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -106,7 +105,6 @@ class LoansApiResourceRetrieveApprovalTemplateTest { void setUp() { loansApiResource = newLoansApiResource(context, loanReadPlatformService); when(context.authenticatedUser()).thenReturn(appUser); - doNothing().when(appUser).validateHasReadPermission(LOAN_READ_PERMISSION_RESOURCE); } @Test diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentTaskletTest.java index dc384d5eb0b..0ae5bc1c96b 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentTaskletTest.java @@ -35,9 +35,9 @@ import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; public class ApplyChargeToOverdueLoanInstallmentTaskletTest { diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTaskletTest.java index 4a43d1c068e..4e450d0c863 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTaskletTest.java @@ -22,7 +22,7 @@ import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; -import static org.springframework.batch.repeat.RepeatStatus.FINISHED; +import static org.springframework.batch.infrastructure.repeat.RepeatStatus.FINISHED; import java.time.LocalDate; import java.util.HashMap; @@ -42,9 +42,9 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; -import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.core.step.StepContribution; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImplTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImplTest.java index b0bac77bb3f..6451f10374d 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImplTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImplTest.java @@ -234,14 +234,10 @@ void reprocessExistingAccruals_ShouldCreateAdjustmentNotReverse_ForPostDueDateAc when(postDueDateAccrual.getFeeChargesPortion()).thenReturn(BigDecimal.ZERO); when(postDueDateAccrual.getPenaltyChargesPortion()).thenReturn(BigDecimal.ZERO); - Set accrualTypes = Set.of(LoanTransactionType.ACCRUAL, LoanTransactionType.ACCRUAL_ADJUSTMENT); - Set accrualOnly = Set.of(LoanTransactionType.ACCRUAL); - - // retrieveListOfAccrualTransactions uses both types - when(loanTransactionRepository.findNonReversedByLoanAndTypes(loan, accrualTypes)).thenReturn(List.of(postDueDateAccrual)); - // adjustAccrualsAfter only queries for ACCRUAL (not ACCRUAL_ADJUSTMENT — those must persist) - when(loanTransactionRepository.findNonReversedByLoanAndTypesAndAfterDate(loan, accrualOnly, lastDueDate)) - .thenReturn(List.of(postDueDateAccrual)); + // retrieveListOfAccrualTransactions fetches the loan's non-reversed ACCRUAL/ACCRUAL_ADJUSTMENT transactions + when(loanTransactionRepository.findNonReversedAccrualsByLoan(loan)).thenReturn(List.of(postDueDateAccrual)); + // adjustAccrualsAfter filters to ACCRUAL only (not ACCRUAL_ADJUSTMENT — those must persist) + when(loanTransactionRepository.findNonReversedByLoanAndAfterDate(loan, lastDueDate)).thenReturn(List.of(postDueDateAccrual)); // Idempotency check queries the loan's in-memory transaction list when(loan.getLoanTransactions()).thenReturn(new java.util.ArrayList<>()); diff --git a/fineract-provider/src/test/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImplTest.java b/fineract-provider/src/test/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImplTest.java index 5accacc22cb..a0599fe391f 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImplTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/useradministration/service/AppUserWritePlatformServiceJpaRepositoryImplTest.java @@ -21,10 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.nullable; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @@ -106,7 +103,6 @@ void setUp() { when(command.json()).thenReturn("{}"); when(appUserRepository.findById(USER_ID)).thenReturn(Optional.of(user)); when(context.authenticatedUser(any(CommandWrapper.class))).thenReturn(authenticatedUser); - doNothing().when(fromApiJsonDeserializer).validateForChangePassword(anyString(), nullable(AppUser.class)); } @AfterEach diff --git a/fineract-rates/build.gradle b/fineract-rates/build.gradle index dfd595ac616..85b45828b94 100644 --- a/fineract-rates/build.gradle +++ b/fineract-rates/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-rates/dependencies.gradle b/fineract-rates/dependencies.gradle index 5cd90648d0e..5584b05a8da 100644 --- a/fineract-rates/dependencies.gradle +++ b/fineract-rates/dependencies.gradle @@ -27,7 +27,7 @@ dependencies { implementation(project(path: ':fineract-core')) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'jakarta.ws.rs:jakarta.ws.rs-api', 'org.glassfish.jersey.media:jersey-media-multipart', @@ -46,7 +46,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' @@ -70,5 +70,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRateRepositoryWrapper.java b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRateRepositoryWrapper.java index 6a608c6baa3..e7cdd65d5eb 100644 --- a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRateRepositoryWrapper.java +++ b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRateRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.floatingrates.domain; import org.apache.fineract.portfolio.floatingrates.exception.FloatingRateNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -27,7 +26,6 @@ public class FloatingRateRepositoryWrapper { private final FloatingRateRepository floatingRateRepository; - @Autowired public FloatingRateRepositoryWrapper(final FloatingRateRepository floatingRateRepository) { this.floatingRateRepository = floatingRateRepository; } diff --git a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java index 84a6915b923..bd015ce5af3 100644 --- a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java +++ b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/serialization/FloatingRateDataValidator.java @@ -38,7 +38,6 @@ import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.portfolio.floatingrates.domain.FloatingRate; import org.apache.fineract.portfolio.floatingrates.domain.FloatingRateRepository; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -61,7 +60,6 @@ public class FloatingRateDataValidator { private final FromJsonHelper fromApiJsonHelper; private final FloatingRateRepository floatingRateRepository; - @Autowired public FloatingRateDataValidator(final FromJsonHelper fromApiJsonHelper, final FloatingRateRepository floatingRateRepository) { this.fromApiJsonHelper = fromApiJsonHelper; this.floatingRateRepository = floatingRateRepository; diff --git a/fineract-report/build.gradle b/fineract-report/build.gradle index b3e50678fbc..3ba4204e69b 100644 --- a/fineract-report/build.gradle +++ b/fineract-report/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-report/dependencies.gradle b/fineract-report/dependencies.gradle index 5cd90648d0e..5584b05a8da 100644 --- a/fineract-report/dependencies.gradle +++ b/fineract-report/dependencies.gradle @@ -27,7 +27,7 @@ dependencies { implementation(project(path: ':fineract-core')) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'jakarta.ws.rs:jakarta.ws.rs-api', 'org.glassfish.jersey.media:jersey-media-multipart', @@ -46,7 +46,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' @@ -70,5 +70,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-report/src/main/java/org/apache/fineract/infrastructure/report/provider/ReportingProcessServiceProvider.java b/fineract-report/src/main/java/org/apache/fineract/infrastructure/report/provider/ReportingProcessServiceProvider.java index 84e812a671e..c030c8a3ce3 100644 --- a/fineract-report/src/main/java/org/apache/fineract/infrastructure/report/provider/ReportingProcessServiceProvider.java +++ b/fineract-report/src/main/java/org/apache/fineract/infrastructure/report/provider/ReportingProcessServiceProvider.java @@ -26,7 +26,6 @@ import org.apache.fineract.infrastructure.report.service.ReportingProcessService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -40,7 +39,6 @@ public class ReportingProcessServiceProvider { private final Map reportingProcessServices; - @Autowired public ReportingProcessServiceProvider(List reportingProcessServices) { var mapBuilder = ImmutableMap.builder(); for (ReportingProcessService s : reportingProcessServices) { diff --git a/fineract-savings/build.gradle b/fineract-savings/build.gradle index c4dd74560e5..15b4b972c15 100644 --- a/fineract-savings/build.gradle +++ b/fineract-savings/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-savings/dependencies.gradle b/fineract-savings/dependencies.gradle index b64450a5d1e..58e11b5bd34 100644 --- a/fineract-savings/dependencies.gradle +++ b/fineract-savings/dependencies.gradle @@ -32,7 +32,7 @@ dependencies { implementation(project(path: ':fineract-tax')) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'jakarta.ws.rs:jakarta.ws.rs-api', 'org.glassfish.jersey.media:jersey-media-multipart', @@ -51,7 +51,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' @@ -75,5 +75,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsSummaryCustom.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsSummaryCustom.java index 2d19c86c0ca..12029d3de38 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsSummaryCustom.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsSummaryCustom.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.accountdetails.data; import java.math.BigDecimal; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java index a66a38dcd05..74d82a105cb 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.portfolio.interestratechart.data; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import java.time.LocalDate; import java.util.ArrayList; @@ -114,6 +115,7 @@ public static InterestRateChartData template(Collection periodTy incentiveTypeOptions, genderOptions, clientTypeOptions, clientClassificationOptions); } + @JsonCreator private InterestRateChartData(Long id, String name, String description, LocalDate fromDate, LocalDate endDate, boolean isPrimaryGroupingByAmount, Long savingsProductId, String savingsProductName, Collection chartSlabs, Collection periodTypes, diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepositoryWrapper.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepositoryWrapper.java index ffcefa28091..b2158b9d693 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepositoryWrapper.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.interestratechart.domain; import org.apache.fineract.portfolio.interestratechart.exception.InterestRateChartNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -38,7 +37,6 @@ public class InterestRateChartRepositoryWrapper { private final InterestRateChartRepository repository; - @Autowired public InterestRateChartRepositoryWrapper(final InterestRateChartRepository repository) { this.repository = repository; } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java index 95922799392..c7cf8987bc1 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java @@ -38,11 +38,11 @@ public int compare(final T o1, final T o2) { int compareResult = 0; InterestRateChartSlabFields slabs1 = null; InterestRateChartSlabFields slabs2 = null; - if (o1 instanceof InterestRateChartSlab) { - slabs1 = ((InterestRateChartSlab) o1).slabFields(); + if (o1 instanceof InterestRateChartSlab slab) { + slabs1 = slab.slabFields(); slabs2 = ((InterestRateChartSlab) o2).slabFields(); - } else if (o1 instanceof DepositAccountInterestRateChartSlabs) { - slabs1 = ((DepositAccountInterestRateChartSlabs) o1).slabFields(); + } else if (o1 instanceof DepositAccountInterestRateChartSlabs slabs) { + slabs1 = slabs.slabFields(); slabs2 = ((DepositAccountInterestRateChartSlabs) o2).slabFields(); } else { return compareResult; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepositoryWrapper.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepositoryWrapper.java index fed2547f930..741ddeb42ba 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepositoryWrapper.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.interestratechart.domain; import org.apache.fineract.portfolio.interestratechart.exception.InterestRateChartSlabNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -38,7 +37,6 @@ public class InterestRateChartSlabRepositoryWrapper { private final InterestRateChartSlabRepository repository; - @Autowired public InterestRateChartSlabRepositoryWrapper(final InterestRateChartSlabRepository repository) { this.repository = repository; } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GSIMContainer.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GSIMContainer.java index 2d36c6e9adf..ed9c54708d6 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GSIMContainer.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GSIMContainer.java @@ -1,4 +1,3 @@ - /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java index 0a22d4e796c..65add9233a6 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.data; import java.math.BigDecimal; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeDataValidator.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeDataValidator.java index aa3f3b4ba24..361a30605ad 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeDataValidator.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeDataValidator.java @@ -41,7 +41,6 @@ import org.apache.fineract.infrastructure.core.exception.InvalidJsonException; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -49,7 +48,6 @@ public class SavingsAccountChargeDataValidator { private final FromJsonHelper fromApiJsonHelper; - @Autowired public SavingsAccountChargeDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java index 9f44d494ada..f514ff263be 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java @@ -74,7 +74,6 @@ import org.apache.fineract.portfolio.savings.SavingsInterestCalculationDaysInYearType; import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType; import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -82,7 +81,6 @@ public class SavingsAccountDataValidator { private final FromJsonHelper fromApiJsonHelper; - @Autowired public SavingsAccountDataValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java index 5d4a29d347c..c4b704796f8 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java @@ -82,7 +82,6 @@ import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.tax.domain.TaxGroup; import org.apache.fineract.portfolio.tax.domain.TaxGroupRepositoryWrapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -92,7 +91,6 @@ public class DepositProductAssembler { private final InterestRateChartAssembler chartAssembler; private final TaxGroupRepositoryWrapper taxGroupRepository; - @Autowired public DepositProductAssembler(final ChargeRepositoryWrapper chargeRepository, final InterestRateChartAssembler chartAssembler, final TaxGroupRepositoryWrapper taxGroupRepository) { this.chargeRepository = chargeRepository; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GSIMRepositoy.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GSIMRepositoy.java index a62350eee6b..bb5e55b0310 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GSIMRepositoy.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GSIMRepositoy.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.domain; import java.math.BigDecimal; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java index d54060338ac..aa6e4ce2a82 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.domain; import jakarta.persistence.Column; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeAssembler.java index f25315c1eef..aea2b288ade 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeAssembler.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeAssembler.java @@ -50,7 +50,6 @@ import org.apache.fineract.portfolio.charge.domain.ChargeTimeType; import org.apache.fineract.portfolio.charge.exception.ChargeCannotBeAppliedToException; import org.apache.fineract.portfolio.charge.exception.SavingsAccountChargeNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -60,7 +59,6 @@ public class SavingsAccountChargeAssembler { private final ChargeRepositoryWrapper chargeRepository; private final SavingsAccountChargeRepository savingsAccountChargeRepository; - @Autowired public SavingsAccountChargeAssembler(final FromJsonHelper fromApiJsonHelper, final ChargeRepositoryWrapper chargeRepository, final SavingsAccountChargeRepository savingsAccountChargeRepository) { this.fromApiJsonHelper = fromApiJsonHelper; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepositoryWrapper.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepositoryWrapper.java index 8ced3000065..69bcdb2e60c 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepositoryWrapper.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepositoryWrapper.java @@ -21,7 +21,6 @@ import java.time.LocalDate; import java.util.List; import org.apache.fineract.portfolio.charge.exception.SavingsAccountChargeNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -34,7 +33,6 @@ public class SavingsAccountChargeRepositoryWrapper { private final SavingsAccountChargeRepository repository; - @Autowired public SavingsAccountChargeRepositoryWrapper(final SavingsAccountChargeRepository repository) { this.repository = repository; } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java index c47cb76ee3a..528972bb1bf 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java @@ -70,7 +70,6 @@ import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.tax.domain.TaxGroup; import org.apache.fineract.portfolio.tax.domain.TaxGroupRepositoryWrapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -79,7 +78,6 @@ public class SavingsProductAssembler { private final ChargeRepositoryWrapper chargeRepository; private final TaxGroupRepositoryWrapper taxGroupRepository; - @Autowired public SavingsProductAssembler(final ChargeRepositoryWrapper chargeRepository, final TaxGroupRepositoryWrapper taxGroupRepository) { this.chargeRepository = chargeRepository; this.taxGroupRepository = taxGroupRepository; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductChargeAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductChargeAssembler.java index 28fc5e097f9..508e661d252 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductChargeAssembler.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductChargeAssembler.java @@ -43,7 +43,6 @@ import org.apache.fineract.portfolio.charge.domain.ChargeRepositoryWrapper; import org.apache.fineract.portfolio.charge.domain.ChargeTimeType; import org.apache.fineract.portfolio.charge.exception.SavingsAccountChargeNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -53,7 +52,6 @@ public class SavingsProductChargeAssembler { private final ChargeRepositoryWrapper chargeRepository; private final SavingsAccountChargeRepository savingsAccountChargeRepository; - @Autowired public SavingsProductChargeAssembler(final FromJsonHelper fromApiJsonHelper, final ChargeRepositoryWrapper chargeRepository, final SavingsAccountChargeRepository savingsAccountChargeRepository) { this.fromApiJsonHelper = fromApiJsonHelper; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionBeforePivotDateNotAllowed.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionBeforePivotDateNotAllowed.java index c3d9a2d0fac..c7c0804dcb7 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionBeforePivotDateNotAllowed.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionBeforePivotDateNotAllowed.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.exception; import java.time.LocalDate; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformService.java index 0fefef9faa3..1813066f60f 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformService.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformService.java @@ -1,4 +1,3 @@ - /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -17,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.service; import java.util.Collection; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java index cbdcb6182f0..e2dcddb0a67 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java @@ -1,4 +1,3 @@ - /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -17,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.savings.service; import java.math.BigDecimal; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java index 61e90337c2e..3682364b1a1 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingServiceImpl.java @@ -48,7 +48,7 @@ import org.apache.fineract.portfolio.savings.domain.interest.PostingPeriod; import org.apache.fineract.portfolio.tax.data.TaxComponentData; import org.apache.fineract.portfolio.tax.service.TaxUtils; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; @RequiredArgsConstructor public class SavingsAccountInterestPostingServiceImpl implements SavingsAccountInterestPostingService { diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionSearchService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionSearchService.java index d55a3278af0..7bd14a45c5a 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionSearchService.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionSearchService.java @@ -23,8 +23,8 @@ import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionData; import org.apache.fineract.portfolio.search.data.AdvancedQueryRequest; import org.apache.fineract.portfolio.search.data.TransactionSearchRequest; +import org.jspecify.annotations.NonNull; import org.springframework.data.domain.Page; -import org.springframework.lang.NonNull; public interface SavingsAccountTransactionSearchService { diff --git a/fineract-savings/src/test/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveAttributeNameTest.java b/fineract-savings/src/test/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveAttributeNameTest.java index 814a7e15cd7..e5aafc8a8c1 100644 --- a/fineract-savings/src/test/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveAttributeNameTest.java +++ b/fineract-savings/src/test/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveAttributeNameTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.interestratechart.incentive; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/fineract-security/build.gradle b/fineract-security/build.gradle index 21a9619585c..cd72276c26d 100644 --- a/fineract-security/build.gradle +++ b/fineract-security/build.gradle @@ -75,3 +75,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-security/dependencies.gradle b/fineract-security/dependencies.gradle index f9b779e3247..3f53c4a3f9e 100644 --- a/fineract-security/dependencies.gradle +++ b/fineract-security/dependencies.gradle @@ -30,7 +30,7 @@ dependencies { // Spring Boot Security dependencies implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'org.springframework.boot:spring-boot-starter-oauth2-authorization-server', 'org.springframework.boot:spring-boot-starter-oauth2-resource-server', @@ -73,11 +73,12 @@ dependencies { } // Email support for OTP delivery - implementation ('org.apache.commons:commons-email') { + implementation ('org.apache.commons:commons-email2-jakarta') { exclude group: 'com.sun.mail', module: 'javax.mail' + exclude group: 'com.sun.mail', module: 'jakarta.mail' exclude group: 'javax.activation', module: 'activation' } - implementation 'com.sun.mail:jakarta.mail' + implementation 'jakarta.mail:jakarta.mail-api' compileOnly 'com.github.spotbugs:spotbugs-annotations' compileOnly 'org.projectlombok:lombok' @@ -93,6 +94,6 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') - testImplementation 'org.springframework.security:spring-security-test' + testImplementation ('org.mockito:mockito-core') + testImplementation 'org.springframework.boot:spring-boot-starter-security-test' } diff --git a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java index 900a8b3c6a5..d3fda15a38b 100644 --- a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java +++ b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/converter/FineractJwtAuthenticationTokenConverter.java @@ -22,8 +22,8 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.security.data.FineractJwtAuthenticationToken; import org.apache.fineract.infrastructure.security.service.TenantAwareJpaPlatformUserDetailsService; +import org.jspecify.annotations.NonNull; import org.springframework.core.convert.converter.Converter; -import org.springframework.lang.NonNull; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UsernameNotFoundException; diff --git a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java index 22e1d54a07c..0c732be05f5 100644 --- a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java +++ b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/FineractJwtAuthenticationToken.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.security.data; import java.util.Collection; diff --git a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java index 6888a7ebdd0..2ab795ab0d1 100644 --- a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java +++ b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/data/TwoFactorConfigurationValidator.java @@ -31,7 +31,6 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.security.constants.TwoFactorConfigurationConstants; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; @@ -41,7 +40,6 @@ public class TwoFactorConfigurationValidator { private final FromJsonHelper fromJsonHelper; - @Autowired public TwoFactorConfigurationValidator(FromJsonHelper fromJsonHelper) { this.fromJsonHelper = fromJsonHelper; } diff --git a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java index a9d9a5ee3d9..81fbeb07584 100644 --- a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java +++ b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/BusinessDateFilter.java @@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType; import org.apache.fineract.infrastructure.businessdate.service.BusinessDateReadPlatformService; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.web.filter.OncePerRequestFilter; @RequiredArgsConstructor diff --git a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java index 133ba1b29f9..8fc101696ef 100644 --- a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java +++ b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareAuthenticationFilter.java @@ -27,7 +27,7 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil; import org.apache.fineract.infrastructure.security.service.AuthTenantDetailsService; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.security.oauth2.server.resource.web.BearerTokenResolver; import org.springframework.web.filter.OncePerRequestFilter; diff --git a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java index 5c63c3c8424..b248b29b907 100644 --- a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java +++ b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/filter/TwoFactorAuthenticationFilter.java @@ -112,8 +112,7 @@ private Authentication createUpdatedAuthentication(final Authentication currentA UsernamePasswordAuthenticationToken updatedAuthentication = new UsernamePasswordAuthenticationToken( currentAuthentication.getPrincipal(), currentAuthentication.getCredentials(), updatedAuthorities); return updatedAuthentication; - } else if (currentAuthentication instanceof FineractJwtAuthenticationToken) { - FineractJwtAuthenticationToken fineractJwtAuthenticationToken = (FineractJwtAuthenticationToken) currentAuthentication; + } else if (currentAuthentication instanceof FineractJwtAuthenticationToken fineractJwtAuthenticationToken) { FineractJwtAuthenticationToken updatedAuthentication = new FineractJwtAuthenticationToken( fineractJwtAuthenticationToken.getToken(), updatedAuthorities, (UserDetails) currentAuthentication.getPrincipal()); return updatedAuthentication; diff --git a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java index 10cb416362a..5726b6faedf 100644 --- a/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java +++ b/fineract-security/src/main/java/org/apache/fineract/infrastructure/security/service/AuthTenantDetailsServiceJdbc.java @@ -22,8 +22,8 @@ import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant; import org.apache.fineract.infrastructure.core.service.tenant.TenantMapper; import org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentifierException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization; import org.springframework.cache.annotation.Cacheable; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -33,12 +33,12 @@ * A JDBC implementation of {@link AuthTenantDetailsService} for loading a tenants details by a * tenantIdentifier. */ +@DependsOnDatabaseInitialization @Service public class AuthTenantDetailsServiceJdbc implements AuthTenantDetailsService { private final JdbcTemplate jdbcTemplate; - @Autowired public AuthTenantDetailsServiceJdbc(@Qualifier("hikariTenantDataSource") final DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } diff --git a/fineract-tax/build.gradle b/fineract-tax/build.gradle index e7fe509f146..8230f7275e4 100644 --- a/fineract-tax/build.gradle +++ b/fineract-tax/build.gradle @@ -79,3 +79,12 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-tax/dependencies.gradle b/fineract-tax/dependencies.gradle index 5cd90648d0e..5584b05a8da 100644 --- a/fineract-tax/dependencies.gradle +++ b/fineract-tax/dependencies.gradle @@ -27,7 +27,7 @@ dependencies { implementation(project(path: ':fineract-core')) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'jakarta.ws.rs:jakarta.ws.rs-api', 'org.glassfish.jersey.media:jersey-media-multipart', @@ -46,7 +46,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', 'org.apache.httpcomponents:httpcore', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' @@ -70,5 +70,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java index 7ea021fc3a6..e0c20b07a6c 100644 --- a/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java +++ b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.tax.domain; import org.apache.fineract.portfolio.tax.exception.TaxComponentNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -27,7 +26,6 @@ public class TaxComponentRepositoryWrapper { private final TaxComponentRepository repository; - @Autowired public TaxComponentRepositoryWrapper(final TaxComponentRepository repository) { this.repository = repository; } diff --git a/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java index 745e7f2ec53..66609700fcf 100644 --- a/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java +++ b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.tax.domain; import org.apache.fineract.portfolio.tax.exception.TaxGroupNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -27,7 +26,6 @@ public class TaxGroupRepositoryWrapper { private final TaxGroupRepository repository; - @Autowired public TaxGroupRepositoryWrapper(final TaxGroupRepository repository) { this.repository = repository; } diff --git a/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/serialization/TaxValidator.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/serialization/TaxValidator.java index 05a2ea87933..3581474bd37 100644 --- a/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/serialization/TaxValidator.java +++ b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/serialization/TaxValidator.java @@ -46,7 +46,6 @@ import org.apache.fineract.portfolio.tax.domain.TaxComponent; import org.apache.fineract.portfolio.tax.domain.TaxGroup; import org.apache.fineract.portfolio.tax.domain.TaxGroupMappings; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @@ -78,7 +77,6 @@ public class TaxValidator { public static final String AT_INDEX = ".at.index."; private final FromJsonHelper fromApiJsonHelper; - @Autowired public TaxValidator(final FromJsonHelper fromApiJsonHelper) { this.fromApiJsonHelper = fromApiJsonHelper; } diff --git a/fineract-validation/build.gradle b/fineract-validation/build.gradle index 8ac0c2e02c4..9fa4a9282fd 100644 --- a/fineract-validation/build.gradle +++ b/fineract-validation/build.gradle @@ -38,3 +38,11 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" + runtimeOnly "javax.xml.bind:jaxb-api:2.3.1" +} diff --git a/fineract-validation/dependencies.gradle b/fineract-validation/dependencies.gradle index 61f628f1707..d0f44b9f72d 100644 --- a/fineract-validation/dependencies.gradle +++ b/fineract-validation/dependencies.gradle @@ -47,5 +47,5 @@ dependencies { exclude group: 'org.skyscreamer' } testImplementation( 'io.github.classgraph:classgraph' ) - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-working-capital-loan/build.gradle b/fineract-working-capital-loan/build.gradle index 677a52909e6..25f244a5d29 100644 --- a/fineract-working-capital-loan/build.gradle +++ b/fineract-working-capital-loan/build.gradle @@ -79,5 +79,14 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { } } } +tasks.withType(Test).configureEach { + useJUnitPlatform() +} + +dependencies { + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" + + runtimeOnly "jakarta.xml.bind:jakarta.xml.bind-api:4.0.5" +} diff --git a/fineract-working-capital-loan/dependencies.gradle b/fineract-working-capital-loan/dependencies.gradle index bcf32ae0763..493c8d8e3d2 100644 --- a/fineract-working-capital-loan/dependencies.gradle +++ b/fineract-working-capital-loan/dependencies.gradle @@ -29,7 +29,7 @@ dependencies { ) implementation( - 'org.springframework.boot:spring-boot-starter-web', + 'org.springframework.boot:spring-boot-starter-webmvc', 'org.springframework.boot:spring-boot-starter-security', 'org.springframework.batch:spring-batch-integration', 'org.springframework:spring-context-support', @@ -50,7 +50,7 @@ dependencies { 'org.springdoc:springdoc-openapi-starter-webmvc-ui', 'org.mapstruct:mapstruct', - 'io.github.resilience4j:resilience4j-spring-boot3', + 'io.github.resilience4j:resilience4j-spring-boot4', ) compileOnly 'com.github.spotbugs:spotbugs-annotations' compileOnly 'org.projectlombok:lombok' @@ -73,5 +73,5 @@ dependencies { exclude group: 'javax.activation' exclude group: 'org.skyscreamer' } - testImplementation ('org.mockito:mockito-inline') + testImplementation ('org.mockito:mockito-core') } diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/api/InternalWorkingCapitalLoanCOBApiResource.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/api/InternalWorkingCapitalLoanCOBApiResource.java index c5d89f51d1e..f8510683717 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/api/InternalWorkingCapitalLoanCOBApiResource.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/api/InternalWorkingCapitalLoanCOBApiResource.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.cob.api; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/domain/WorkingCapitalLoanAccountLock.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/domain/WorkingCapitalLoanAccountLock.java index 8f6dc97222a..5ae53e07fdd 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/domain/WorkingCapitalLoanAccountLock.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/domain/WorkingCapitalLoanAccountLock.java @@ -20,6 +20,7 @@ import jakarta.persistence.Entity; import jakarta.persistence.Table; +import java.io.Serial; import java.time.LocalDate; import lombok.Getter; import lombok.NoArgsConstructor; @@ -30,6 +31,7 @@ @NoArgsConstructor public class WorkingCapitalLoanAccountLock extends AccountLock { + @Serial private static final long serialVersionUID = -5476985607461625252L; public WorkingCapitalLoanAccountLock(Long loanId, LockOwner lockOwner, LocalDate lockPlacedOnCobBusinessDate) { diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/internal/InternalTestCobJobAfterListener.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/internal/InternalTestCobJobAfterListener.java index 519f73993e8..2de10febad7 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/internal/InternalTestCobJobAfterListener.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/internal/InternalTestCobJobAfterListener.java @@ -23,7 +23,7 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.cob.listener.FineractCOBAfterJobListener; import org.apache.fineract.infrastructure.core.boot.FineractProfiles; -import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.job.JobExecution; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/internal/InternalTestCobJobBeforeListener.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/internal/InternalTestCobJobBeforeListener.java index 25fefe9379c..c8e888f6268 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/internal/InternalTestCobJobBeforeListener.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/internal/InternalTestCobJobBeforeListener.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.cob.internal; import static org.apache.fineract.infrastructure.jobs.service.JobName.WORKING_CAPITAL_LOAN_COB_JOB; @@ -24,7 +23,7 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.cob.listener.FineractCOBBeforeJobListener; import org.apache.fineract.infrastructure.core.boot.FineractProfiles; -import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.job.JobExecution; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/AbstractWorkingCapitalLoanCOBWorkerItemWriter.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/AbstractWorkingCapitalLoanCOBWorkerItemWriter.java index 7c71fa59dcb..5a8d17639de 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/AbstractWorkingCapitalLoanCOBWorkerItemWriter.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/AbstractWorkingCapitalLoanCOBWorkerItemWriter.java @@ -25,8 +25,8 @@ import org.apache.fineract.cob.domain.LockingService; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.portfolio.workingcapitalloan.domain.WorkingCapitalLoan; -import org.springframework.batch.item.Chunk; -import org.springframework.batch.item.data.RepositoryItemWriter; +import org.springframework.batch.infrastructure.item.Chunk; +import org.springframework.batch.infrastructure.item.data.RepositoryItemWriter; import org.springframework.data.repository.CrudRepository; @Slf4j @@ -36,8 +36,8 @@ public abstract class AbstractWorkingCapitalLoanCOBWorkerItemWriter extends Repo public AbstractWorkingCapitalLoanCOBWorkerItemWriter(LockingService loanLockingService, CrudRepository repository) { + super(repository); this.loanLockingService = loanLockingService; - setRepository(repository); } @Override diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBCustomJobParametersResolverTasklet.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBCustomJobParametersResolverTasklet.java index 32622c13d34..62384c660da 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBCustomJobParametersResolverTasklet.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBCustomJobParametersResolverTasklet.java @@ -23,11 +23,11 @@ import lombok.RequiredArgsConstructor; import org.apache.fineract.cob.common.CustomJobParameterResolver; -import org.springframework.batch.core.StepContribution; +import org.jspecify.annotations.Nullable; import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.tasklet.Tasklet; -import org.springframework.batch.repeat.RepeatStatus; -import org.springframework.lang.Nullable; +import org.springframework.batch.infrastructure.repeat.RepeatStatus; @RequiredArgsConstructor public class WorkingCapitalLoanCOBCustomJobParametersResolverTasklet implements Tasklet { diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBManagerConfiguration.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBManagerConfiguration.java index 30312cdea86..c2dea2ec5aa 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBManagerConfiguration.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBManagerConfiguration.java @@ -34,14 +34,14 @@ import org.apache.fineract.cob.listener.COBExecutionListenerRunner; import org.apache.fineract.cob.service.AccountLockService; import org.apache.fineract.infrastructure.springbatch.PropertyService; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.configuration.annotation.StepScope; +import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; +import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.launch.JobOperator; -import org.springframework.batch.core.launch.support.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; +import org.springframework.batch.core.step.StepExecution; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.integration.config.annotation.EnableBatchIntegration; import org.springframework.batch.integration.partition.RemotePartitioningManagerStepBuilderFactory; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBPartitioner.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBPartitioner.java index ed03b523adf..05043fc1215 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBPartitioner.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBPartitioner.java @@ -29,11 +29,11 @@ import org.apache.fineract.cob.data.BusinessStepNameAndOrder; import org.apache.fineract.cob.workingcapitalloan.businessstep.WorkingCapitalLoanCOBBusinessStep; import org.apache.fineract.infrastructure.springbatch.PropertyService; -import org.springframework.batch.core.StepExecution; +import org.jspecify.annotations.NonNull; import org.springframework.batch.core.launch.JobOperator; -import org.springframework.batch.core.partition.support.Partitioner; -import org.springframework.batch.item.ExecutionContext; -import org.springframework.lang.NonNull; +import org.springframework.batch.core.partition.Partitioner; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ExecutionContext; @Slf4j public class WorkingCapitalLoanCOBPartitioner extends CommonPartitioner implements Partitioner { diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerConfiguration.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerConfiguration.java index 978fd6db012..e938baa9385 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerConfiguration.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerConfiguration.java @@ -35,8 +35,8 @@ import org.apache.fineract.infrastructure.springbatch.PropertyService; import org.apache.fineract.portfolio.workingcapitalloan.domain.WorkingCapitalLoan; import org.apache.fineract.portfolio.workingcapitalloan.repository.WorkingCapitalLoanRepository; -import org.springframework.batch.core.Step; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.SimpleStepBuilder; import org.springframework.batch.integration.partition.RemotePartitioningWorkerStepBuilderFactory; import org.springframework.beans.factory.annotation.Qualifier; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerItemProcessor.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerItemProcessor.java index 2819e8862a4..d54569646a0 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerItemProcessor.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerItemProcessor.java @@ -19,8 +19,8 @@ package org.apache.fineract.cob.workingcapitalloan; import org.apache.fineract.cob.COBBusinessStepService; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.annotation.BeforeStep; +import org.springframework.batch.core.step.StepExecution; public class WorkingCapitalLoanCOBWorkerItemProcessor extends AbstractWorkingCapitalLoanCOBWorkerItemProcessor { diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerItemReader.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerItemReader.java index 103e6af89c9..1c7fd066684 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerItemReader.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanCOBWorkerItemReader.java @@ -28,11 +28,11 @@ import org.apache.fineract.portfolio.loanaccount.exception.LoanNotFoundException; import org.apache.fineract.portfolio.workingcapitalloan.domain.WorkingCapitalLoan; import org.apache.fineract.portfolio.workingcapitalloan.repository.WorkingCapitalLoanRepository; -import org.springframework.batch.core.StepExecution; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import org.springframework.batch.core.annotation.BeforeStep; -import org.springframework.batch.item.ItemReader; -import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; +import org.springframework.batch.core.step.StepExecution; +import org.springframework.batch.infrastructure.item.ItemReader; @Slf4j @RequiredArgsConstructor diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanInlineCOBWorkerItemProcessor.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanInlineCOBWorkerItemProcessor.java index ef5756c82c0..4e085e8be6e 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanInlineCOBWorkerItemProcessor.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/WorkingCapitalLoanInlineCOBWorkerItemProcessor.java @@ -19,8 +19,8 @@ package org.apache.fineract.cob.workingcapitalloan; import org.apache.fineract.cob.COBBusinessStepService; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.annotation.BeforeStep; +import org.springframework.batch.core.step.StepExecution; public class WorkingCapitalLoanInlineCOBWorkerItemProcessor extends AbstractWorkingCapitalLoanCOBWorkerItemProcessor { diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/businessstep/WorkingCapitalLoanDelinquencyClassificationBusinessStep.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/businessstep/WorkingCapitalLoanDelinquencyClassificationBusinessStep.java index ce94214f627..4b1b3a46a73 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/businessstep/WorkingCapitalLoanDelinquencyClassificationBusinessStep.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/cob/workingcapitalloan/businessstep/WorkingCapitalLoanDelinquencyClassificationBusinessStep.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.cob.workingcapitalloan.businessstep; import static org.apache.fineract.infrastructure.core.diagnostics.performance.MeasuringUtil.measure; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/infrastructure/event/business/domain/workingcapitalloan/transaction/WorkingCapitalLoanDiscountFeeTransactionBusinessEvent.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/infrastructure/event/business/domain/workingcapitalloan/transaction/WorkingCapitalLoanDiscountFeeTransactionBusinessEvent.java index 03b91c8f3f5..f1f27cceffc 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/infrastructure/event/business/domain/workingcapitalloan/transaction/WorkingCapitalLoanDiscountFeeTransactionBusinessEvent.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/infrastructure/event/business/domain/workingcapitalloan/transaction/WorkingCapitalLoanDiscountFeeTransactionBusinessEvent.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.infrastructure.event.business.domain.workingcapitalloan.transaction; import org.apache.fineract.portfolio.workingcapitalloan.domain.WorkingCapitalLoanTransaction; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/api/WorkingCapitalLoanChargesApiResource.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/api/WorkingCapitalLoanChargesApiResource.java index 10b620d715c..6877fbf13b0 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/api/WorkingCapitalLoanChargesApiResource.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/api/WorkingCapitalLoanChargesApiResource.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.api; import io.swagger.v3.oas.annotations.Operation; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/api/WorkingCapitalLoanChargesApiResourceSwagger.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/api/WorkingCapitalLoanChargesApiResourceSwagger.java index f70462dadb3..bc2163b2f5a 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/api/WorkingCapitalLoanChargesApiResourceSwagger.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/api/WorkingCapitalLoanChargesApiResourceSwagger.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.api; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/InternalWorkingCapitalLoanPaymentRequest.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/InternalWorkingCapitalLoanPaymentRequest.java index 445a7404b06..8d3849dc485 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/InternalWorkingCapitalLoanPaymentRequest.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/InternalWorkingCapitalLoanPaymentRequest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.data; import java.math.BigDecimal; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanAllocationPlan.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanAllocationPlan.java index a2732177e8c..90bb8daf655 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanAllocationPlan.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanAllocationPlan.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.data; import java.math.BigDecimal; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanAllocationRequest.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanAllocationRequest.java index 8a21b6e8161..e146f292ccc 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanAllocationRequest.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanAllocationRequest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.data; import java.math.BigDecimal; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanChargeData.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanChargeData.java index 60b3dddb8ec..3facd6af67c 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanChargeData.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanChargeData.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.data; import java.math.BigDecimal; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanCollectionData.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanCollectionData.java index 3d5bfff3c8d..0f906d2d417 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanCollectionData.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanCollectionData.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.data; import java.math.BigDecimal; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanDelinquencyTagHistoryData.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanDelinquencyTagHistoryData.java index 774f31ccf33..05fe28edb71 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanDelinquencyTagHistoryData.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanDelinquencyTagHistoryData.java @@ -16,26 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - package org.apache.fineract.portfolio.workingcapitalloan.data; import java.io.Serializable; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanRangeScheduleDelinquencyData.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanRangeScheduleDelinquencyData.java index 18ac9fdf817..93b1aeeb73d 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanRangeScheduleDelinquencyData.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/data/WorkingCapitalLoanRangeScheduleDelinquencyData.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.data; import java.math.BigDecimal; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanCharge.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanCharge.java index d866947df11..d896ca676bd 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanCharge.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanCharge.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.domain; import jakarta.persistence.Column; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanDelinquencyRangeScheduleTagHistory.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanDelinquencyRangeScheduleTagHistory.java index 7fe708a928f..cabb4eeeb81 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanDelinquencyRangeScheduleTagHistory.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanDelinquencyRangeScheduleTagHistory.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.domain; import jakarta.persistence.Column; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanTransactionRelationRepository.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanTransactionRelationRepository.java index 4b5b8009f44..d68094137e2 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanTransactionRelationRepository.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/domain/WorkingCapitalLoanTransactionRelationRepository.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.domain; import java.util.List; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/UndoWorkingCapitalLoanTransactionCommandHandler.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/UndoWorkingCapitalLoanTransactionCommandHandler.java index 866f04e34b5..cd372aa917a 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/UndoWorkingCapitalLoanTransactionCommandHandler.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/UndoWorkingCapitalLoanTransactionCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.handler; import static org.apache.fineract.commands.domain.CommandWrapperConstants.ACTION_UNDO; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/WorkingCapitalLoanCreateChargeCommandHandler.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/WorkingCapitalLoanCreateChargeCommandHandler.java index ed696921b0d..2470230b7e3 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/WorkingCapitalLoanCreateChargeCommandHandler.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/WorkingCapitalLoanCreateChargeCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/WorkingCapitalLoanDiscountFeeCommandHandler.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/WorkingCapitalLoanDiscountFeeCommandHandler.java index a5b460bd3c6..523c7023109 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/WorkingCapitalLoanDiscountFeeCommandHandler.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/handler/WorkingCapitalLoanDiscountFeeCommandHandler.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.handler; import lombok.RequiredArgsConstructor; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/mapper/WorkingCapitalLoanDelinquencyRangeScheduleTagHistoryMapper.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/mapper/WorkingCapitalLoanDelinquencyRangeScheduleTagHistoryMapper.java index 7bf71bc92bd..9a9956fa58d 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/mapper/WorkingCapitalLoanDelinquencyRangeScheduleTagHistoryMapper.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/mapper/WorkingCapitalLoanDelinquencyRangeScheduleTagHistoryMapper.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.mapper; import java.util.List; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanChargeRepository.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanChargeRepository.java index 2edc1c2954e..79b3fc5ad4d 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanChargeRepository.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanChargeRepository.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.repository; import java.time.LocalDate; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanDelinquencyRangeScheduleTagHistoryRepository.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanDelinquencyRangeScheduleTagHistoryRepository.java index a27c98cba34..8afb6b98eb6 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanDelinquencyRangeScheduleTagHistoryRepository.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanDelinquencyRangeScheduleTagHistoryRepository.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.repository; import java.time.LocalDate; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanRepository.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanRepository.java index fa29d89567d..26efb3ecc1c 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanRepository.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/repository/WorkingCapitalLoanRepository.java @@ -86,7 +86,7 @@ List findAllLoansByLastClosedBusinessDateAndMinAndMaxLoanIdAndStatuses(Lon List findAllLoansBehindOrNullByLoanIdsAndStatuses(@Param("cobBusinessDate") LocalDate cobBusinessDate, @Param("loanIds") List loanIds, @Param("loanStatuses") Collection loanStatuses); - @Query("select loan.id as id from WorkingCapitalLoan loan where loan.externalId = :externalId") + @Query("select loan.id from WorkingCapitalLoan loan where loan.externalId = :externalId") Long findIdByExternalId(@Param("externalId") ExternalId externalId); @Query("select loan.id, loan.lastClosedBusinessDate from WorkingCapitalLoan loan where loan.id IN :loanIds and loan.loanStatus in :loanStatuses and loan.lastClosedBusinessDate < :cobBusinessDate") diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/serialization/WorkingCapitalLoanChargeConstants.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/serialization/WorkingCapitalLoanChargeConstants.java index 68bb4bbef79..6f2237447ff 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/serialization/WorkingCapitalLoanChargeConstants.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/serialization/WorkingCapitalLoanChargeConstants.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.serialization; public final class WorkingCapitalLoanChargeConstants { diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleModelParserService.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleModelParserService.java index b983065213c..4e147057ae9 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleModelParserService.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleModelParserService.java @@ -21,8 +21,8 @@ import java.math.MathContext; import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.portfolio.workingcapitalloan.calc.ProjectedAmortizationScheduleModel; -import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; public interface ProjectedAmortizationScheduleModelParserService { diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleModelParserServiceGsonImpl.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleModelParserServiceGsonImpl.java index a905b5dc16f..ce23dc49228 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleModelParserServiceGsonImpl.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleModelParserServiceGsonImpl.java @@ -33,8 +33,8 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.organisation.monetary.domain.Money; import org.apache.fineract.portfolio.workingcapitalloan.calc.ProjectedAmortizationScheduleModel; -import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import org.springframework.stereotype.Component; @Slf4j diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleRepositoryWrapper.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleRepositoryWrapper.java index fa2fc4c4e99..085f2a64a01 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleRepositoryWrapper.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleRepositoryWrapper.java @@ -23,7 +23,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.portfolio.workingcapitalloan.calc.ProjectedAmortizationScheduleModel; import org.apache.fineract.portfolio.workingcapitalloan.domain.WorkingCapitalLoan; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; public interface ProjectedAmortizationScheduleRepositoryWrapper { diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleRepositoryWrapperImpl.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleRepositoryWrapperImpl.java index d9daa59b221..c16ed80544b 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleRepositoryWrapperImpl.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/ProjectedAmortizationScheduleRepositoryWrapperImpl.java @@ -29,7 +29,7 @@ import org.apache.fineract.portfolio.workingcapitalloan.domain.ProjectedAmortizationLoanModel; import org.apache.fineract.portfolio.workingcapitalloan.domain.WorkingCapitalLoan; import org.apache.fineract.portfolio.workingcapitalloan.repository.ProjectedAmortizationLoanModelRepository; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanAmortizationScheduleWriteServiceImpl.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanAmortizationScheduleWriteServiceImpl.java index 676a377b6e9..f844306d189 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanAmortizationScheduleWriteServiceImpl.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanAmortizationScheduleWriteServiceImpl.java @@ -40,7 +40,7 @@ import org.apache.fineract.portfolio.workingcapitalloan.exception.WorkingCapitalLoanNotFoundException; import org.apache.fineract.portfolio.workingcapitalloan.repository.WorkingCapitalLoanPeriodPaymentRateChangeRepository; import org.apache.fineract.portfolio.workingcapitalloan.repository.WorkingCapitalLoanRepository; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeReadPlatformService.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeReadPlatformService.java index 460c09d942b..866267e77d7 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeReadPlatformService.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeReadPlatformService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.service; import java.util.List; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeReadPlatformServiceImpl.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeReadPlatformServiceImpl.java index bcacb4b4b96..572677b4fa3 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeReadPlatformServiceImpl.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeReadPlatformServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.service; import java.util.List; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeWritePlatformService.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeWritePlatformService.java index a2cdfc360bf..5e39d52acb6 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeWritePlatformService.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeWritePlatformService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.service; import org.apache.fineract.infrastructure.core.api.JsonCommand; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeWritePlatformServiceImpl.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeWritePlatformServiceImpl.java index 69c81d4236c..6a0b3f83005 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeWritePlatformServiceImpl.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanChargeWritePlatformServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.service; import com.google.gson.JsonElement; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyClassificationService.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyClassificationService.java index 70bf17cf009..e73926d6e54 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyClassificationService.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyClassificationService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.service; import java.time.LocalDate; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyClassificationServiceImpl.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyClassificationServiceImpl.java index 245e6b6923c..a78a553c636 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyClassificationServiceImpl.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyClassificationServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.service; import static org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationConstants.ENABLE_INSTANT_DELINQUENCY_CALCULATION; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyReadPlatformService.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyReadPlatformService.java index f69d7f9c761..07c2654b572 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyReadPlatformService.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyReadPlatformService.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.service; import java.time.LocalDate; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyReadPlatformServiceImpl.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyReadPlatformServiceImpl.java index d646604fab8..b6abb417132 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyReadPlatformServiceImpl.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanDelinquencyReadPlatformServiceImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.portfolio.workingcapitalloan.service; import static org.apache.fineract.portfolio.workingcapitalloan.domain.WorkingCapitalLoanDelinquencyPauseUtils.isPauseActiveOnDate; diff --git a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloanproduct/domain/WorkingCapitalAdvancedPaymentAllocationsJsonParser.java b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloanproduct/domain/WorkingCapitalAdvancedPaymentAllocationsJsonParser.java index 52d197966b5..07d01d35d54 100644 --- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloanproduct/domain/WorkingCapitalAdvancedPaymentAllocationsJsonParser.java +++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloanproduct/domain/WorkingCapitalAdvancedPaymentAllocationsJsonParser.java @@ -28,7 +28,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTransactionType; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import org.springframework.stereotype.Service; @Service diff --git a/fineract-working-capital-loan/src/test/java/org/apache/fineract/portfolio/workingcapitalloanproduct/serialization/WorkingCapitalLoanApplicationDataValidatorTest.java b/fineract-working-capital-loan/src/test/java/org/apache/fineract/portfolio/workingcapitalloanproduct/serialization/WorkingCapitalLoanApplicationDataValidatorTest.java index 800c81e3265..29250085fa1 100644 --- a/fineract-working-capital-loan/src/test/java/org/apache/fineract/portfolio/workingcapitalloanproduct/serialization/WorkingCapitalLoanApplicationDataValidatorTest.java +++ b/fineract-working-capital-loan/src/test/java/org/apache/fineract/portfolio/workingcapitalloanproduct/serialization/WorkingCapitalLoanApplicationDataValidatorTest.java @@ -275,10 +275,10 @@ private String createJsonWithoutField(final String fieldName) { private String createJsonWithField(final String fieldName, final Object value) { final JsonObject json = createBaseJsonObject(); - if (value instanceof Number) { - json.addProperty(fieldName, (Number) value); - } else if (value instanceof String) { - json.addProperty(fieldName, (String) value); + if (value instanceof Number number) { + json.addProperty(fieldName, number); + } else if (value instanceof String string) { + json.addProperty(fieldName, string); } return json.toString(); } diff --git a/integration-tests/build.gradle b/integration-tests/build.gradle index 0cd3af35d5e..934be76d07a 100644 --- a/integration-tests/build.gradle +++ b/integration-tests/build.gradle @@ -37,9 +37,9 @@ dependencies { driver 'com.mysql:mysql-connector-j' driver 'org.mariadb.jdbc:mariadb-java-client' testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.14.4' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.14.4' - testRuntimeOnly 'org.junit.platform:junit-platform-suite:1.14.4' + testImplementation 'org.junit.jupiter:junit-jupiter-api' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly 'org.junit.platform:junit-platform-suite' } cargo { diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java index 3a6437cefd3..ac2ca790a8e 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.integrationtests; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuthenticationIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuthenticationIntegrationTest.java index b8e4792f344..2850d9e7fab 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuthenticationIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuthenticationIntegrationTest.java @@ -20,8 +20,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import io.restassured.builder.RequestSpecBuilder; import io.restassured.builder.ResponseSpecBuilder; import io.restassured.http.ContentType; @@ -42,6 +40,9 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; @Slf4j @ExtendWith(LoanTestLifecycleExtension.class) @@ -86,7 +87,7 @@ public void shouldAllowAccessForAuthenticatedUser() { } @Test - public void shouldReturnUnauthorizedForUnauthenticatedAccess() throws JsonProcessingException { + public void shouldReturnUnauthorizedForUnauthenticatedAccess() throws JacksonException { setupUnauthenticatedRequestSpec(); this.responseSpec = new ResponseSpecBuilder().expectStatusCode(401).build(); @@ -95,7 +96,7 @@ public void shouldReturnUnauthorizedForUnauthenticatedAccess() throws JsonProces String rawResponse = Utils.performServerPost(this.requestSpec, this.responseSpec, loanApprovalCommand, loanApprovalRequest, null); - ObjectMapper objectMapper = new ObjectMapper(); + ObjectMapper objectMapper = new JsonMapper(); HashMap response = objectMapper.readValue(rawResponse, HashMap.class); assertEquals(401, (Integer) response.get("status")); diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchApiTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchApiTest.java index 3bf3a9fea26..3451bde9869 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchApiTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchApiTest.java @@ -18,11 +18,11 @@ */ package org.apache.fineract.integrationtests; -import static org.apache.http.HttpStatus.SC_BAD_REQUEST; -import static org.apache.http.HttpStatus.SC_CONFLICT; -import static org.apache.http.HttpStatus.SC_FORBIDDEN; -import static org.apache.http.HttpStatus.SC_NOT_IMPLEMENTED; -import static org.apache.http.HttpStatus.SC_OK; +import static org.apache.hc.core5.http.HttpStatus.SC_BAD_REQUEST; +import static org.apache.hc.core5.http.HttpStatus.SC_CONFLICT; +import static org.apache.hc.core5.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.hc.core5.http.HttpStatus.SC_NOT_IMPLEMENTED; +import static org.apache.hc.core5.http.HttpStatus.SC_OK; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchLoanIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchLoanIntegrationTest.java index ffefdd16546..8b598203b47 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchLoanIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchLoanIntegrationTest.java @@ -27,7 +27,7 @@ import org.apache.fineract.integrationtests.client.feign.FeignLoanTestBase; import org.apache.fineract.integrationtests.client.feign.modules.LoanTestData.RepaymentFrequencyType; import org.apache.fineract.integrationtests.common.error.ErrorResponse; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanCatchUpIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanCatchUpIntegrationTest.java index 4e744454c29..a9970e67a8f 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanCatchUpIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanCatchUpIntegrationTest.java @@ -40,7 +40,7 @@ import org.apache.fineract.integrationtests.common.loans.LoanAccountLockHelper; import org.apache.fineract.portfolio.charge.domain.ChargeCalculationType; import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanChargebackWithCreditAllocationsIntegrationTests.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanChargebackWithCreditAllocationsIntegrationTests.java index de6ae651e78..e8de8d42872 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanChargebackWithCreditAllocationsIntegrationTests.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanChargebackWithCreditAllocationsIntegrationTests.java @@ -42,7 +42,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationType; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; @Slf4j @Order(2) diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanDownPaymentTransactionChargebackTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanDownPaymentTransactionChargebackTest.java index d07c1c8e469..c62aeeab4f2 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanDownPaymentTransactionChargebackTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanDownPaymentTransactionChargebackTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.integrationtests; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanNextPaymentDueAmountIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanNextPaymentDueAmountIntegrationTest.java index 540a76c812a..aa35d664634 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanNextPaymentDueAmountIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanNextPaymentDueAmountIntegrationTest.java @@ -18,7 +18,6 @@ */ package org.apache.fineract.integrationtests; -import com.fasterxml.jackson.databind.ObjectMapper; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; @@ -33,11 +32,13 @@ import org.apache.fineract.integrationtests.client.feign.modules.LoanTestData.RecalculationRestFrequencyType; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; @Slf4j public class LoanNextPaymentDueAmountIntegrationTest extends FeignLoanTestBase { - ObjectMapper objectMapper = new ObjectMapper(); + ObjectMapper objectMapper = new JsonMapper(); private static final String LOAN_ACCOUNT_DATA_V_1 = "org.apache.fineract.avro.loan.v1.LoanAccountDataV1"; @Test diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductBasicDetailsTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductBasicDetailsTest.java index acb30adddba..b77fe817f14 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductBasicDetailsTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductBasicDetailsTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.integrationtests; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductChargeOffReasonMappingsTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductChargeOffReasonMappingsTest.java index 299f9968f7b..86dabb4281a 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductChargeOffReasonMappingsTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductChargeOffReasonMappingsTest.java @@ -35,9 +35,9 @@ import org.apache.fineract.integrationtests.common.FineractFeignClientHelper; import org.apache.fineract.integrationtests.common.Utils; import org.apache.fineract.integrationtests.common.accounting.Account; +import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import org.springframework.lang.NonNull; public class LoanProductChargeOffReasonMappingsTest extends FeignLoanTestBase { diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductShortNameValidationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductShortNameValidationTest.java index e1719131f39..a0c35d4f7b4 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductShortNameValidationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanProductShortNameValidationTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.integrationtests; import static org.apache.fineract.integrationtests.common.Utils.uniqueRandomStringGenerator; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionInterestPaymentWaiverTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionInterestPaymentWaiverTest.java index 01db1cbb783..c6758536d2c 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionInterestPaymentWaiverTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionInterestPaymentWaiverTest.java @@ -20,8 +20,8 @@ import static org.apache.fineract.integrationtests.client.feign.modules.LoanTestData.TransactionProcessingStrategyCode.ADVANCED_PAYMENT_ALLOCATION_STRATEGY; import static org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder.DEFAULT_STRATEGY; -import static org.apache.http.HttpStatus.SC_BAD_REQUEST; -import static org.apache.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.hc.core5.http.HttpStatus.SC_BAD_REQUEST; +import static org.apache.hc.core5.http.HttpStatus.SC_FORBIDDEN; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/PaymentTypeIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/PaymentTypeIntegrationTest.java index 38749bee32e..f6100bbd197 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/PaymentTypeIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/PaymentTypeIntegrationTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.integrationtests; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -74,8 +73,8 @@ public void testPaymentType() { // 5. Update Payment Type String newName = PaymentTypeHelper.randomNameGenerator("P_TU", 5); - PaymentTypeHelper.updatePaymentType(paymentTypeId, - new PaymentTypeUpdateRequest().name(newName).description(description).isCashPayment(isCashPayment).position(position)); + PaymentTypeHelper.updatePaymentType(paymentTypeId, new PaymentTypeUpdateRequest().name(newName).description(description) + .isCashPayment(isCashPayment).position(position).isSystemDefined(false)); // 6. Verify Update var paymentTypeUpdatedResponse = PaymentTypeHelper.retrieveById(paymentTypeId); diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionDatatableIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionDatatableIntegrationTest.java index 89ebaa4f96d..baacd8d3298 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionDatatableIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionDatatableIntegrationTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.integrationtests; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionTest.java index 319983f7863..eef91e5d432 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionTest.java @@ -21,9 +21,9 @@ import static org.apache.fineract.integrationtests.common.CommonConstants.RESPONSE_RESOURCE_ID; import static org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper.PAYMENT_TYPE_ID; import static org.apache.fineract.integrationtests.common.system.DatatableHelper.addDatatableColumn; -import static org.apache.http.HttpStatus.SC_CONFLICT; -import static org.apache.http.HttpStatus.SC_FORBIDDEN; -import static org.apache.http.HttpStatus.SC_OK; +import static org.apache.hc.core5.http.HttpStatus.SC_CONFLICT; +import static org.apache.hc.core5.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.hc.core5.http.HttpStatus.SC_OK; import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.is; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionsSearchIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionsSearchIntegrationTest.java index 1b68286d3c3..f5dc08d5bcd 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionsSearchIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountTransactionsSearchIntegrationTest.java @@ -22,7 +22,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import com.fasterxml.jackson.core.JsonProcessingException; import io.restassured.builder.RequestSpecBuilder; import io.restassured.builder.ResponseSpecBuilder; import io.restassured.http.ContentType; @@ -60,6 +59,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; +import tools.jackson.core.JacksonException; @SuppressWarnings({ "rawtypes" }) @ExtendWith({ SavingsTestLifecycleExtension.class }) @@ -97,7 +97,7 @@ public void setup() { } @Test - public void testSavingsTransactionsSearchAmountFrom() throws JsonProcessingException { + public void testSavingsTransactionsSearchAmountFrom() throws JacksonException { final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, startDate); Assertions.assertNotNull(clientID); final Integer savingsId = createSavingsAccountDailyPosting(clientID, startDate); @@ -119,7 +119,7 @@ public void testSavingsTransactionsSearchAmountFrom() throws JsonProcessingExcep } @Test - public void testSavingsTransactionsSearchAmountFromTo() throws JsonProcessingException { + public void testSavingsTransactionsSearchAmountFromTo() throws JacksonException { final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, startDate); Assertions.assertNotNull(clientID); final Integer savingsId = createSavingsAccountDailyPosting(clientID, startDate); @@ -142,7 +142,7 @@ public void testSavingsTransactionsSearchAmountFromTo() throws JsonProcessingExc } @Test - public void testSavingsTransactionsSearchDateFromTo() throws JsonProcessingException { + public void testSavingsTransactionsSearchDateFromTo() throws JacksonException { final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, startDate); Assertions.assertNotNull(clientID); final Integer savingsId = createSavingsAccountDailyPosting(clientID, startDate); @@ -167,7 +167,7 @@ public void testSavingsTransactionsSearchDateFromTo() throws JsonProcessingExcep } @Test - public void testSavingsTransactionsSearchSubmittedDateFromTo() throws JsonProcessingException { + public void testSavingsTransactionsSearchSubmittedDateFromTo() throws JacksonException { LocalDate businessDate = Utils.getLocalDateOfTenant(); final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, startDate); Assertions.assertNotNull(clientID); @@ -235,7 +235,7 @@ public void testSavingsTransactionsSearchTransactionTypeDepositAndDefaultSort() } @Test - public void testSavingsTransactionsSearchTransactionTypesWithdrawAndDeposit() throws JsonProcessingException { + public void testSavingsTransactionsSearchTransactionTypesWithdrawAndDeposit() throws JacksonException { final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, startDate); Assertions.assertNotNull(clientID); final Integer savingsId = createSavingsAccountDailyPosting(clientID, startDate); diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsInterestPostingTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsInterestPostingTest.java index 33c4b2c45f4..b539bdce9a3 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsInterestPostingTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsInterestPostingTest.java @@ -610,8 +610,7 @@ private LocalDate coerceToLocalDate(HashMap tx) { continue; } - if (v instanceof List) { - List arr = (List) v; + if (v instanceof List arr) { if (arr.size() >= 3 && arr.get(0) instanceof Number && arr.get(1) instanceof Number && arr.get(2) instanceof Number) { int year = ((Number) arr.get(0)).intValue(); int month = ((Number) arr.get(1)).intValue(); @@ -620,8 +619,7 @@ private LocalDate coerceToLocalDate(HashMap tx) { } } - if (v instanceof String) { - String s = (String) v; + if (v instanceof String s) { DateTimeFormatter[] fmts = new DateTimeFormatter[] { DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.US), DateTimeFormatter.ofPattern("dd MMM yyyy", Locale.US), DateTimeFormatter.ofPattern("yyyy-MM-dd") }; for (DateTimeFormatter f : fmts) { @@ -662,14 +660,14 @@ private long countOverdraftOnDate(Integer accountId, LocalDate date) { @SuppressWarnings({ "rawtypes" }) private boolean isReversed(HashMap tx) { Object v = tx.get("reversed"); - if (v instanceof Boolean) { - return (Boolean) v; + if (v instanceof Boolean boolean1) { + return boolean1; } - if (v instanceof Number) { - return ((Number) v).intValue() != 0; + if (v instanceof Number number) { + return number.intValue() != 0; } - if (v instanceof String) { - return Boolean.parseBoolean((String) v); + if (v instanceof String string) { + return Boolean.parseBoolean(string); } return false; } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ShareProductDatatableIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ShareProductDatatableIntegrationTest.java index c9005e79e84..788054b2ea7 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ShareProductDatatableIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ShareProductDatatableIntegrationTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.integrationtests; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/UserAdministrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/UserAdministrationTest.java index b0db95285a3..81b24a6b8f2 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/UserAdministrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/UserAdministrationTest.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.integrationtests; import com.google.gson.JsonObject; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/feign/FeignLoanTestBase.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/feign/FeignLoanTestBase.java index 236d8b0e2cc..a6090f1e534 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/feign/FeignLoanTestBase.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/feign/FeignLoanTestBase.java @@ -23,7 +23,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import com.fasterxml.jackson.core.type.TypeReference; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.math.BigDecimal; @@ -138,6 +137,7 @@ import org.awaitility.Awaitility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.extension.ExtendWith; +import tools.jackson.core.type.TypeReference; @ExtendWith({ LoanTestLifecycleExtension.class, ExternalEventsExtension.class }) public abstract class FeignLoanTestBase extends FeignIntegrationTest implements LoanProductTemplates { diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/feign/helpers/FeignLoanHelper.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/feign/helpers/FeignLoanHelper.java index 31ad9426794..3e05b91c49c 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/feign/helpers/FeignLoanHelper.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/feign/helpers/FeignLoanHelper.java @@ -22,9 +22,6 @@ import static org.apache.fineract.client.feign.util.FeignCalls.fail; import static org.apache.fineract.client.feign.util.FeignCalls.ok; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import io.restassured.builder.RequestSpecBuilder; import io.restassured.builder.ResponseSpecBuilder; import io.restassured.http.ContentType; @@ -87,6 +84,9 @@ import org.apache.fineract.client.models.PutLoansLoanIdResponse; import org.apache.fineract.integrationtests.client.feign.modules.LoanRequestBuilders; import org.apache.fineract.integrationtests.common.Utils; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; public class FeignLoanHelper { @@ -176,7 +176,7 @@ public Long createLoanProductFromJson(String loanProductJson) { String sanitizedJson = loanProductJson.replaceAll("(?<=\\d),(?=\\d{3}(?!\\d))", ""); PostLoanProductsRequest request = ObjectMapperFactory.getShared().readValue(sanitizedJson, PostLoanProductsRequest.class); return createLoanProduct(request).getResourceId(); - } catch (com.fasterxml.jackson.core.JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalArgumentException("Invalid loan product json", e); } } @@ -189,7 +189,7 @@ private T extractErrorAttribute(CallFailedRuntimeException exception, String try { Map body = ObjectMapperFactory.getShared().readValue(feignException.responseBodyAsString(), Map.class); return (T) body.get(jsonAttributeToGetBack); - } catch (com.fasterxml.jackson.core.JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalStateException("Failed to parse error response for attribute " + jsonAttributeToGetBack, e); } } @@ -200,7 +200,7 @@ public T getLoanProductError(String loanProductJson, String jsonAttributeToG PostLoanProductsRequest request = ObjectMapperFactory.getShared().readValue(sanitizedJson, PostLoanProductsRequest.class); CallFailedRuntimeException ex = fail(() -> fineractClient.loanProducts().createLoanProduct(request)); return extractErrorAttribute(ex, jsonAttributeToGetBack); - } catch (com.fasterxml.jackson.core.JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalArgumentException("Invalid loan product json", e); } } @@ -564,7 +564,7 @@ private String toRescheduleJson(PostCreateRescheduleLoansRequest request, boolea } try { return mapper.writeValueAsString(body); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalStateException("Failed to serialize reschedule request", e); } } @@ -592,7 +592,7 @@ private PostLoansLoanIdResponse disburseToSavingsFromJson(Long loanId, String di disburseJson, null); try { return ObjectMapperFactory.getShared().readValue(response, PostLoansLoanIdResponse.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalStateException("Failed to parse disburseToSavings response", e); } } @@ -608,7 +608,7 @@ private static String toDisburseToSavingsJson(PostLoansLoanIdRequest request) { } try { return mapper.writeValueAsString(body); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalStateException("Failed to serialize disburseToSavings request", e); } } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/AuditHelper.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/AuditHelper.java index 3c3dee8fb4b..29e18c2d0ed 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/AuditHelper.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/AuditHelper.java @@ -21,10 +21,6 @@ import static org.apache.fineract.client.feign.util.FeignCalls.ok; import static org.junit.jupiter.api.Assertions.assertEquals; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -33,6 +29,10 @@ import org.apache.fineract.client.models.AuditSearchData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * @@ -115,7 +115,7 @@ private static List pageItems(final String response) { try { final JsonNode pageItemsNode = MAPPER.readTree(response).get("pageItems"); return MAPPER.convertValue(pageItemsNode, AUDIT_DATA_LIST_TYPE); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalStateException("Unable to parse audits list response: " + response, e); } } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java index 8c683677308..6d886635b66 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.fineract.integrationtests.common; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/Utils.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/Utils.java index 5a11ef90300..feb0bb1642a 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/Utils.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/Utils.java @@ -68,10 +68,10 @@ import org.apache.commons.lang3.StringUtils; import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.integrationtests.ConfigProperties; -import org.apache.http.conn.HttpHostConnectException; +import org.apache.hc.client5.http.HttpHostConnectException; +import org.jspecify.annotations.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.lang.NonNull; /** * Util for RestAssured tests. This class here in src/integrationTest is copy/pasted to src/test; please keep them in @@ -287,8 +287,7 @@ public static String loginIntoServerAndGetBase64EncodedAuthenticationKey(String assertThat("Failed to obtain key: " + json, StringUtils.isBlank(key), is(false)); return key; } catch (final Exception e) { - if (e instanceof HttpHostConnectException) { - final HttpHostConnectException hh = (HttpHostConnectException) e; + if (e instanceof HttpHostConnectException hh) { fail("Failed to connect to fineract platform:" + hh.getMessage()); } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/loans/LoanCOBCatchUpHelper.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/loans/LoanCOBCatchUpHelper.java index de13172e2c8..ff884adc014 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/loans/LoanCOBCatchUpHelper.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/loans/LoanCOBCatchUpHelper.java @@ -25,7 +25,7 @@ import org.apache.fineract.client.models.OldestCOBProcessedLoanDTO; import org.apache.fineract.client.util.Calls; import org.apache.fineract.integrationtests.common.FineractClientHelper; -import org.springframework.lang.NonNull; +import org.jspecify.annotations.NonNull; import retrofit2.Response; @Slf4j diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/datatable/DatatableAdvancedQueryTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/datatable/DatatableAdvancedQueryTest.java index 7d1e53fd802..a3b0cd82e47 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/datatable/DatatableAdvancedQueryTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/datatable/DatatableAdvancedQueryTest.java @@ -78,11 +78,11 @@ import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper; import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker; import org.apache.fineract.integrationtests.common.system.DatatableHelper; +import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.lang.NonNull; public class DatatableAdvancedQueryTest { diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/datatable/DatatableIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/datatable/DatatableIntegrationTest.java index c2fc66e62ce..2ad7ba5dd28 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/datatable/DatatableIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/datatable/DatatableIntegrationTest.java @@ -273,7 +273,7 @@ public void validateCreateReadDeleteDatatable() throws ParseException { assertEquals(itsAJson, ((Map) columnHeaders.get(9)).get("columnName")); Object jsonResponse = ((List) data.get("row")).get(9); - assertEquals(datatableEntryMap.get(itsAJson), jsonResponse instanceof Map ? ((Map) jsonResponse).get("value") : jsonResponse); + assertEquals(datatableEntryMap.get(itsAJson), jsonResponse instanceof Map m ? m.get("value") : jsonResponse); // Read the Datatable entry generated with genericResultSet in false List> datatableEntryResponseNoGenericResult = this.datatableHelper.readDatatableEntry(datatableName, diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/inlinecob/InlineLoanCOBTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/inlinecob/InlineLoanCOBTest.java index dc35fff4259..9a741ff3e3e 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/inlinecob/InlineLoanCOBTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/inlinecob/InlineLoanCOBTest.java @@ -53,7 +53,7 @@ import org.apache.fineract.integrationtests.common.Utils; import org.apache.fineract.portfolio.charge.domain.ChargeCalculationType; import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus; -import org.apache.http.HttpStatus; +import org.apache.hc.core5.http.HttpStatus; import org.junit.jupiter.api.Test; public class InlineLoanCOBTest extends FeignLoanTestBase { diff --git a/lombok.config b/lombok.config index b844ab0fc37..6486e25234e 100644 --- a/lombok.config +++ b/lombok.config @@ -22,4 +22,4 @@ lombok.addLombokGeneratedAnnotation = true lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier -lombok.jacksonized.jacksonVersion += 2 +lombok.jacksonized.jacksonVersion += 3 diff --git a/oauth2-tests/build.gradle b/oauth2-tests/build.gradle index ea2e4ae524a..b62f459a8e2 100644 --- a/oauth2-tests/build.gradle +++ b/oauth2-tests/build.gradle @@ -38,7 +38,7 @@ dependencies { driver 'org.mariadb.jdbc:mariadb-java-client' testImplementation 'org.seleniumhq.selenium:selenium-java:4.43.0' testImplementation 'io.github.bonigarcia:webdrivermanager:6.3.4' - testImplementation 'org.junit.jupiter:junit-jupiter:5.14.4' + testImplementation 'org.junit.jupiter:junit-jupiter' } cargo { diff --git a/oauth2-tests/src/test/java/org/apache/fineract/oauth2tests/OAuth2AuthenticationTest.java b/oauth2-tests/src/test/java/org/apache/fineract/oauth2tests/OAuth2AuthenticationTest.java index ed2db78a22a..347f0c537f7 100644 --- a/oauth2-tests/src/test/java/org/apache/fineract/oauth2tests/OAuth2AuthenticationTest.java +++ b/oauth2-tests/src/test/java/org/apache/fineract/oauth2tests/OAuth2AuthenticationTest.java @@ -41,13 +41,13 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; +import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; -import org.springframework.lang.NonNull; public class OAuth2AuthenticationTest { diff --git a/twofactor-tests/src/test/java/org/apache/fineract/twofactortests/TwoFactorAuthenticationTest.java b/twofactor-tests/src/test/java/org/apache/fineract/twofactortests/TwoFactorAuthenticationTest.java index e8c13cc7ace..cdd636961fc 100644 --- a/twofactor-tests/src/test/java/org/apache/fineract/twofactortests/TwoFactorAuthenticationTest.java +++ b/twofactor-tests/src/test/java/org/apache/fineract/twofactortests/TwoFactorAuthenticationTest.java @@ -19,9 +19,9 @@ package org.apache.fineract.twofactortests; import static io.restassured.RestAssured.given; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.fail; import com.icegreen.greenmail.configuration.GreenMailConfiguration;