diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RulesController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RulesController.java index 5ab60c1ac..c2bbc3ffa 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RulesController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RulesController.java @@ -75,16 +75,27 @@ public class RulesController implements RulesResource { if (ruleEntityOptional.isPresent()) { RulesUpdateRequest rulesUpdateRequest = new RulesUpdateRequest(ruleEntityOptional.get().getValue(), rules.getRules()); try { - ResponseEntity mergedRules = ruleBuilderClient.mergeUserUpdateRules(rulesUpdateRequest); + ResponseEntity mergedRules = ruleBuilderClient.mergeUserUpdateRules(rulesUpdateRequest); + + if (mergedRules == null || mergedRules.getBody() == null) { + throw new BadRequestException("Failed to merge rules - received null response from service"); + } + if (mergedRules.getStatusCode().equals(HttpStatus.UNPROCESSABLE_ENTITY)) { - DroolsValidationResponse mergedRulesValidationResponse = ((RulesUploadResponse) mergedRules.getBody()).getDroolsValidationResponse(); + DroolsValidationResponse mergedRulesValidationResponse = mergedRules.getBody().getDroolsValidationResponse(); return new ResponseEntity<>(mergedRulesValidationResponse, !rules.isDryRun() ? HttpStatus.UNPROCESSABLE_ENTITY : HttpStatus.OK); } - mergedRulesString = ((RulesUploadResponse) mergedRules.getBody()).getRules(); + + mergedRulesString = mergedRules.getBody().getRules(); + if (mergedRulesString == null) { + throw new BadRequestException("Failed to merge rules - merged result is null"); + } + } catch (FeignException e) { if (e.status() == HttpStatus.BAD_REQUEST.value()) { throw new BadRequestException("The provided rule file is not a valid drools rule file!"); } + throw new BadRequestException("Failed to merge rules: " + e.getMessage()); } } if (!rules.isDryRun()) {