package ru.yandex.qatools.allure.data.plugins; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Main interface for all Allure report plugins. * * @author Dmitry Baev charlie@yandex-team.ru * Date: 09.02.15 */ public interface Plugin<T> { /** * Type of data needed to plugin */ Class<T> getType(); /** * Using this annotation you can specify the plugin name. This annotation * is required for all plugins. Plugin name should contains only latin characters * or numbers (but can't start with number). */ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @interface Name { String value(); } /** * Using this annotation you can specify plugin priority. Plugins with higher * priority will be processed first. */ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @interface Priority { int value(); } /** * This annotation helps you to specify fields with data for plugin. */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @interface Data { String value() default "##default"; } }