Валидация 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>

Я не знаю, нужно ли выполнять какие-либо дополнительные настройки или я неправильно определяю пользовательское ограничение.

Любая помощь будет оценена

0 ответов

Другие вопросы по тегам