Java-аннотация не применяет Java-аннотацию, которую я на ней установил - PullRequest
0 голосов
/ 13 октября 2018

У меня есть аннотация валидатора

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = ContentAndExtensionValidator.class)
public @interface WithContentAndExtension {

    ContentAndExtension[] contentAndExtensions() default{};

    String message() default "File is not valid";

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

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

По существу, валидатор будет принимать пары типа содержимого и расширения файла и проверять, допустим ли файл Multipart среди одной из этих пар.

Я мог бы использовать это так

 methodName( @WithContentAndExtension(
    contentAndExtensions = {
    @ContentAndExtension(contentType = "text/xml", fileExtension = ".xml"),
    @ContentAndExtension(contentType = "application/octet-stream", fileExtension = ".bundle")
    },
    message = "File is not a valid XML or doesn't have .bundle extension" ) MultipartFile file){
 //Method definition here 
}

Но, очевидно, это слишком многословно ... Было бы лучше, если бы я мог абстрагироваться с помощью другой аннотации.

@Target( ElementType.PARAMETER )
@WithContentAndExtension(
    contentAndExtensions = {
    @ContentAndExtension(contentType = "text/xml", fileExtension = ".xml"),
    @ContentAndExtension(contentType = "application/octet-stream", fileExtension = ".bundle")
    },
    message = "File is not a valid XML or doesn't have .bundle extension"
)
@Retention(RetentionPolicy.SOURCE)
@Documented
public @interface ValidBundleFile {
}

И используйте это вот так

methodName(@ValidBundleFile MultipartFile file){
  //Method implementation here 
}

У меня может быть нехватка понимания о том, как правильно абстрагировать детали, и я тоже гуглял и не могу их найти.Я ценю ваш совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...