Валидация Wild Swarm Bean Проверка пользовательских ограничений не
Я пытаюсь реализовать веб-сервис REST, используя JAX-RS и Widlfly Swarm (версия 2017.4.0), используя JAX-RS Bean Validation. По умолчанию аннотации проверки bean-компонентов работают должным образом, но пользовательские ограничения, определенные аннотациями, похоже, игнорируются.
Моя (упрощенная) конечная точка REST выглядит так
@Path("/myservice")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_JSON })
public class MyEndPoint {
@POST
@Path("/data")
public Response data(@CheckDate String date) {
return Response.ok().build();
}
}
Аннотация для ограничения проверки выглядит так
@Retention(RUNTIME)
@Target({ FIELD, PARAMETER })
@Constraint(validatedBy = CheckDateValidator.class)
public @interface CheckDate {
String message() default "Bad date format";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Класс валидатора "CheckDateValidator"
public class CheckDateValidator implements ConstraintValidator<CheckDate, String> {
public static final String dateFormat = "YYYYMMDD";
@Override
public void initialize(CheckDate constraintAnnotation) {
int i = 0;
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return validate(value);
}
private boolean validate(String dateString) {
boolean valid = true;
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
sdf.setLenient(false);
try {
sdf.parse(dateString.trim());
} catch (ParseException e) {
valid = false;
}
return valid;
}
}
Замена аннотации @CheckDate на валидатор @Email по умолчанию
@Path("/myservice")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_JSON })
public class MyEndPoint {
@POST
@Path("/data")
public Response data(@EmailString date) {
return Response.ok().build();
}
}
Проверка формата электронной почты применяется, но с моим пользовательским ограничением @CheckDate проверка не применяется.
Я думаю, что я добавил необходимые зависимости фракций Wildfly Swarm в файл POM
<dependencies>
<!-- Java EE 7 dependency -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!-- WildFly Swarm Fractions -->
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>jaxrs-jaxb</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>datasources</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${version.h2}</version>
</dependency>
<dependency>
<groupId>ParmaAlgorithmDatamodel</groupId>
<artifactId>ParmaAlgorithmDatamodel</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.systelabsw</groupId>
<artifactId>Connectors</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>swagger</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>swagger-webapp</artifactId>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>jaxrs-validator</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>bean-validation</artifactId>
</dependency>
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>jaxrs-cdi</artifactId>
</dependency>
</dependencies>
Я не знаю, нужно ли выполнять какие-либо дополнительные настройки или я неправильно определяю пользовательское ограничение.
Любая помощь будет оценена