diff --git a/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts index bc7a4a75d..599ef8271 100644 --- a/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts @@ -6,7 +6,7 @@ plugins { jacoco } -val redactionServiceVersion by rootProject.extra { "4.199.0" } +val redactionServiceVersion by rootProject.extra { "4.246.0" } val pdftronRedactionServiceVersion by rootProject.extra { "4.48.0" } val redactionReportServiceVersion by rootProject.extra { "4.47.0" } val searchServiceVersion by rootProject.extra { "2.71.0" } 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 10d536713..4ac9c4026 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 @@ -7,6 +7,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import java.util.stream.Collectors; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; @@ -29,7 +30,9 @@ import com.iqser.red.service.persistence.service.v1.api.external.resource.RulesR import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.DroolsSyntaxValidationResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RuleSyntaxErrorMessage; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RuleSyntaxWarningMessage; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequestModel; @@ -57,18 +60,24 @@ public class RulesController implements RulesResource { public ResponseEntity upload(@RequestBody RulesUploadRequestModel rules) { RulesUploadRequest rulesUploadRequest = RulesUploadRequest.fromModel(rules); + DroolsSyntaxValidationResponse droolsSyntaxValidationResponse = DroolsSyntaxValidationResponse.builder() + .build(); try { DroolsSyntaxValidation droolsSyntaxValidation = rulesValidationService.validateRules(rulesUploadRequest.getRuleFileType(), rulesUploadRequest.getRules()); + var rulesSyntaxWarningMessages = droolsSyntaxValidation.getDroolsSyntaxDeprecatedWarnings() + .stream() + .map(warningMessage -> RuleSyntaxWarningMessage.builder().line(warningMessage.getLine()).column(warningMessage.getColumn()).message(warningMessage.getMessage()) + .build()) + .collect(Collectors.toList()); + droolsSyntaxValidationResponse.setRulesSyntaxWarningMessages(rulesSyntaxWarningMessages); if (!droolsSyntaxValidation.isCompiled()) { var rulesSyntaxErrorMessages = droolsSyntaxValidation.getDroolsSyntaxErrorMessages() .stream() - .map(errorMessage -> RuleSyntaxErrorMessage.builder() - .line(errorMessage.getLine()) - .column(errorMessage.getColumn()) - .message(errorMessage.getMessage()) + .map(errorMessage -> RuleSyntaxErrorMessage.builder().line(errorMessage.getLine()).column(errorMessage.getColumn()).message(errorMessage.getMessage()) .build()) .toList(); - return new ResponseEntity<>(rulesSyntaxErrorMessages, HttpStatus.BAD_REQUEST); + droolsSyntaxValidationResponse.setRulesSyntaxErrorMessages(rulesSyntaxErrorMessages); + return new ResponseEntity<>(droolsSyntaxValidationResponse, HttpStatus.BAD_REQUEST); } } catch (FeignException e) { if (e.status() == HttpStatus.BAD_REQUEST.value()) { @@ -84,7 +93,7 @@ public class RulesController implements RulesResource { .message(String.format("%s Rules have been updated", rulesUploadRequest.getRuleFileType())) .build()); - return ResponseEntity.ok().build(); + return ResponseEntity.ok(droolsSyntaxValidationResponse); } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/DroolsSyntaxValidationResponse.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/DroolsSyntaxValidationResponse.java new file mode 100644 index 000000000..e880d1673 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/DroolsSyntaxValidationResponse.java @@ -0,0 +1,25 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules; + +import java.util.LinkedList; +import java.util.List; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.FieldDefaults; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@FieldDefaults(level = AccessLevel.PRIVATE) +public class DroolsSyntaxValidationResponse { + + @Builder.Default + List rulesSyntaxErrorMessages = new LinkedList<>(); + @Builder.Default + List rulesSyntaxWarningMessages = new LinkedList<>(); + +} diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/RuleSyntaxWarningMessage.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/RuleSyntaxWarningMessage.java new file mode 100644 index 000000000..b0e797628 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/RuleSyntaxWarningMessage.java @@ -0,0 +1,26 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.FieldDefaults; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@FieldDefaults(level = AccessLevel.PRIVATE) +@Schema(description = "Object containing a drools syntax warning message, its line, and its column.") +public class RuleSyntaxWarningMessage { + + @Schema(description = "The Line where the warning occurred.") + Integer line; + @Schema(description = "The Column where the warning occurred.") + Integer column; + @Schema(description = "The warning message.") + String message; + +}