You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fineract.apache.org by "Michael Vorburger (Jira)" <ji...@apache.org> on 2020/10/20 17:17:00 UTC

[jira] [Created] (FINERACT-1229) Support mandatory API Resource operation parameters declaratively

Michael Vorburger created FINERACT-1229:
-------------------------------------------

             Summary: Support mandatory API Resource operation parameters declaratively
                 Key: FINERACT-1229
                 URL: https://issues.apache.org/jira/browse/FINERACT-1229
             Project: Apache Fineract
          Issue Type: Improvement
            Reporter: Michael Vorburger


While I was fixing FINERACT-1036 (see upcoming PR), and adding a manual non-null check ad hoc for that particular problem, it occurred to me that it would be much nicer if we could simply declare validation rules by annotation, such as "required" (not null) for parameters of API Resource methods, or even fields in data classes used as parameters types.

In an ideal world, I would expect this to then be picked up by both at runtime for validation, and by the Swagger Code Gen to dig what is a required in the JSON.

{{jakarta.validation.constraints.NotNull}} seems suitable, but I've tried adding that to the respective arguments ({{FormDataContentDisposition}} and {{FormDataBodyPart}})  of theĀ {{org.apache.fineract.infrastructure.documentmanagement.api.DocumentManagementApiResource.createDocument()}} method - but it didn't seem to do anything.

I'm guessing some Spring / JAX RS / Bean Validation integration magic would be required for this. I'm sure it exists, but haven't into it - someone could look into this some time under this issue. (For the short term in FINERACT-1036, I'm manually null checking, and throwing a {{jakarta.validation.ValidationException}} - but at least already contributing the {{ValidationExceptionExceptionMapper}} which can be re-used when we implement this.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)