ResponseEntity changeProductDefinition()

in service/src/main/java/org/apache/fineract/cn/deposit/service/rest/ProductDefinitionRestController.java [198:218]


  ResponseEntity<Void> changeProductDefinition(@PathVariable("identifier") final String identifier,
                                               @RequestBody @Valid ProductDefinition productDefinition) {
    if (!identifier.equals(productDefinition.getIdentifier())) {
      throw ServiceException.badRequest("Given product definition must match path {0}.", identifier);
    }

    final Optional<ProductDefinition> optionalProductDefinition = this.productDefinitionService.findProductDefinition(identifier);
    if (!optionalProductDefinition.isPresent()) {
      throw ServiceException.notFound("Product Definition {0} not found", identifier);
    } else {
      final ProductDefinition currentProductDefinition = optionalProductDefinition.get();
      if (!currentProductDefinition.getFlexible()
          && !currentProductDefinition.getInterest().equals(productDefinition.getInterest())) {
        throw ServiceException.badRequest("Interest of product {0} rate is not flexible.", productDefinition.getIdentifier());
      }
    }

    this.commandGateway.process(new UpdateProductDefinitionCommand(productDefinition));

    return ResponseEntity.accepted().build();
  }