Wie verwende ich einen benutzerdefinierten Validator mit dropwizard?

Ich habe eine REST-API von einer anderen Person geschrieben, in der die Methode, die die Anforderung an eine bestimmte URL verarbeitet, eine Reihe von Parametern akzeptiert, die aus Pfadparametern ausgefüllt werden.

@POST
@Path("/{classid}/{studentid}/details")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@SuppressWarnings("unchecked")


public Response processFile(@FormDataParam("sourceFile") InputStream aStream, @PathParam("classid") String classId, @PathParam("studentid")  String studentId, @Context HttpServletRequest httpRequest) {

// Code to do stuff and return a response
}

Die Person, die das geschrieben hat, hat DropWizard verwendet, und ich habe noch keine Erfahrung damit. Ich habe die Aufgabe, das studentId-Feld zu validieren, indem ich es mit den Werten in der Datenbank vergleiche. Dies wäre ziemlich einfach, aber mir wurde gesagt, dass ich es mit einem benutzerdefinierten Validator machen soll. Ich bin ziemlich neu im Schreiben von Anmerkungen, aber nachdem ich viel gegraben habe, habe ich eine Anmerkung wie diese geschrieben,

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = StudentIdValidator.StudentIdValidation.class)

public @interface StudentIdValidator {

    String message() default "{Invalid Id}";

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

      Class<? extends Payload>[] payload() default {};


      class StudentIdValidation implements ConstraintValidator<StudentIdValidator, String> {

        @Override
        public void initialize(StudentIdValidator constraintAnnotation) {
            System.out.println("Annotation initialize !!!!!!!!!");
        }


        @Override
        public boolean isValid(String value, ConstraintValidatorContext context)                                                                            {
                // TODO Auto-generated method stub
                System.out.println("Annotation called");
                return false;
            }
        }
    }

Nachdem habe ich die Annotation zu dem Feld hinzugefügt, auf dem ich die Validierung ausführen wollte,

public Response processFile(@FormDataParam("sourceFile") InputStream     aStream, @PathParam("classid") String classId, @StudentIdValidator     @PathParam("studentid")  String studentId, @Context HttpServletRequest     httpRequest)

Nun, das Problem ist, dass, wenn ich den Code starte / debugge ... dieser Validator nicht aufgerufen wird, ich auch keine Ahnung habe, wie man den Wert von studentId in der studentId-Validierungsklasse erhält. Also habe ich ein paar mehr ausgegraben und dies zur Anwendungsdatei hinzugefügt

class MyApplication extends Application<MyConfiguration> {
    ........

    @Override
   public void run(MyConfiguration myConfiguration, Environment                     currentEnvironment) {

     currentEnvironment.jersey().register(StudentIdValidator.class);

    }

Ich bin buchstäblich am Ende meines Verstandes. Jede Hilfe wird sehr geschätzt. Entschuldigung für die schlechte Formatierung.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage