MIFOSX-733: undo of disbural when sending no note parameter was causing null pointer. Fix ensures null pointer exception doesnt occur when checking for existence of a parameter when no request body exists.

This commit is contained in:
Keith Woodlock
2013-10-22 00:58:23 +01:00
parent d2079b8670
commit b830759622
2 changed files with 18 additions and 14 deletions
@@ -36,6 +36,7 @@ import com.google.gson.JsonPrimitive;
public class JsonParserHelper { public class JsonParserHelper {
public boolean parameterExists(final String parameterName, final JsonElement element) { public boolean parameterExists(final String parameterName, final JsonElement element) {
if (element == null) {return false;}
return element.getAsJsonObject().has(parameterName); return element.getAsJsonObject().has(parameterName);
} }
@@ -239,7 +239,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
if (!changes.isEmpty()) { if (!changes.isEmpty()) {
try { try {
this.loanRepository.saveAndFlush(loan); this.loanRepository.saveAndFlush(loan);
} catch (DataIntegrityViolationException e) { } catch (final DataIntegrityViolationException e) {
final Throwable realCause = e.getCause(); final Throwable realCause = e.getCause();
final List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>(); final List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("loan.transaction"); final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("loan.transaction");
@@ -362,7 +362,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
if (!changes.isEmpty()) { if (!changes.isEmpty()) {
try { try {
this.loanRepository.save(loan); this.loanRepository.save(loan);
} catch (DataIntegrityViolationException e) { } catch (final DataIntegrityViolationException e) {
final Throwable realCause = e.getCause(); final Throwable realCause = e.getCause();
final List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>(); final List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors) final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
@@ -399,10 +399,13 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
if (!changes.isEmpty()) { if (!changes.isEmpty()) {
this.loanRepository.saveAndFlush(loan); this.loanRepository.saveAndFlush(loan);
this.accountTransfersWritePlatformService.reverseAllTransactions(loanId, PortfolioAccountType.LOAN); this.accountTransfersWritePlatformService.reverseAllTransactions(loanId, PortfolioAccountType.LOAN);
final String noteText = command.stringValueOfParameterNamed("note"); String noteText = null;
if (StringUtils.isNotBlank(noteText)) { if (command.hasParameter("note")) {
final Note note = Note.loanNote(loan, noteText); noteText = command.stringValueOfParameterNamed("note");
this.noteRepository.save(note); if (StringUtils.isNotBlank(noteText)) {
final Note note = Note.loanNote(loan, noteText);
this.noteRepository.save(note);
}
} }
final MonetaryCurrency currency = loan.getCurrency(); final MonetaryCurrency currency = loan.getCurrency();
@@ -550,7 +553,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
***/ ***/
this.loanRepository.saveAndFlush(loan); this.loanRepository.saveAndFlush(loan);
if (changedTransactionDetail != null) { if (changedTransactionDetail != null) {
for (Map.Entry<Long, LoanTransaction> mapEntry : changedTransactionDetail.getNewTransactionMappings().entrySet()) { for (final Map.Entry<Long, LoanTransaction> mapEntry : changedTransactionDetail.getNewTransactionMappings().entrySet()) {
this.loanTransactionRepository.save(mapEntry.getValue()); this.loanTransactionRepository.save(mapEntry.getValue());
this.accountTransfersWritePlatformService.updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue()); this.accountTransfersWritePlatformService.updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue());
} }
@@ -627,7 +630,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
***/ ***/
this.loanRepository.saveAndFlush(loan); this.loanRepository.saveAndFlush(loan);
if (changedTransactionDetail != null) { if (changedTransactionDetail != null) {
for (Map.Entry<Long, LoanTransaction> mapEntry : changedTransactionDetail.getNewTransactionMappings().entrySet()) { for (final Map.Entry<Long, LoanTransaction> mapEntry : changedTransactionDetail.getNewTransactionMappings().entrySet()) {
this.loanTransactionRepository.save(mapEntry.getValue()); this.loanTransactionRepository.save(mapEntry.getValue());
this.accountTransfersWritePlatformService.updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue()); this.accountTransfersWritePlatformService.updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue());
} }
@@ -850,7 +853,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
***/ ***/
this.loanRepository.saveAndFlush(loan); this.loanRepository.saveAndFlush(loan);
if (changedTransactionDetail != null) { if (changedTransactionDetail != null) {
for (Map.Entry<Long, LoanTransaction> mapEntry : changedTransactionDetail.getNewTransactionMappings().entrySet()) { for (final Map.Entry<Long, LoanTransaction> mapEntry : changedTransactionDetail.getNewTransactionMappings().entrySet()) {
this.loanTransactionRepository.save(mapEntry.getValue()); this.loanTransactionRepository.save(mapEntry.getValue());
this.accountTransfersWritePlatformService.updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue()); this.accountTransfersWritePlatformService.updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue());
} }