Merge pull request #4 from myrlen/develop
Made enabled into product member variable to reduce calls.
diff --git a/api/src/main/java/io/mifos/portfolio/api/v1/client/PortfolioManager.java b/api/src/main/java/io/mifos/portfolio/api/v1/client/PortfolioManager.java
index 32576ed..f04545b 100644
--- a/api/src/main/java/io/mifos/portfolio/api/v1/client/PortfolioManager.java
+++ b/api/src/main/java/io/mifos/portfolio/api/v1/client/PortfolioManager.java
@@ -48,12 +48,13 @@
List<Pattern> getAllPatterns();
@RequestMapping(
- value = "/patterns/{patternpackage}/charges/",
- method = RequestMethod.GET,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/patterns/{patternpackage}/charges/",
+ method = RequestMethod.GET,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
- List<ChargeDefinition> getAllDefaultChargeDefinitionsForPattern(@PathVariable("patternpackage") final String patternPackage);
+ List<ChargeDefinition> getAllDefaultChargeDefinitionsForPattern(
+ @PathVariable("patternpackage") final String patternPackage);
@RequestMapping(
value = "/products/",
@@ -61,98 +62,104 @@
produces = MediaType.ALL_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
- ProductPage getProducts(@RequestParam(value = "includeDisabled", required = false) final Boolean includeDisabled,
- @RequestParam(value = "term", required = false) final String term,
- @RequestParam(value = "pageIndex") final Integer pageIndex,
- @RequestParam(value = "size") final Integer size,
- @RequestParam(value = "sortColumn", required = false) @ValidSortColumn(value = {"lastModifiedOn", "identifier", "name"}) final String sortColumn,
- @RequestParam(value = "sortDirection", required = false) @ValidSortDirection final String sortDirection);
+ ProductPage getProducts(
+ @RequestParam(value = "includeDisabled", required = false) final Boolean includeDisabled,
+ @RequestParam(value = "term", required = false) final String term,
+ @RequestParam(value = "pageIndex") final Integer pageIndex,
+ @RequestParam(value = "size") final Integer size,
+ @RequestParam(value = "sortColumn", required = false) @ValidSortColumn(value = {"lastModifiedOn", "identifier", "name"}) final String sortColumn,
+ @RequestParam(value = "sortDirection", required = false) @ValidSortDirection final String sortDirection);
@RequestMapping(
- value = "/products",
- method = RequestMethod.POST,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products",
+ method = RequestMethod.POST,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
@ThrowsException(status = HttpStatus.CONFLICT, exception = ProductAlreadyExistsException.class)
void createProduct(final Product product);
@RequestMapping(
- value = "/products/{productidentifier}",
- method = RequestMethod.GET,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE)
+ value = "/products/{productidentifier}",
+ method = RequestMethod.GET,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE)
Product getProduct(@PathVariable("productidentifier") final String productIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}",
- method = RequestMethod.PUT,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE)
+ value = "/products/{productidentifier}",
+ method = RequestMethod.PUT,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE)
@ThrowsException(status = HttpStatus.CONFLICT, exception = ProductInUseException.class)
- void changeProduct(@PathVariable("productidentifier") final String productIdentifier,
- final Product product);
+ void changeProduct(
+ @PathVariable("productidentifier") final String productIdentifier,
+ final Product product);
@RequestMapping(
- value = "/products/{productidentifier}",
- method = RequestMethod.DELETE,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}",
+ method = RequestMethod.DELETE,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
@ThrowsException(status = HttpStatus.CONFLICT, exception = ProductInUseException.class)
- void deleteProduct(@PathVariable("productidentifier") final String productIdentifier);
+ void deleteProduct(
+ @PathVariable("productidentifier") final String productIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/incompleteaccountassignments",
- method = RequestMethod.GET,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE)
- Set<AccountAssignment> getIncompleteAccountAssignments(@PathVariable("productidentifier") final String productIdentifier);
+ value = "/products/{productidentifier}/incompleteaccountassignments",
+ method = RequestMethod.GET,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE)
+ Set<AccountAssignment> getIncompleteAccountAssignments(
+ @PathVariable("productidentifier") final String productIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/enabled",
- method = RequestMethod.PUT,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE)
+ value = "/products/{productidentifier}/enabled",
+ method = RequestMethod.PUT,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE)
@ThrowsException(status = HttpStatus.CONFLICT, exception = ProductDefinitionIncomplete.class)
- void enableProduct(@PathVariable("productidentifier") final String productIdentifier,
- final Boolean enabled);
+ void enableProduct(
+ @PathVariable("productidentifier") final String productIdentifier,
+ final Boolean enabled);
@RequestMapping(
- value = "/products/{productidentifier}/enabled",
- method = RequestMethod.GET,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE)
+ value = "/products/{productidentifier}/enabled",
+ method = RequestMethod.GET,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE)
Boolean getProductEnabled(@PathVariable("productidentifier") final String productIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/tasks/",
- method = RequestMethod.GET,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/tasks/",
+ method = RequestMethod.GET,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
- List<TaskDefinition> getAllTaskDefinitionsForProduct(@PathVariable("productidentifier") final String productIdentifier);
+ List<TaskDefinition> getAllTaskDefinitionsForProduct(
+ @PathVariable("productidentifier") final String productIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/tasks/",
- method = RequestMethod.POST,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/tasks/",
+ method = RequestMethod.POST,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
@ThrowsException(status = HttpStatus.CONFLICT, exception = ProductInUseException.class)
void createTaskDefinition(
- @PathVariable("productidentifier") final String productIdentifier,
- final TaskDefinition taskDefinition);
+ @PathVariable("productidentifier") final String productIdentifier,
+ final TaskDefinition taskDefinition);
@RequestMapping(
- value = "/products/{productidentifier}/tasks/{taskidentifier}",
- method = RequestMethod.GET,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/tasks/{taskidentifier}",
+ method = RequestMethod.GET,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
TaskDefinition getTaskDefinition(
- @PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("taskidentifier") final String taskDefinitionIdentifier);
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("taskidentifier") final String taskDefinitionIdentifier);
@RequestMapping(
value = "/products/{productidentifier}/tasks/{taskidentifier}",
@@ -176,103 +183,109 @@
@PathVariable("taskidentifier") final String taskDefinitionIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/charges/",
- method = RequestMethod.GET,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/charges/",
+ method = RequestMethod.GET,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
- List<ChargeDefinition> getAllChargeDefinitionsForProduct(@PathVariable("productidentifier") final String productIdentifier);
+ List<ChargeDefinition> getAllChargeDefinitionsForProduct(
+ @PathVariable("productidentifier") final String productIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/charges/",
- method = RequestMethod.POST,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/charges/",
+ method = RequestMethod.POST,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
void createChargeDefinition(
- @PathVariable("productidentifier") final String productIdentifier,
- final ChargeDefinition taskDefinition);
+ @PathVariable("productidentifier") final String productIdentifier,
+ final ChargeDefinition taskDefinition);
@RequestMapping(
- value = "/products/{productidentifier}/charges/{chargedefinitionidentifier}",
- method = RequestMethod.GET,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/charges/{chargedefinitionidentifier}",
+ method = RequestMethod.GET,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
ChargeDefinition getChargeDefinition(
- @PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("chargedefinitionidentifier") final String chargeDefinitionIdentifier);
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("chargedefinitionidentifier") final String chargeDefinitionIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/charges/{chargedefinitionidentifier}",
- method = RequestMethod.PUT,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/charges/{chargedefinitionidentifier}",
+ method = RequestMethod.PUT,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
@ThrowsException(status = HttpStatus.CONFLICT, exception = ChargeDefinitionIsReadOnly.class)
void changeChargeDefinition(
- @PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("chargedefinitionidentifier") final String chargeDefinitionIdentifier,
- final ChargeDefinition chargeDefinition);
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("chargedefinitionidentifier") final String chargeDefinitionIdentifier,
+ final ChargeDefinition chargeDefinition);
@RequestMapping(
- value = "/products/{productidentifier}/charges/{chargedefinitionidentifier}",
- method = RequestMethod.DELETE,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/charges/{chargedefinitionidentifier}",
+ method = RequestMethod.DELETE,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
@ThrowsException(status = HttpStatus.CONFLICT, exception = ChargeDefinitionIsReadOnly.class)
void deleteChargeDefinition(
- @PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("chargedefinitionidentifier") final String chargeDefinitionIdentifier);
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("chargedefinitionidentifier") final String chargeDefinitionIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/cases/",
- method = RequestMethod.GET,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/cases/",
+ method = RequestMethod.GET,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
- CasePage getAllCasesForProduct(@PathVariable("productidentifier") final String productIdentifier,
- @RequestParam(value = "includeClosed", required = false) final Boolean includeClosed,
- @RequestParam("pageIndex") final Integer pageIndex,
- @RequestParam("size") final Integer size);
+ CasePage getAllCasesForProduct(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @RequestParam(value = "includeClosed", required = false) final Boolean includeClosed,
+ @RequestParam("pageIndex") final Integer pageIndex,
+ @RequestParam("size") final Integer size);
@RequestMapping(
- value = "/products/{productidentifier}/cases/",
- method = RequestMethod.POST,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/cases/",
+ method = RequestMethod.POST,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
@ThrowsException(status = HttpStatus.CONFLICT, exception = CaseAlreadyExistsException.class)
- void createCase(@PathVariable("productidentifier") final String productIdentifier,
- final Case caseInstance);
+ void createCase(
+ @PathVariable("productidentifier") final String productIdentifier,
+ final Case caseInstance);
@RequestMapping(
- value = "/products/{productidentifier}/cases/{caseidentifier}",
- method = RequestMethod.GET,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE)
- Case getCase(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier);
+ value = "/products/{productidentifier}/cases/{caseidentifier}",
+ method = RequestMethod.GET,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE)
+ Case getCase(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/cases/{caseidentifier}",
- method = RequestMethod.PUT,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/cases/{caseidentifier}",
+ method = RequestMethod.PUT,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
- void changeCase(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier,
- final Case caseInstance);
+ void changeCase(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier,
+ final Case caseInstance);
@RequestMapping(
- value = "/products/{productidentifier}/cases/{caseidentifier}/actions/",
- method = RequestMethod.GET,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/cases/{caseidentifier}/actions/",
+ method = RequestMethod.GET,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
- Set<String> getActionsForCase(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier);
+ Set<String> getActionsForCase(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier);
@RequestMapping(
@@ -281,11 +294,12 @@
produces = MediaType.ALL_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
- List<CostComponent> getCostComponentsForAction(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier,
- @PathVariable("actionidentifier") final String actionIdentifier,
- @RequestParam(value="touchingaccounts", required = false, defaultValue = "") final Set<String> forAccountDesignators,
- @RequestParam(value="forpaymentsize", required = false, defaultValue = "") final BigDecimal forPaymentSize);
+ List<CostComponent> getCostComponentsForAction(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier,
+ @PathVariable("actionidentifier") final String actionIdentifier,
+ @RequestParam(value="touchingaccounts", required = false, defaultValue = "") final Set<String> forAccountDesignators,
+ @RequestParam(value="forpaymentsize", required = false, defaultValue = "") final BigDecimal forPaymentSize);
@RequestMapping(
@@ -294,10 +308,11 @@
produces = MediaType.ALL_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
- List<CostComponent> getCostComponentsForAction(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier,
- @PathVariable("actionidentifier") final String actionIdentifier,
- @RequestParam(value="touchingaccounts", required = false, defaultValue = "") final Set<String> forAccountDesignators);
+ List<CostComponent> getCostComponentsForAction(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier,
+ @PathVariable("actionidentifier") final String actionIdentifier,
+ @RequestParam(value="touchingaccounts", required = false, defaultValue = "") final Set<String> forAccountDesignators);
@RequestMapping(
@@ -306,41 +321,45 @@
produces = MediaType.ALL_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
- List<CostComponent> getCostComponentsForAction(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier,
- @PathVariable("actionidentifier") final String actionIdentifier);
+ List<CostComponent> getCostComponentsForAction(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier,
+ @PathVariable("actionidentifier") final String actionIdentifier);
@RequestMapping(
- value = "/products/{productidentifier}/cases/{caseidentifier}/commands/{actionidentifier}",
- method = RequestMethod.POST,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/cases/{caseidentifier}/commands/{actionidentifier}",
+ method = RequestMethod.POST,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
@ThrowsException(status = HttpStatus.CONFLICT, exception = TaskOutstanding.class)
- void executeCaseCommand(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier,
- @PathVariable("actionidentifier") final String actionIdentifier,
- final Command command);
+ void executeCaseCommand(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier,
+ @PathVariable("actionidentifier") final String actionIdentifier,
+ final Command command);
@RequestMapping(
- value = "/products/{productidentifier}/cases/{caseidentifier}/tasks/",
- method = RequestMethod.GET,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/cases/{caseidentifier}/tasks/",
+ method = RequestMethod.GET,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
- List<TaskInstance> getAllTasksForCase(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier,
- @RequestParam(value = "includeExecuted", required = false) final Boolean includeExecuted);
+ List<TaskInstance> getAllTasksForCase(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier,
+ @RequestParam(value = "includeExecuted", required = false) final Boolean includeExecuted);
@RequestMapping(
- value = "/products/{productidentifier}/cases/{caseidentifier}/tasks/{taskidentifier}",
- method = RequestMethod.GET,
- produces = MediaType.APPLICATION_JSON_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/cases/{caseidentifier}/tasks/{taskidentifier}",
+ method = RequestMethod.GET,
+ produces = MediaType.APPLICATION_JSON_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
- TaskInstance getTaskForCase(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier,
- @PathVariable("taskidentifier") final String taskIdentifier);
+ TaskInstance getTaskForCase(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier,
+ @PathVariable("taskidentifier") final String taskIdentifier);
@RequestMapping(
value = "/products/{productidentifier}/cases/{caseidentifier}/tasks/{taskidentifier}",
@@ -348,31 +367,34 @@
produces = MediaType.ALL_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
- void changeTaskForCase(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier,
- @PathVariable("taskidentifier") final String taskIdentifier,
- final TaskInstance instance);
+ void changeTaskForCase(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier,
+ @PathVariable("taskidentifier") final String taskIdentifier,
+ final TaskInstance instance);
@RequestMapping(
- value = "/products/{productidentifier}/cases/{caseidentifier}/tasks/{taskidentifier}/executed",
- method = RequestMethod.PUT,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/products/{productidentifier}/cases/{caseidentifier}/tasks/{taskidentifier}/executed",
+ method = RequestMethod.PUT,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
@ThrowsException(status = HttpStatus.CONFLICT, exception = TaskExecutionBySameUserAsCaseCreation.class)
- void markTaskExecution(@PathVariable("productidentifier") final String productIdentifier,
- @PathVariable("caseidentifier") final String caseIdentifier,
- @PathVariable("taskidentifier") final String taskIdentifier,
- final Boolean executed);
+ void markTaskExecution(
+ @PathVariable("productidentifier") final String productIdentifier,
+ @PathVariable("caseidentifier") final String caseIdentifier,
+ @PathVariable("taskidentifier") final String taskIdentifier,
+ final Boolean executed);
@RequestMapping(
- value = "/cases/",
- method = RequestMethod.GET,
- produces = MediaType.ALL_VALUE,
- consumes = MediaType.APPLICATION_JSON_VALUE
+ value = "/cases/",
+ method = RequestMethod.GET,
+ produces = MediaType.ALL_VALUE,
+ consumes = MediaType.APPLICATION_JSON_VALUE
)
- CasePage getAllCases(@RequestParam("pageIndex") final Integer pageIndex,
- @RequestParam("size") final Integer size);
+ CasePage getAllCases(
+ @RequestParam("pageIndex") final Integer pageIndex,
+ @RequestParam("size") final Integer size);
//TODO: find a way to list cases by customer even though the portfolio contains products which may be associated with groups instead of customers.
}
diff --git a/api/src/main/java/io/mifos/portfolio/api/v1/domain/Product.java b/api/src/main/java/io/mifos/portfolio/api/v1/domain/Product.java
index 0e7274d..84d7fa4 100644
--- a/api/src/main/java/io/mifos/portfolio/api/v1/domain/Product.java
+++ b/api/src/main/java/io/mifos/portfolio/api/v1/domain/Product.java
@@ -68,6 +68,7 @@
private String createdBy;
private String lastModifiedOn;
private String lastModifiedBy;
+ private boolean enabled;
public Product() {
}
@@ -200,6 +201,14 @@
this.lastModifiedBy = lastModifiedBy;
}
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -227,22 +236,23 @@
@Override
public String toString() {
return "Product{" +
- "identifier='" + identifier + '\'' +
- ", name='" + name + '\'' +
- ", termRange=" + termRange +
- ", balanceRange=" + balanceRange +
- ", interestRange=" + interestRange +
- ", interestBasis=" + interestBasis +
- ", patternPackage='" + patternPackage + '\'' +
- ", description='" + description + '\'' +
- ", currencyCode='" + currencyCode + '\'' +
- ", minorCurrencyUnitDigits=" + minorCurrencyUnitDigits +
- ", accountAssignments=" + accountAssignments +
- ", parameters='" + parameters + '\'' +
- ", createdOn='" + createdOn + '\'' +
- ", createdBy='" + createdBy + '\'' +
- ", lastModifiedOn='" + lastModifiedOn + '\'' +
- ", lastModifiedBy='" + lastModifiedBy + '\'' +
- '}';
+ "identifier='" + identifier + '\'' +
+ ", name='" + name + '\'' +
+ ", termRange=" + termRange +
+ ", balanceRange=" + balanceRange +
+ ", interestRange=" + interestRange +
+ ", interestBasis=" + interestBasis +
+ ", patternPackage='" + patternPackage + '\'' +
+ ", description='" + description + '\'' +
+ ", currencyCode='" + currencyCode + '\'' +
+ ", minorCurrencyUnitDigits=" + minorCurrencyUnitDigits +
+ ", accountAssignments=" + accountAssignments +
+ ", parameters='" + parameters + '\'' +
+ ", createdOn='" + createdOn + '\'' +
+ ", createdBy='" + createdBy + '\'' +
+ ", lastModifiedOn='" + lastModifiedOn + '\'' +
+ ", lastModifiedBy='" + lastModifiedBy + '\'' +
+ ", enabled='" + enabled + '\'' +
+ '}';
}
}
diff --git a/component-test/src/main/java/io/mifos/portfolio/TestProducts.java b/component-test/src/main/java/io/mifos/portfolio/TestProducts.java
index 876d07a..cb52a9d 100644
--- a/component-test/src/main/java/io/mifos/portfolio/TestProducts.java
+++ b/component-test/src/main/java/io/mifos/portfolio/TestProducts.java
@@ -50,6 +50,7 @@
final Product productAsSaved = portfolioManager.getProduct(product.getIdentifier());
Assert.assertEquals(product, productAsSaved);
+ Assert.assertFalse(productAsSaved.isEnabled());
Assert.assertFalse(portfolioManager.getProductEnabled(product.getIdentifier()));
@@ -76,6 +77,9 @@
portfolioManager.enableProduct(product.getIdentifier(), true);
Assert.assertTrue(this.eventRecorder.wait(EventConstants.PUT_PRODUCT_ENABLE, product.getIdentifier()));
+ final Product productAfterEnable = portfolioManager.getProduct(product.getIdentifier());
+
+ Assert.assertTrue(productAfterEnable.isEnabled());
Assert.assertTrue(portfolioManager.getProductEnabled(product.getIdentifier()));
{
@@ -300,6 +304,13 @@
portfolioManager.deleteProduct("habberdash");
}
+ @Test(expected = IllegalArgumentException.class)
+ public void shouldFailToCreateProductDirectlyAsEnabled() throws InterruptedException {
+ final Product product = Fixture.createAdjustedProduct(x -> {});
+ product.setEnabled(true);
+ portfolioManager.createProduct(product);
+ }
+
@Test
public void shouldDeleteProduct() throws InterruptedException {
final Product product = createAndEnableProduct();
diff --git a/service/src/main/java/io/mifos/portfolio/service/internal/mapper/ProductMapper.java b/service/src/main/java/io/mifos/portfolio/service/internal/mapper/ProductMapper.java
index 4e470b3..fa9977a 100644
--- a/service/src/main/java/io/mifos/portfolio/service/internal/mapper/ProductMapper.java
+++ b/service/src/main/java/io/mifos/portfolio/service/internal/mapper/ProductMapper.java
@@ -57,6 +57,7 @@
product.setCreatedOn(DateConverter.toIsoString(productEntity.getCreatedOn()));
product.setLastModifiedBy(productEntity.getLastModifiedBy());
product.setLastModifiedOn(DateConverter.toIsoString(productEntity.getLastModifiedOn()));
+ product.setEnabled(productEntity.getEnabled());
return product;
}
diff --git a/service/src/main/java/io/mifos/portfolio/service/rest/ProductRestController.java b/service/src/main/java/io/mifos/portfolio/service/rest/ProductRestController.java
index ece7c71..27cad2f 100644
--- a/service/src/main/java/io/mifos/portfolio/service/rest/ProductRestController.java
+++ b/service/src/main/java/io/mifos/portfolio/service/rest/ProductRestController.java
@@ -109,7 +109,10 @@
throw ServiceException.badRequest("CreatedOn must be 'null' upon initial creation.");
if (instance.getLastModifiedOn() != null)
- throw ServiceException.badRequest("LastModifiedOn must 'null' be upon initial creation.");
+ throw ServiceException.badRequest("LastModifiedOn must be 'null' be upon initial creation.");
+
+ if (instance.isEnabled())
+ throw ServiceException.badRequest("Enabled must be 'false' be upon initial creation.");
this.commandGateway.process(new CreateProductCommand(instance));
return new ResponseEntity<>(HttpStatus.ACCEPTED);
@@ -146,6 +149,9 @@
if (caseService.existsByProductIdentifier(productIdentifier))
throw ServiceException.conflict("Cases exist for product with the identifier '" + productIdentifier + "'. Product cannot be changed.");
+ if (instance.isEnabled())
+ throw ServiceException.badRequest("Enabled must be 'false' be during editing.");
+
commandGateway.process(new ChangeProductCommand(instance));
return ResponseEntity.accepted().build();