В моем приложении 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;
}
}