特定のエンドポイントを「オフ」にしているかどうかを確認したいと思います。現在、ContainerRequestFilter を介して実装されています。しかし、コントローラー/リソースレベルでフィルターに直接フックすることはできないため (私が知る限り)、フィルターから例外をスローし、それをクライアントに返すことをお勧めします。スタック トレースの代わりに、フォーマットされた json エラー レスポンスを参照してください。
次の制約インターフェイスとクラスを実装しました。
@NotNull
@Target({METHOD, FIELD, ANNOTATION_TYPE, PARAMETER})
@Retention(RUNTIME)
@Constraint(validatedBy = MethodNotImplementedImpl.class)
@Documented
public @interface MethodNotImplemented {
String message() default "{Default message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
public class MethodNotImplementedImpl implements ConstraintValidator<MethodNotImplemented, UriInfo> {
public void initialize(MethodNotImplemented constraintAnnotation) {logger.debug("init called");}
public boolean isValid(UriInfo uriInfo, ConstraintValidatorContext constraintContext) {
logger.debug("validate called");
return true;
}
}
各 rest メソッドに制約を実行させたいのですが、制約が起動していません。
@Validated
@Path("/people")
public class PeopleController extends BaseController {
@GET
@Path("/{peopleId}")
@Produces(MediaType.APPLICATION_JSON)
public Response getPeople(@MethodNotImplemented @Context UriInfo uriInfo,
@PathParam("peopleId") String peopleId,
@DefaultValue("") @QueryParam("fields") String partialResponseFields) {
....
すべてが正常にコンパイルおよびデプロイされますが、エンドポイントが呼び出されたときに init または isValid メソッドが呼び出されていません。アプリの POJO に設定された他のメソッド レベルの制約があり、メソッドが呼び出されると自動的に起動します。私がやろうとしていることは可能ですか?もしそうなら、私は何を間違っていますか?