Fixed NPE.
diff --git a/api/src/test/java/io/mifos/portfolio/api/v1/domain/CommandTest.java b/api/src/test/java/io/mifos/portfolio/api/v1/domain/CommandTest.java
index 5e4430b..1372188 100644
--- a/api/src/test/java/io/mifos/portfolio/api/v1/domain/CommandTest.java
+++ b/api/src/test/java/io/mifos/portfolio/api/v1/domain/CommandTest.java
@@ -52,6 +52,9 @@
ret.add(new ValidationTestCase<Command>("validAccountAssignment")
.adjustment(x -> x.setOneTimeAccountAssignments(Collections.singletonList(new AccountAssignment(PROCESSING_FEE_ID, "7534"))))
.valid(true));
+ ret.add(new ValidationTestCase<Command>("nullAccountAssignment")
+ .adjustment(x -> x.setOneTimeAccountAssignments(null))
+ .valid(true));
return ret;
}
}
diff --git a/component-test/src/main/java/io/mifos/portfolio/TestCommands.java b/component-test/src/main/java/io/mifos/portfolio/TestCommands.java
index 08186c7..22b3b33 100644
--- a/component-test/src/main/java/io/mifos/portfolio/TestCommands.java
+++ b/component-test/src/main/java/io/mifos/portfolio/TestCommands.java
@@ -39,29 +39,29 @@
checkNextActionsCorrect(product.getIdentifier(), customerCase.getIdentifier(), Action.OPEN);
- checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.OPEN, Collections.emptyList(), OPEN_INDIVIDUALLOAN_CASE, Case.State.PENDING);
+ checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.OPEN, null, OPEN_INDIVIDUALLOAN_CASE, Case.State.PENDING);
checkNextActionsCorrect(product.getIdentifier(), customerCase.getIdentifier(), Action.APPROVE, Action.DENY);
- checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.APPROVE, Collections.emptyList(), APPROVE_INDIVIDUALLOAN_CASE, Case.State.APPROVED);
+ checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.APPROVE, null, APPROVE_INDIVIDUALLOAN_CASE, Case.State.APPROVED);
checkNextActionsCorrect(product.getIdentifier(), customerCase.getIdentifier(), Action.DISBURSE, Action.CLOSE);
- checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.DISBURSE, Collections.emptyList(), DISBURSE_INDIVIDUALLOAN_CASE, Case.State.ACTIVE);
+ checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.DISBURSE, null, DISBURSE_INDIVIDUALLOAN_CASE, Case.State.ACTIVE);
checkNextActionsCorrect(product.getIdentifier(), customerCase.getIdentifier(),
Action.APPLY_INTEREST, Action.MARK_LATE, Action.ACCEPT_PAYMENT, Action.DISBURSE, Action.WRITE_OFF, Action.CLOSE);
- checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.ACCEPT_PAYMENT, Collections.emptyList(), ACCEPT_PAYMENT_INDIVIDUALLOAN_CASE, Case.State.ACTIVE);
+ checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.ACCEPT_PAYMENT, null, ACCEPT_PAYMENT_INDIVIDUALLOAN_CASE, Case.State.ACTIVE);
checkNextActionsCorrect(product.getIdentifier(), customerCase.getIdentifier(),
Action.APPLY_INTEREST, Action.MARK_LATE, Action.ACCEPT_PAYMENT, Action.DISBURSE, Action.WRITE_OFF, Action.CLOSE);
- checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.ACCEPT_PAYMENT, Collections.emptyList(), ACCEPT_PAYMENT_INDIVIDUALLOAN_CASE, Case.State.ACTIVE);
+ checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.ACCEPT_PAYMENT, null, ACCEPT_PAYMENT_INDIVIDUALLOAN_CASE, Case.State.ACTIVE);
checkNextActionsCorrect(product.getIdentifier(), customerCase.getIdentifier(),
Action.APPLY_INTEREST, Action.MARK_LATE, Action.ACCEPT_PAYMENT, Action.DISBURSE, Action.WRITE_OFF, Action.CLOSE);
- checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.CLOSE, Collections.emptyList(), CLOSE_INDIVIDUALLOAN_CASE, Case.State.CLOSED);
+ checkStateTransfer(product.getIdentifier(), customerCase.getIdentifier(), Action.CLOSE, null, CLOSE_INDIVIDUALLOAN_CASE, Case.State.CLOSED);
checkNextActionsCorrect(product.getIdentifier(), customerCase.getIdentifier());
}
diff --git a/service/src/main/java/io/mifos/individuallending/internal/service/CostComponentService.java b/service/src/main/java/io/mifos/individuallending/internal/service/CostComponentService.java
index be997ee..1376692 100644
--- a/service/src/main/java/io/mifos/individuallending/internal/service/CostComponentService.java
+++ b/service/src/main/java/io/mifos/individuallending/internal/service/CostComponentService.java
@@ -32,6 +32,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Nullable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.ZoneId;
@@ -68,7 +69,7 @@
public DataContextOfAction checkedGetDataContext(
final String productIdentifier,
final String caseIdentifier,
- final List<AccountAssignment> oneTimeAccountAssignments) {
+ final @Nullable List<AccountAssignment> oneTimeAccountAssignments) {
final ProductEntity product =
productRepository.findByIdentifier(productIdentifier)
diff --git a/service/src/main/java/io/mifos/individuallending/internal/service/DataContextOfAction.java b/service/src/main/java/io/mifos/individuallending/internal/service/DataContextOfAction.java
index 7687b3c..962efb2 100644
--- a/service/src/main/java/io/mifos/individuallending/internal/service/DataContextOfAction.java
+++ b/service/src/main/java/io/mifos/individuallending/internal/service/DataContextOfAction.java
@@ -20,6 +20,9 @@
import io.mifos.portfolio.service.internal.repository.CaseEntity;
import io.mifos.portfolio.service.internal.repository.ProductEntity;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.Collections;
import java.util.List;
/**
@@ -31,29 +34,29 @@
private final CaseParameters caseParameters;
private final List<AccountAssignment> oneTimeAccountAssignments;
- DataContextOfAction(final ProductEntity product,
- final CaseEntity customerCase,
- final CaseParameters caseParameters,
- final List<AccountAssignment> oneTimeAccountAssignments) {
+ DataContextOfAction(final @Nonnull ProductEntity product,
+ final @Nonnull CaseEntity customerCase,
+ final @Nonnull CaseParameters caseParameters,
+ final @Nullable List<AccountAssignment> oneTimeAccountAssignments) {
this.product = product;
this.customerCase = customerCase;
this.caseParameters = caseParameters;
- this.oneTimeAccountAssignments = oneTimeAccountAssignments;
+ this.oneTimeAccountAssignments = oneTimeAccountAssignments == null ? Collections.emptyList() : oneTimeAccountAssignments;
}
- public ProductEntity getProduct() {
+ public @Nonnull ProductEntity getProduct() {
return product;
}
- public CaseEntity getCustomerCase() {
+ public @Nonnull CaseEntity getCustomerCase() {
return customerCase;
}
- public CaseParameters getCaseParameters() {
+ public @Nonnull CaseParameters getCaseParameters() {
return caseParameters;
}
- public List<AccountAssignment> getOneTimeAccountAssignments() {
+ public @Nonnull List<AccountAssignment> getOneTimeAccountAssignments() {
return oneTimeAccountAssignments;
}
}
diff --git a/service/src/main/java/io/mifos/individuallending/internal/service/DesignatorToAccountIdentifierMapper.java b/service/src/main/java/io/mifos/individuallending/internal/service/DesignatorToAccountIdentifierMapper.java
index e082f9b..5b2fb94 100644
--- a/service/src/main/java/io/mifos/individuallending/internal/service/DesignatorToAccountIdentifierMapper.java
+++ b/service/src/main/java/io/mifos/individuallending/internal/service/DesignatorToAccountIdentifierMapper.java
@@ -23,6 +23,7 @@
import io.mifos.portfolio.service.internal.repository.CaseAccountAssignmentEntity;
import io.mifos.portfolio.service.internal.repository.ProductAccountAssignmentEntity;
+import javax.annotation.Nonnull;
import java.util.List;
import java.util.Set;
import java.util.stream.Stream;
@@ -31,11 +32,11 @@
* @author Myrle Krantz
*/
public class DesignatorToAccountIdentifierMapper {
- private final Set<ProductAccountAssignmentEntity> productAccountAssignments;
- private final Set<CaseAccountAssignmentEntity> caseAccountAssignments;
- private final List<AccountAssignment> oneTimeAccountAssignments;
+ private final @Nonnull Set<ProductAccountAssignmentEntity> productAccountAssignments;
+ private final @Nonnull Set<CaseAccountAssignmentEntity> caseAccountAssignments;
+ private final @Nonnull List<AccountAssignment> oneTimeAccountAssignments;
- public DesignatorToAccountIdentifierMapper(final DataContextOfAction dataContextOfAction) {
+ public DesignatorToAccountIdentifierMapper(final @Nonnull DataContextOfAction dataContextOfAction) {
this.productAccountAssignments = dataContextOfAction.getProduct().getAccountAssignments();
this.caseAccountAssignments = dataContextOfAction.getCustomerCase().getAccountAssignments();
this.oneTimeAccountAssignments = dataContextOfAction.getOneTimeAccountAssignments();
@@ -50,7 +51,7 @@
productAccountAssignments.stream().map(ProductMapper::mapAccountAssignmentEntity));
}
- public String mapOrThrow(final String accountDesignator) {
+ public String mapOrThrow(final @Nonnull String accountDesignator) {
return allAccountAssignmentsAsStream()
.filter(x -> x.getDesignator().equals(accountDesignator))
.findFirst()
@@ -63,4 +64,4 @@
.filter(x -> !x.getDesignator().equals(AccountDesignators.ENTRY))
.filter(x -> (x.getAccountIdentifier() == null) && (x.getLedgerIdentifier() != null));
}
-}
+}
\ No newline at end of file