FINERACT-2267: proper not null annotations. Remove jetbrains notnull, all services use non-null

This commit is contained in:
Attila Budai
2025-09-03 12:24:37 +02:00
committed by Adam Saghy
parent 65538495aa
commit 7378aea0b2
42 changed files with 290 additions and 285 deletions
@@ -28,7 +28,6 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import jakarta.annotation.Nullable;
import jakarta.validation.constraints.NotNull;
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
@@ -67,6 +66,7 @@ import org.apache.fineract.infrastructure.creditbureau.domain.TokenRepositoryWra
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.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -88,7 +88,7 @@ public class ThitsaWorksCreditBureauIntegrationWritePlatformServiceImpl implemen
@Transactional
@Override
public String okHttpConnectionMethod(String userName, String password, String subscriptionKey, String subscriptionId, String url,
String token, File file, FormDataContentDisposition fileData, Long uniqueId, String nrcId, @NotNull String process) {
String token, File file, FormDataContentDisposition fileData, Long uniqueId, String nrcId, @NonNull String process) {
String responseMessage = null;
if (StringUtils.isBlank(url)) {
@@ -23,7 +23,6 @@ import static org.apache.fineract.infrastructure.core.service.database.SqlOperat
import com.google.common.base.Splitter;
import com.google.gson.JsonObject;
import jakarta.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -48,6 +47,7 @@ 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
@@ -126,8 +126,8 @@ public class DatatableReadServiceImpl implements DatatableReadService {
}
@Override
public List<JsonObject> queryDataTable(@NotNull String datatable, @NotNull String columnName, String columnValueString,
@NotNull String resultColumnsString) {
public List<JsonObject> queryDataTable(@NonNull String datatable, @NonNull String columnName, String columnValueString,
@NonNull String resultColumnsString) {
datatable = datatableUtil.validateDatatableRegistered(datatable);
Map<String, ResultsetColumnHeaderData> headersByName = searchUtil
.mapHeadersToName(genericDataService.fillResultsetColumnHeaders(datatable));
@@ -149,7 +149,7 @@ public class DatatableReadServiceImpl implements DatatableReadService {
}
@Override
public Page<JsonObject> queryDataTableAdvanced(@NotNull String datatable, @NotNull PagedLocalRequest<AdvancedQueryData> pagedRequest) {
public Page<JsonObject> queryDataTableAdvanced(@NonNull String datatable, @NonNull PagedLocalRequest<AdvancedQueryData> pagedRequest) {
datatable = datatableUtil.validateDatatableRegistered(datatable);
context.authenticatedUser().validateHasDatatableReadPermission(datatable);
@@ -219,9 +219,9 @@ public class DatatableReadServiceImpl implements DatatableReadService {
}
@Override
public boolean buildDataQueryEmbedded(@NotNull EntityTables entityTable, @NotNull String datatable, @NotNull AdvancedQueryData request,
@NotNull List<String> selectColumns, @NotNull StringBuilder select, @NotNull StringBuilder from, @NotNull StringBuilder where,
@NotNull List<Object> params, String mainAlias, String alias, String dateFormat, String dateTimeFormat, Locale locale) {
public boolean buildDataQueryEmbedded(@NonNull EntityTables entityTable, @NonNull String datatable, @NonNull AdvancedQueryData request,
@NonNull List<String> selectColumns, @NonNull StringBuilder select, @NonNull StringBuilder from, @NonNull StringBuilder where,
@NonNull List<Object> params, String mainAlias, String alias, String dateFormat, String dateTimeFormat, Locale locale) {
List<String> resultColumns = request.getResultColumns();
List<ColumnFilterData> columnFilters = request.getColumnFilters();
if ((resultColumns == null || resultColumns.isEmpty()) && (columnFilters == null || columnFilters.isEmpty())) {
@@ -23,7 +23,6 @@ import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiCon
import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.TABLE_FIELD_ID;
import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.TABLE_REGISTERED_TABLE;
import jakarta.validation.constraints.NotNull;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -45,6 +44,7 @@ import org.apache.fineract.portfolio.search.service.SearchUtil;
import org.apache.fineract.useradministration.domain.AppUser;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Service;
@Slf4j
@@ -96,7 +96,7 @@ public class DatatableUtil {
return entityTable;
}
@NotNull
@NonNull
public EntityTables queryForApplicationEntity(final String datatable) {
sqlValidator.validate(datatable);
final String sql = "SELECT application_table_name FROM x_registered_table where registered_table_name = ?";
@@ -111,7 +111,7 @@ public class DatatableUtil {
return resolveEntity(applicationTableName);
}
public CommandProcessingResult checkMainResourceExistsWithinScope(@NotNull EntityTables entityTable, final Long appTableId) {
public CommandProcessingResult checkMainResourceExistsWithinScope(@NonNull EntityTables entityTable, final Long appTableId) {
final String sql = dataScopedSQL(entityTable, appTableId);
log.debug("data scoped sql: {}", sql);
final SqlRowSet rs = this.jdbcTemplate.queryForRowSet(sql);
@@ -140,7 +140,7 @@ public class DatatableUtil {
.build();
}
public String dataScopedSQL(@NotNull EntityTables entityTable, final Long appTableId) {
public String dataScopedSQL(@NonNull EntityTables entityTable, final Long appTableId) {
// unfortunately have to, one way or another, be able to restrict data to the users office hierarchy. Here, a
// few key tables are done. But if additional fields are needed on other tables the same pattern applies
final AppUser currentUser = this.context.authenticatedUser();
@@ -54,7 +54,6 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import jakarta.persistence.PersistenceException;
import jakarta.validation.constraints.NotNull;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.sql.PreparedStatement;
@@ -112,6 +111,7 @@ 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;
@@ -1199,7 +1199,7 @@ public class DatatableWriteServiceImpl implements DatatableWriteService {
});
}
private static boolean isUserInsertable(@NotNull EntityTables entityTable, @NotNull ResultsetColumnHeaderData columnHeader) {
private static boolean isUserInsertable(@NonNull EntityTables entityTable, @NonNull ResultsetColumnHeaderData columnHeader) {
String columnName = columnHeader.getColumnName();
return !columnHeader.getIsColumnPrimaryKey() && !CREATEDAT_FIELD_NAME.equals(columnName) && !UPDATEDAT_FIELD_NAME.equals(columnName)
&& !entityTable.getForeignKeyColumnNameOnDatatable().equals(columnName);
@@ -1298,7 +1298,7 @@ public class DatatableWriteServiceImpl implements DatatableWriteService {
.with(changes).build();
}
private static boolean isUserUpdatable(@NotNull EntityTables entityTable, @NotNull ResultsetColumnHeaderData columnHeader) {
private static boolean isUserUpdatable(@NonNull EntityTables entityTable, @NonNull ResultsetColumnHeaderData columnHeader) {
return isUserInsertable(entityTable, columnHeader);
}
@@ -1369,7 +1369,7 @@ public class DatatableWriteServiceImpl implements DatatableWriteService {
// --- DbUtils ---
@NotNull
@NonNull
private String mapApiTypeToDbType(String apiType, Integer length) {
if (StringUtils.isEmpty(apiType)) {
return "";
@@ -18,7 +18,6 @@
*/
package org.apache.fineract.infrastructure.dataqueries.service;
import jakarta.validation.constraints.NotNull;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -47,6 +46,7 @@ import org.apache.fineract.portfolio.savings.data.SavingsProductData;
import org.apache.fineract.portfolio.savings.service.SavingsProductReadPlatformService;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Service;
@Service
@@ -78,7 +78,7 @@ public class EntityDatatableChecksReadPlatformServiceImpl implements EntityDatat
}
@Override
public Page<EntityDataTableChecksData> retrieveAll(@NotNull SearchParameters searchParameters, final Integer status,
public Page<EntityDataTableChecksData> retrieveAll(@NonNull SearchParameters searchParameters, final Integer status,
final String entity, final Long productId) {
final StringBuilder sqlBuilder = new StringBuilder(200);
sqlBuilder.append("select ").append(sqlGenerator.calcFoundRows()).append(" ").append(this.entityDataTableChecksMapper.schema());
@@ -18,7 +18,6 @@
*/
package org.apache.fineract.infrastructure.jobs.service;
import jakarta.validation.constraints.NotNull;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
@@ -38,6 +37,7 @@ 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.lang.NonNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -71,7 +71,7 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
}
@Override
public JobDetailData retrieveOne(@NotNull IdTypeResolver.IdType idType, String identifier) {
public JobDetailData retrieveOne(@NonNull IdTypeResolver.IdType idType, String identifier) {
JobDetailData jobDetail = switch (idType) {
case ID -> jobDetailRepository.getDataById(Long.valueOf(identifier));
case SHORT_NAME -> jobDetailRepository.getDataByShortName(identifier);
@@ -84,7 +84,7 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
}
@Override
public Page<JobDetailHistoryData> retrieveJobHistory(@NotNull IdTypeResolver.IdType idType, String identifier,
public Page<JobDetailHistoryData> retrieveJobHistory(@NonNull IdTypeResolver.IdType idType, String identifier,
SearchParameters searchParameters) {
if (!isJobExist(idType, identifier)) {
throw new JobNotFoundException(idType, identifier);
@@ -127,8 +127,8 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
}
@Override
@NotNull
public Long retrieveId(@NotNull IdTypeResolver.IdType idType, String identifier) {
@NonNull
public Long retrieveId(@NonNull IdTypeResolver.IdType idType, String identifier) {
return switch (idType) {
case ID -> Long.valueOf(identifier);
case SHORT_NAME ->
@@ -149,7 +149,7 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
return true;
}
private boolean isJobExist(@NotNull IdTypeResolver.IdType idType, @NotNull String jobId) {
private boolean isJobExist(@NonNull IdTypeResolver.IdType idType, @NonNull String jobId) {
return switch (idType) {
case ID -> jobDetailRepository.existsById(Long.valueOf(jobId));
case SHORT_NAME -> jobDetailRepository.existsByShortName(jobId);
@@ -18,7 +18,6 @@
*/
package org.apache.fineract.interoperation.service;
import jakarta.validation.constraints.NotNull;
import java.time.LocalDateTime;
import org.apache.fineract.infrastructure.core.api.JsonCommand;
import org.apache.fineract.interoperation.data.InteropAccountData;
@@ -30,58 +29,59 @@ import org.apache.fineract.interoperation.data.InteropTransactionRequestResponse
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;
public interface InteropService {
@NotNull
InteropIdentifiersResponseData getAccountIdentifiers(@NotNull String accountId);
@NonNull
InteropIdentifiersResponseData getAccountIdentifiers(@NonNull String accountId);
@NotNull
InteropAccountData getAccountDetails(@NotNull String accountId);
@NonNull
InteropAccountData getAccountDetails(@NonNull String accountId);
@NotNull
InteropTransactionsData getAccountTransactions(@NotNull String accountId, boolean debit, boolean credit, LocalDateTime transactionsFrom,
@NonNull
InteropTransactionsData getAccountTransactions(@NonNull String accountId, boolean debit, boolean credit, LocalDateTime transactionsFrom,
LocalDateTime transactionsTo);
@NotNull
InteropIdentifierAccountResponseData getAccountByIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
@NonNull
InteropIdentifierAccountResponseData getAccountByIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
String subIdOrType);
@NotNull
InteropIdentifierAccountResponseData registerAccountIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
String subIdOrType, @NotNull JsonCommand command);
@NonNull
InteropIdentifierAccountResponseData registerAccountIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
String subIdOrType, @NonNull JsonCommand command);
@NotNull
InteropIdentifierAccountResponseData deleteAccountIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
@NonNull
InteropIdentifierAccountResponseData deleteAccountIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
String subIdOrType);
InteropTransactionRequestResponseData getTransactionRequest(@NotNull String transactionCode, @NotNull String requestCode);
InteropTransactionRequestResponseData getTransactionRequest(@NonNull String transactionCode, @NonNull String requestCode);
@NotNull
InteropTransactionRequestResponseData createTransactionRequest(@NotNull JsonCommand command);
@NonNull
InteropTransactionRequestResponseData createTransactionRequest(@NonNull JsonCommand command);
InteropQuoteResponseData getQuote(@NotNull String transactionCode, @NotNull String quoteCode);
InteropQuoteResponseData getQuote(@NonNull String transactionCode, @NonNull String quoteCode);
@NotNull
InteropQuoteResponseData createQuote(@NotNull JsonCommand command);
@NonNull
InteropQuoteResponseData createQuote(@NonNull JsonCommand command);
InteropTransferResponseData getTransfer(@NotNull String transactionCode, @NotNull String transferCode);
InteropTransferResponseData getTransfer(@NonNull String transactionCode, @NonNull String transferCode);
@NotNull
InteropTransferResponseData prepareTransfer(@NotNull JsonCommand command);
@NonNull
InteropTransferResponseData prepareTransfer(@NonNull JsonCommand command);
@NotNull
InteropTransferResponseData commitTransfer(@NotNull JsonCommand command);
@NonNull
InteropTransferResponseData commitTransfer(@NonNull JsonCommand command);
@NotNull
InteropTransferResponseData releaseTransfer(@NotNull JsonCommand command);
@NonNull
InteropTransferResponseData releaseTransfer(@NonNull JsonCommand command);
@NotNull
InteropKycResponseData getKyc(@NotNull String accountId);
@NonNull
InteropKycResponseData getKyc(@NonNull String accountId);
@NotNull
String disburseLoan(@NotNull String accountId, String apiRequestBodyAsJson);
@NonNull
String disburseLoan(@NonNull String accountId, String apiRequestBodyAsJson);
@NotNull
String loanRepayment(@NotNull String accountId, String apiRequestBodyAsJson);
@NonNull
String loanRepayment(@NonNull String accountId, String apiRequestBodyAsJson);
}
@@ -27,7 +27,6 @@ import static org.apache.fineract.portfolio.savings.SavingsAccountTransactionTyp
import static org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction.releaseAmount;
import jakarta.persistence.PersistenceException;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -112,6 +111,7 @@ 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;
@@ -191,17 +191,17 @@ public class InteropServiceImpl implements InteropService {
}
}
@NotNull
@NonNull
@Override
@Transactional
public InteropAccountData getAccountDetails(@NotNull String accountId) {
public InteropAccountData getAccountDetails(@NonNull String accountId) {
return InteropAccountData.build(validateAndGetSavingAccount(accountId));
}
@NotNull
@NonNull
@Override
@Transactional
public InteropTransactionsData getAccountTransactions(@NotNull String accountId, boolean debit, boolean credit,
public InteropTransactionsData getAccountTransactions(@NonNull String accountId, boolean debit, boolean credit,
java.time.LocalDateTime transactionsFrom, java.time.LocalDateTime transactionsTo) {
SavingsAccount savingsAccount = validateAndGetSavingAccount(accountId);
@@ -242,18 +242,18 @@ public class InteropServiceImpl implements InteropService {
return interopTransactionsData;
}
@NotNull
@NonNull
@Override
@Transactional
public InteropIdentifiersResponseData getAccountIdentifiers(@NotNull String accountId) {
public InteropIdentifiersResponseData getAccountIdentifiers(@NonNull String accountId) {
SavingsAccount savingsAccount = validateAndGetSavingAccount(accountId);
return InteropIdentifiersResponseData.build(savingsAccount);
}
@NotNull
@NonNull
@Transactional
@Override
public InteropIdentifierAccountResponseData getAccountByIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
public InteropIdentifierAccountResponseData getAccountByIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
String subIdOrType) {
InteropIdentifier identifier = findIdentifier(idType, idValue, subIdOrType);
if (identifier == null) {
@@ -263,11 +263,11 @@ public class InteropServiceImpl implements InteropService {
return InteropIdentifierAccountResponseData.build(identifier.getId(), identifier.getAccount().getExternalId().getValue());
}
@NotNull
@NonNull
@Transactional
@Override
public InteropIdentifierAccountResponseData registerAccountIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
String subIdOrType, @NotNull JsonCommand command) {
public InteropIdentifierAccountResponseData registerAccountIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
String subIdOrType, @NonNull JsonCommand command) {
InteropIdentifierRequestData request = dataValidator.validateAndParseCreateIdentifier(idType, idValue, subIdOrType, command);
// TODO: error handling
SavingsAccount savingsAccount = validateAndGetSavingAccount(request.getAccountId());
@@ -291,10 +291,10 @@ public class InteropServiceImpl implements InteropService {
}
}
@NotNull
@NonNull
@Transactional
@Override
public InteropIdentifierAccountResponseData deleteAccountIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
public InteropIdentifierAccountResponseData deleteAccountIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
String subIdOrType) {
InteropIdentifier identifier = findIdentifier(idType, idValue, subIdOrType);
if (identifier == null) {
@@ -310,15 +310,15 @@ public class InteropServiceImpl implements InteropService {
}
@Override
public InteropTransactionRequestResponseData getTransactionRequest(@NotNull String transactionCode, @NotNull String requestCode) {
public InteropTransactionRequestResponseData getTransactionRequest(@NonNull String transactionCode, @NonNull String requestCode) {
// always REJECTED until request info is stored
return InteropTransactionRequestResponseData.build(transactionCode, InteropActionState.REJECTED, requestCode);
}
@Override
@NotNull
@NonNull
@Transactional
public InteropTransactionRequestResponseData createTransactionRequest(@NotNull JsonCommand command) {
public InteropTransactionRequestResponseData createTransactionRequest(@NonNull JsonCommand command) {
// only when Payee request transaction from Payer, so here role must be
// always Payer
InteropTransactionRequestData request = dataValidator.validateAndParseCreateRequest(command);
@@ -331,14 +331,14 @@ public class InteropServiceImpl implements InteropService {
}
@Override
public InteropQuoteResponseData getQuote(@NotNull String transactionCode, @NotNull String quoteCode) {
public InteropQuoteResponseData getQuote(@NonNull String transactionCode, @NonNull String quoteCode) {
return null;
}
@Override
@NotNull
@NonNull
@Transactional
public InteropQuoteResponseData createQuote(@NotNull JsonCommand command) {
public InteropQuoteResponseData createQuote(@NonNull JsonCommand command) {
InteropQuoteRequestData request = dataValidator.validateAndParseCreateQuote(command);
SavingsAccount savingsAccount = validateAndGetSavingAccount(request);
@@ -361,14 +361,14 @@ public class InteropServiceImpl implements InteropService {
}
@Override
public InteropTransferResponseData getTransfer(@NotNull String transactionCode, @NotNull String transferCode) {
public InteropTransferResponseData getTransfer(@NonNull String transactionCode, @NonNull String transferCode) {
return null;
}
@Override
@NotNull
@NonNull
@Transactional
public InteropTransferResponseData prepareTransfer(@NotNull JsonCommand command) {
public InteropTransferResponseData prepareTransfer(@NonNull JsonCommand command) {
InteropTransferRequestData request = dataValidator.validateAndParseTransferRequest(command);
String transferCode = request.getTransferCode();
LocalDate transactionDate = DateUtils.getBusinessLocalDate();
@@ -409,9 +409,9 @@ public class InteropServiceImpl implements InteropService {
}
@Override
@NotNull
@NonNull
@Transactional
public InteropTransferResponseData commitTransfer(@NotNull JsonCommand command) {
public InteropTransferResponseData commitTransfer(@NonNull JsonCommand command) {
InteropTransferRequestData request = dataValidator.validateAndParseTransferRequest(command);
boolean isDebit = request.getTransactionRole().getTransactionType().isDebit();
SavingsAccount savingsAccount = validateAndGetSavingAccount(request);
@@ -474,7 +474,7 @@ public class InteropServiceImpl implements InteropService {
@Override
@Transactional
public @NotNull InteropTransferResponseData releaseTransfer(@NotNull JsonCommand command) {
public @NonNull InteropTransferResponseData releaseTransfer(@NonNull JsonCommand command) {
InteropTransferRequestData request = dataValidator.validateAndParseTransferRequest(command);
SavingsAccount savingsAccount = validateAndGetSavingAccount(request);
@@ -504,7 +504,7 @@ public class InteropServiceImpl implements InteropService {
}
@Override
public @NotNull InteropKycResponseData getKyc(@NotNull @NotNull String accountId) {
public @NonNull InteropKycResponseData getKyc(@NonNull String accountId) {
SavingsAccount savingsAccount = validateAndGetSavingAccount(accountId);
Long clientId = savingsAccount.getClient().getId();
@@ -522,7 +522,7 @@ public class InteropServiceImpl implements InteropService {
}
@Override
public @NotNull String disburseLoan(@NotNull String accountId, String apiRequestBodyAsJson) {
public @NonNull String disburseLoan(@NonNull String accountId, String apiRequestBodyAsJson) {
Loan loan = validateAndGetLoan(accountId);
Long loanId = loan.getId();
@@ -535,7 +535,7 @@ public class InteropServiceImpl implements InteropService {
}
@Override
public @NotNull String loanRepayment(@NotNull String accountId, String apiRequestBodyAsJson) {
public @NonNull String loanRepayment(@NonNull String accountId, String apiRequestBodyAsJson) {
Loan loan = validateAndGetLoan(accountId);
Long loanId = loan.getId();
@@ -563,7 +563,7 @@ public class InteropServiceImpl implements InteropService {
return loan;
}
private SavingsAccount validateAndGetSavingAccount(@NotNull InteropRequestData request) {
private SavingsAccount validateAndGetSavingAccount(@NonNull InteropRequestData request) {
// TODO: error handling
SavingsAccount savingsAccount = validateAndGetSavingAccount(request.getAccountId());
savingsAccount.setHelpers(savingsAccountTransactionSummaryWrapper, savingsHelper);
@@ -583,7 +583,7 @@ public class InteropServiceImpl implements InteropService {
return savingsAccount;
}
private BigDecimal calculateTotalTransferAmount(@NotNull InteropTransferRequestData request, @NotNull SavingsAccount savingsAccount) {
private BigDecimal calculateTotalTransferAmount(@NonNull InteropTransferRequestData request, @NonNull SavingsAccount savingsAccount) {
BigDecimal total = request.getAmount().getAmount();
MoneyData requestFee = request.getFspFee();
if (requestFee != null) {
@@ -604,7 +604,7 @@ public class InteropServiceImpl implements InteropService {
return total;
}
private DateTimeFormatter getDateTimeFormatter(@NotNull JsonCommand command) {
private DateTimeFormatter getDateTimeFormatter(@NonNull JsonCommand command) {
Locale locale = command.extractLocale();
if (locale == null) {
locale = DEFAULT_LOCALE;
@@ -637,7 +637,7 @@ public class InteropServiceImpl implements InteropService {
}).findFirst().orElse(null);
}
public InteropIdentifier findIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue, String subIdOrType) {
public InteropIdentifier findIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue, String subIdOrType) {
return identifierRepository.findOneByTypeAndValueAndSubType(idType, idValue, subIdOrType);
}
@@ -657,7 +657,7 @@ public class InteropServiceImpl implements InteropService {
"Unknown data integrity issue with resource: " + realCause.getMessage());
}
@NotNull
@NonNull
String getRoutingCode() {
return DEFAULT_ROUTING_CODE;
}
@@ -28,7 +28,6 @@ import static org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionTy
import static org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL_ADJUSTMENT;
import static org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.INCOME_POSTING;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
@@ -121,7 +120,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
*/
@Override
@Transactional
public void addPeriodicAccruals(@NotNull LocalDate tillDate) throws JobExecutionException {
public void addPeriodicAccruals(@NonNull LocalDate tillDate) throws JobExecutionException {
List<Loan> loans = loanRepositoryWrapper.findLoansForPeriodicAccrual(AccountingRuleType.ACCRUAL_PERIODIC, tillDate,
!isChargeOnDueDate());
List<Throwable> errors = new ArrayList<>();
@@ -143,7 +142,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
*/
@Override
@Transactional
public void addPeriodicAccruals(@NotNull final LocalDate tillDate, @NotNull final Loan loan) {
public void addPeriodicAccruals(@NonNull final LocalDate tillDate, @NonNull final Loan loan) {
if (loan.isClosed() || loan.getStatus().isOverpaid()) {
return;
}
@@ -156,7 +155,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
*/
@Override
@Transactional
public void addAccruals(@NotNull LocalDate tillDate) throws JobExecutionException {
public void addAccruals(@NonNull LocalDate tillDate) throws JobExecutionException {
final boolean chargeOnDueDate = isChargeOnDueDate();
List<Loan> loans = loanRepositoryWrapper.findLoansForAddAccrual(AccountingRuleType.ACCRUAL_PERIODIC, tillDate, !chargeOnDueDate);
@@ -203,7 +202,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
* reschedule
*/
@Override
public void reprocessExistingAccruals(@NotNull final Loan loan, final boolean addEvent) {
public void reprocessExistingAccruals(@NonNull final Loan loan, final boolean addEvent) {
List<LoanTransaction> accrualTransactions = retrieveListOfAccrualTransactions(loan);
if (!accrualTransactions.isEmpty()) {
if (loan.isPeriodicAccrualAccountingEnabledOnLoanProduct()) {
@@ -219,7 +218,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
*/
@Override
@Transactional
public void processAccrualsOnInterestRecalculation(@NotNull Loan loan, boolean isInterestRecalculationEnabled, boolean addJournal) {
public void processAccrualsOnInterestRecalculation(@NonNull Loan loan, boolean isInterestRecalculationEnabled, boolean addJournal) {
if (isProgressiveAccrual(loan)) {
return;
}
@@ -254,7 +253,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
* method calculates accruals for loan with interest recalculation and compounding to be posted as income
*/
@Override
public void processIncomePostingAndAccruals(@NotNull final Loan loan, final boolean addEvent) {
public void processIncomePostingAndAccruals(@NonNull final Loan loan, final boolean addEvent) {
if (isProgressiveAccrual(loan)) {
return;
}
@@ -298,8 +297,8 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
* method calculates accruals for loan on loan fore closure
*/
@Override
public void processAccrualsOnLoanForeClosure(@NotNull Loan loan, @NotNull LocalDate foreClosureDate,
@NotNull List<LoanTransaction> newAccrualTransactions) {
public void processAccrualsOnLoanForeClosure(@NonNull Loan loan, @NonNull LocalDate foreClosureDate,
@NonNull List<LoanTransaction> newAccrualTransactions) {
// TODO implement progressive accrual case
if (loan.isPeriodicAccrualAccountingEnabledOnLoanProduct()
&& (loan.getAccruedTill() == null || !DateUtils.isEqual(foreClosureDate, loan.getAccruedTill()))) {
@@ -323,7 +322,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
// PeriodicAccruals
private void addAccruals(@NotNull final Loan loan, @NotNull LocalDate tillDate, final boolean periodic, final boolean isFinal,
private void addAccruals(@NonNull final Loan loan, @NonNull LocalDate tillDate, final boolean periodic, final boolean isFinal,
final boolean addJournal, final boolean chargeOnDueDate) {
if ((!isFinal && !loan.isOpen()) || loan.isNpa() || loan.isChargedOff() || !loan.isPeriodicAccrualAccountingEnabledOnLoanProduct()
|| loan.isContractTermination()) {
@@ -436,7 +435,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
return loan.getLoanCharges(t -> t.isActive() && DateUtils.isEqual(t.getDueDate(), accrualDate)).isEmpty();
}
private AccrualPeriodsData calculateAccrualAmounts(@NotNull final Loan loan, @NotNull final LocalDate tillDate, final boolean periodic,
private AccrualPeriodsData calculateAccrualAmounts(@NonNull final Loan loan, @NonNull final LocalDate tillDate, final boolean periodic,
final boolean isFinal, final boolean chargeOnDueDate) {
final LoanProductRelatedDetail productDetail = loan.getLoanProductRelatedDetail();
final MonetaryCurrency currency = productDetail.getCurrency();
@@ -455,8 +454,8 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
return accrualPeriods;
}
@NotNull
private List<LoanRepaymentScheduleInstallment> getInstallmentsToAccrue(@NotNull final Loan loan, @NotNull final LocalDate tillDate,
@NonNull
private List<LoanRepaymentScheduleInstallment> getInstallmentsToAccrue(@NonNull final Loan loan, @NonNull final LocalDate tillDate,
final boolean periodic, final boolean chargeOnDueDate) {
final LocalDate organisationStartDate = this.configurationDomainService.retrieveOrganisationStartDate();
final int firstInstallmentNumber = fetchFirstNormalInstallmentNumber(loan.getRepaymentScheduleInstallments());
@@ -466,9 +465,9 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
&& !isAfterPeriod(organisationStartDate, i));
}
private void addInterestAccrual(@NotNull final Loan loan, @NotNull final LocalDate tillDate,
final LoanScheduleGenerator scheduleGenerator, @NotNull final LoanRepaymentScheduleInstallment installment,
@NotNull final AccrualPeriodsData accrualPeriods) {
private void addInterestAccrual(@NonNull final Loan loan, @NonNull final LocalDate tillDate,
final LoanScheduleGenerator scheduleGenerator, @NonNull final LoanRepaymentScheduleInstallment installment,
@NonNull final AccrualPeriodsData accrualPeriods) {
if (installment.isAdditional() || installment.isReAged()) {
return;
}
@@ -506,9 +505,9 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
period.setInterestAccrued(accrued);
}
@NotNull
private BigDecimal calcInterestTransactionWaivedAmount(@NotNull LoanRepaymentScheduleInstallment installment,
@NotNull LocalDate tillDate) {
@NonNull
private BigDecimal calcInterestTransactionWaivedAmount(@NonNull LoanRepaymentScheduleInstallment installment,
@NonNull LocalDate tillDate) {
Predicate<LoanTransaction> transactionPredicate = t -> !t.isReversed() && t.isInterestWaiver()
&& !DateUtils.isAfter(t.getTransactionDate(), tillDate);
return installment.getLoanTransactionToRepaymentScheduleMappings().stream()
@@ -516,9 +515,9 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
.map(LoanTransactionToRepaymentScheduleMapping::getInterestPortion).reduce(BigDecimal.ZERO, MathUtil::add);
}
@NotNull
private BigDecimal calcInterestUnrecognizedWaivedAmount(@NotNull LoanRepaymentScheduleInstallment installment,
@NotNull AccrualPeriodsData accrualPeriods, @NotNull LocalDate tillDate) {
@NonNull
private BigDecimal calcInterestUnrecognizedWaivedAmount(@NonNull LoanRepaymentScheduleInstallment installment,
@NonNull AccrualPeriodsData accrualPeriods, @NonNull LocalDate tillDate) {
// unrecognized amount of the transaction is not mapped to installments
LocalDate dueDate = installment.getDueDate();
LocalDate toDate = DateUtils.isBefore(dueDate, tillDate) ? dueDate : tillDate;
@@ -532,9 +531,9 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
return MathUtil.min(installment.getInterestWaived(), MathUtil.subtractToZero(totalUnrecognized, prevUnrecognized), false);
}
@NotNull
private BigDecimal calcInterestAccruedAmount(@NotNull LoanRepaymentScheduleInstallment installment,
@NotNull AccrualPeriodsData accrualPeriods, @NotNull LocalDate tillDate) {
@NonNull
private BigDecimal calcInterestAccruedAmount(@NonNull LoanRepaymentScheduleInstallment installment,
@NonNull AccrualPeriodsData accrualPeriods, @NonNull LocalDate tillDate) {
Loan loan = installment.getLoan();
if (isProgressiveAccrual(loan)) {
BigDecimal totalAccrued = loanTransactionRepository.findTotalInterestAccruedAmount(loan);
@@ -550,8 +549,8 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
}
}
private void addChargeAccrual(@NotNull final Loan loan, @NotNull final LocalDate tillDate, final boolean chargeOnDueDate,
@NotNull final LoanRepaymentScheduleInstallment installment, @NotNull final AccrualPeriodsData accrualPeriods) {
private void addChargeAccrual(@NonNull final Loan loan, @NonNull final LocalDate tillDate, final boolean chargeOnDueDate,
@NonNull final LoanRepaymentScheduleInstallment installment, @NonNull final AccrualPeriodsData accrualPeriods) {
final AccrualPeriodData period = accrualPeriods.getPeriodByInstallmentNumber(installment.getInstallmentNumber());
final LocalDate dueDate = installment.getDueDate();
final Collection<LoanCharge> loanCharges = loan
@@ -564,8 +563,8 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
}
}
private void addChargeAccrual(@NotNull final LoanCharge loanCharge, @NotNull final LocalDate tillDate, final boolean chargeOnDueDate,
@NotNull final LoanRepaymentScheduleInstallment installment, @NotNull final AccrualPeriodsData accrualPeriods) {
private void addChargeAccrual(@NonNull final LoanCharge loanCharge, @NonNull final LocalDate tillDate, final boolean chargeOnDueDate,
@NonNull final LoanRepaymentScheduleInstallment installment, @NonNull final AccrualPeriodsData accrualPeriods) {
final MonetaryCurrency currency = accrualPeriods.getCurrency();
final Integer firstInstallmentNumber = accrualPeriods.getFirstInstallmentNumber();
final boolean installmentFee = loanCharge.isInstalmentFee();
@@ -617,16 +616,16 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
duePeriod.addCharge(chargeData);
}
@NotNull
private BigDecimal calcChargeWaivedAmount(@NotNull final Collection<LoanChargePaidBy> loanChargePaidBy,
@NotNull final LocalDate tillDate) {
@NonNull
private BigDecimal calcChargeWaivedAmount(@NonNull final Collection<LoanChargePaidBy> loanChargePaidBy,
@NonNull final LocalDate tillDate) {
return loanChargePaidBy.stream().filter(pb -> {
final LoanTransaction t = pb.getLoanTransaction();
return !t.isReversed() && t.isWaiveCharge() && !DateUtils.isAfter(t.getTransactionDate(), tillDate);
}).map(LoanChargePaidBy::getAmount).reduce(BigDecimal.ZERO, MathUtil::add);
}
private boolean isChargeDue(@NotNull final LoanCharge loanCharge, @NotNull final LocalDate tillDate, boolean chargeOnDueDate,
private boolean isChargeDue(@NonNull final LoanCharge loanCharge, @NonNull final LocalDate tillDate, boolean chargeOnDueDate,
final LoanRepaymentScheduleInstallment installment, final boolean isFirstPeriod) {
final LocalDate fromDate = installment.getFromDate();
final LocalDate dueDate = installment.getDueDate();
@@ -636,7 +635,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
: isInPeriod(loanCharge.getSubmittedOnDate(), fromDate, toDate, isFirstPeriod);
}
private LoanTransaction createOrMergeAccrualTransaction(@NotNull final Loan loan, LoanTransaction transaction,
private LoanTransaction createOrMergeAccrualTransaction(@NonNull final Loan loan, LoanTransaction transaction,
final LocalDate transactionDate, final AccrualPeriodData accrualPeriod, final List<LoanTransaction> accrualTransactions,
final Money interest, final Money fee, final Money penalty, final boolean adjustment) {
if (transaction == null) {
@@ -650,7 +649,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
return transaction;
}
private LoanTransaction addAccrualTransaction(@NotNull Loan loan, @NotNull LocalDate transactionDate, AccrualPeriodData accrualPeriod,
private LoanTransaction addAccrualTransaction(@NonNull Loan loan, @NonNull LocalDate transactionDate, AccrualPeriodData accrualPeriod,
Money interestPortion, Money feePortion, Money penaltyPortion, boolean adjustment) {
interestPortion = MathUtil.negativeToZero(interestPortion);
BigDecimal interest = MathUtil.toBigDecimal(interestPortion);
@@ -673,7 +672,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
return savedTransaction;
}
private void mergeAccrualTransaction(@NotNull final LoanTransaction transaction, final AccrualPeriodData accrualPeriod,
private void mergeAccrualTransaction(@NonNull final LoanTransaction transaction, final AccrualPeriodData accrualPeriod,
Money interestPortion, Money feePortion, Money penaltyPortion, final boolean adjustment) {
interestPortion = MathUtil.negativeToZero(interestPortion);
feePortion = MathUtil.negativeToZero(feePortion);
@@ -687,7 +686,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
addTransactionMappings(transaction, accrualPeriod, adjustment);
}
private void addTransactionMappings(@NotNull final LoanTransaction transaction, final AccrualPeriodData accrualPeriod,
private void addTransactionMappings(@NonNull final LoanTransaction transaction, final AccrualPeriodData accrualPeriod,
final boolean adjustment) {
if (accrualPeriod == null) {
return;
@@ -700,7 +699,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
addPaidByMappings(transaction, installment, accrualPeriod, adjustment);
}
private void addPaidByMappings(@NotNull final LoanTransaction transaction, final LoanRepaymentScheduleInstallment installment,
private void addPaidByMappings(@NonNull final LoanTransaction transaction, final LoanRepaymentScheduleInstallment installment,
final AccrualPeriodData accrualPeriod, final boolean adjustment) {
final Loan loan = installment.getLoan();
final MonetaryCurrency currency = loan.getCurrency();
@@ -725,7 +724,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
}
}
private boolean isFullPeriod(@NotNull final LocalDate tillDate, @NotNull final LoanRepaymentScheduleInstallment installment) {
private boolean isFullPeriod(@NonNull final LocalDate tillDate, @NonNull final LoanRepaymentScheduleInstallment installment) {
return isAfterPeriod(tillDate, installment) || DateUtils.isEqual(tillDate, installment.getDueDate());
}
@@ -1280,7 +1279,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
};
}
public boolean isProgressiveAccrual(@NotNull Loan loan) {
public boolean isProgressiveAccrual(@NonNull Loan loan) {
return loan.isProgressiveSchedule();
}
}
@@ -42,7 +42,6 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationT
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.jetbrains.annotations.NotNull;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -60,7 +59,7 @@ public class LoanCapitalizedIncomeAmortizationProcessingServiceImpl implements L
@Override
@Transactional
public void processCapitalizedIncomeAmortizationOnLoanClosure(@NotNull final Loan loan, final boolean addJournal) {
public void processCapitalizedIncomeAmortizationOnLoanClosure(@NonNull final Loan loan, final boolean addJournal) {
final LocalDate transactionDate = getFinalCapitalizedIncomeAmortizationTransactionDate(loan);
final Optional<LoanTransaction> amortizationTransaction = createCapitalizedIncomeAmortizationTransaction(loan, transactionDate,
false, null);
@@ -80,7 +79,7 @@ public class LoanCapitalizedIncomeAmortizationProcessingServiceImpl implements L
@Override
@Transactional
public void processCapitalizedIncomeAmortizationOnLoanChargeOff(@NotNull final Loan loan,
public void processCapitalizedIncomeAmortizationOnLoanChargeOff(@NonNull final Loan loan,
@NonNull final LoanTransaction chargeOffTransaction) {
LocalDate transactionDate = loan.getChargedOffOnDate();
if (transactionDate == null) {
@@ -148,7 +147,7 @@ public class LoanCapitalizedIncomeAmortizationProcessingServiceImpl implements L
@Override
@Transactional
public void processCapitalizedIncomeAmortizationOnLoanUndoChargeOff(@NotNull final LoanTransaction loanTransaction) {
public void processCapitalizedIncomeAmortizationOnLoanUndoChargeOff(@NonNull final LoanTransaction loanTransaction) {
final Loan loan = loanTransaction.getLoan();
loan.getLoanTransactions().stream().filter(LoanTransaction::isCapitalizedIncomeAmortization)
@@ -25,7 +25,6 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Collection;
@@ -56,6 +55,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepositor
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;
@RequiredArgsConstructor
public class LoanDisbursementService {
@@ -117,8 +117,8 @@ public class LoanDisbursementService {
}
}
public Money adjustDisburseAmount(final Loan loan, @NotNull final JsonCommand command,
@NotNull final LocalDate actualDisbursementDate) {
public Money adjustDisburseAmount(final Loan loan, @NonNull final JsonCommand command,
@NonNull final LocalDate actualDisbursementDate) {
Money disburseAmount = loan.getLoanRepaymentScheduleDetail().getPrincipal().zero();
final BigDecimal principalDisbursed = command.bigDecimalValueOfParameterNamed(LoanApiConstants.principalDisbursedParameterName);
if (loan.getActualDisbursementDate() == null || DateUtils.isBefore(actualDisbursementDate, loan.getActualDisbursementDate())) {
@@ -18,7 +18,6 @@
*/
package org.apache.fineract.portfolio.loanaccount.service;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Map;
@@ -36,6 +35,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
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;
@RequiredArgsConstructor
public class LoanTransactionAssembler {
@@ -69,8 +69,8 @@ public class LoanTransactionAssembler {
txnExternalId, null);
}
public LoanTransaction assembleAccrualActivityTransaction(@NotNull Loan loan, @NotNull LoanRepaymentScheduleInstallment installment,
@NotNull LocalDate transactionDate) {
public LoanTransaction assembleAccrualActivityTransaction(@NonNull Loan loan, @NonNull LoanRepaymentScheduleInstallment installment,
@NonNull LocalDate transactionDate) {
ExternalId externalId = externalIdFactory.create();
BigDecimal interestPortion = installment.getInterestCharged();
@@ -18,7 +18,6 @@
*/
package org.apache.fineract.portfolio.savings.service;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.math.MathContext;
import java.time.LocalDate;
@@ -48,6 +47,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsHelper;
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;
@RequiredArgsConstructor
public class SavingsAccountInterestPostingServiceImpl implements SavingsAccountInterestPostingService {
@@ -346,7 +346,7 @@ public class SavingsAccountInterestPostingServiceImpl implements SavingsAccountI
return savingsAccountData.getSavingsAccountTransactionData();
}
private SavingsAccountTransactionData retrieveLastTransaction(@NotNull SavingsAccountData savingsAccountData) {
private SavingsAccountTransactionData retrieveLastTransaction(@NonNull SavingsAccountData savingsAccountData) {
List<SavingsAccountTransactionData> transactions = savingsAccountData.getSavingsAccountTransactionData();
if (transactions == null || transactions.isEmpty()) {
return savingsAccountData.getLastSavingsAccountTransaction(); // what is this?
@@ -22,7 +22,6 @@ import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsCons
import static org.apache.fineract.portfolio.savings.SavingsApiConstants.SAVINGS_ACCOUNT_RESOURCE_NAME;
import com.google.gson.JsonObject;
import jakarta.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -50,13 +49,14 @@ import org.apache.fineract.portfolio.search.data.ColumnFilterData;
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.jetbrains.annotations.Nullable;
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)
@@ -72,8 +72,8 @@ public class SavingsAccountTransactionsSearchServiceImpl implements SavingsAccou
private final SearchUtil searchUtil;
@Override
public Page<SavingsAccountTransactionData> searchTransactions(@NotNull Long savingsId,
@NotNull TransactionSearchRequest searchParameters) {
public Page<SavingsAccountTransactionData> searchTransactions(@NonNull Long savingsId,
@NonNull TransactionSearchRequest searchParameters) {
context.authenticatedUser().validateHasReadPermission(SAVINGS_ACCOUNT_RESOURCE_NAME);
String apptable = EntityTables.SAVINGS_TRANSACTION.getApptableName();
@@ -130,8 +130,8 @@ public class SavingsAccountTransactionsSearchServiceImpl implements SavingsAccou
return PageableExecutionUtils.getPage(results, pageable, () -> totalElements);
}
private static void addFromToFilter(@NotNull String column, String fromValue, String toValue,
@NotNull List<ColumnFilterData> columnFilters) {
private static void addFromToFilter(@NonNull String column, String fromValue, String toValue,
@NonNull List<ColumnFilterData> columnFilters) {
if (fromValue != null) {
columnFilters.add(toValue == null ? ColumnFilterData.create(column, SqlOperator.GTE, fromValue)
: ColumnFilterData.btw(column, fromValue, toValue));
@@ -141,7 +141,7 @@ public class SavingsAccountTransactionsSearchServiceImpl implements SavingsAccou
}
@Nullable
private static Boolean addTransactionTypesFilter(@NotNull TransactionSearchRequest searchParameters,
private static Boolean addTransactionTypesFilter(@NonNull TransactionSearchRequest searchParameters,
List<ColumnFilterData> columnFilters) {
Predicate<SavingsAccountTransactionType> filter = null;
Boolean credit = searchParameters.getCredit();
@@ -178,7 +178,7 @@ public class SavingsAccountTransactionsSearchServiceImpl implements SavingsAccou
}
@Override
public Page<JsonObject> queryAdvanced(@NotNull Long savingsId, @NotNull PagedLocalRequest<AdvancedQueryRequest> pagedRequest) {
public Page<JsonObject> queryAdvanced(@NonNull Long savingsId, @NonNull PagedLocalRequest<AdvancedQueryRequest> pagedRequest) {
context.authenticatedUser().validateHasReadPermission(SAVINGS_ACCOUNT_RESOURCE_NAME);
String apptable = EntityTables.SAVINGS_TRANSACTION.getApptableName();