package org.hotswap.agent.annotation; import java.lang.annotation.*; /** * Plugin definition. * * @author Jiri Bubnik */ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Plugin { /** * A name of the plugin. This name is used to reference the plugin in code and configuration. It should not * contain any spaces and weird characters. * * @return A name of the plugin */ String name() default ""; /** * Any meaningful plugin description. */ String description() default ""; /** * Plugin group the plugin belongs to. Group is used to resolve fallback plugin * * @return the string */ String group() default ""; /** * If no other plugin matches and fallback is set to true, then use this plugin * @return */ boolean fallback() default false; /** * Version of target framework this framework was tested with. */ String[] testedVersions(); /** * Version of target framework this framework should work with. It is not possible to test every possible framework * version for all plugins. Because the plugin is usually hooked to a stable framework structure, it should * for all subversions of a major version. Indicate with this property expected versions. */ String[] expectedVersions() default {}; /** * Split plugin definition into multiple class files. Annotations @OnClassLoadEvent and @OnResourceFileEvent will be scanned on * supporting class in addition to pluginClass itself. */ Class<?>[] supportClass() default {}; }