Пользовательский ConstraintValidator в SpringBoot не запускается - PullRequest
0 голосов
/ 23 марта 2020

В моем приложении SpringBoot есть следующий код, сгенерированный OpenAPI.

В моем RestController у меня есть пользовательский ConstraintValidator @ValidIndexName для параметра пути indexName.

Почему ConstraintValidator IndexNameValidator код ниже не вызывается?

У меня в поме есть зависимость spring-boot-starter-validation.


@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2020-03-23T16:08:36.286420Z[Europe/London]")

@Validated
@Api(value = "Document", description = "the Document API")
public interface DocumentApi {

    @ApiOperation(value = "", nickname = "createDocument", notes = "", tags={ "Document", })
    @ApiResponses(value = { 
        @ApiResponse(code = 202, message = "Accepted") })
    @RequestMapping(value = "/docs/{indexName}/",
        consumes = { "application/json" },
        method = RequestMethod.POST)
    ResponseEntity<Void> _createDocument(@ApiParam(value = "Elasticsearch index name",required=true) @PathVariable("indexName") String indexName,@ApiParam(value = ""  )  @Valid @RequestBody Document document);


    @ApiOperation(value = "", nickname = "updateDocument", notes = "", tags={ "Document", })
    @ApiResponses(value = { 
        @ApiResponse(code = 202, message = "Accepted") })
    @RequestMapping(value = "/docs/{indexName}/",
        consumes = { "application/json" },
        method = RequestMethod.PUT)
    ResponseEntity<Void> _updateDocument(@ApiParam(value = "Elasticsearch index name",required=true) @PathVariable("indexName") String indexName,@ApiParam(value = ""  )  @Valid @RequestBody Document document);

}


@RestController
@Validated
public class DocumentApiImpl implements DocumentApi {
    @Override
    public ResponseEntity<Void> _createDocument(String indexName, Document document) {
        return createDocument(indexName, document);
    }

    public ResponseEntity<Void> createDocument(@ValidIndexName String indexName, Document document) {
        System.out.println("indexName = " + indexName);
        return new ResponseEntity<>(HttpStatus.ACCEPTED);
    }

    @Override
    public ResponseEntity<Void> _updateDocument(String indexName, Document document) {
        return createDocument(indexName, document);
    }

    public ResponseEntity<Void> updateDocument(@ValidIndexName String indexName, Document document) {
        System.out.println("indexName = " + indexName);
        return new ResponseEntity<>(HttpStatus.ACCEPTED);
    }
}

@Target( { PARAMETER })
@Retention(RUNTIME)
@Constraint(validatedBy = IndexNameValidator.class)
@Documented
public @interface ValidIndexName {

    String message() default "TenantId cannot be used as an index name.";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}
@Component
public class IndexNameValidator implements ConstraintValidator<ValidIndexName, String> {
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        System.out.println("Validating value = " + value);
        if (StringUtils.isEmpty(value)) {
            return false;
        }
        return true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...