Class RepeatedAnnotationPlugin

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, Plugin, Plugin.Factory, ElementMatcher<TypeDescription>

    @Enhance
    public class RepeatedAnnotationPlugin
    extends Plugin.ForElementMatcher
    implements Plugin.Factory
    A plugin that allows for adding a java.lang.annotation.Repeatable annotation even if compiled prior to Java 8 which introduces this annotation. As the annotation is not present on previous JVM versions, it is ignored at runtime for older JVM versions what makes this approach feasible.
    • Constructor Detail

      • RepeatedAnnotationPlugin

        public RepeatedAnnotationPlugin()
        Creates a new plugin for creating repeated annotations.
    • Method Detail

      • make

        public Plugin make()
        Returns a plugin that can be used for a transformation and which is subsequently closed.
        Specified by:
        make in interface Plugin.Factory
        Returns:
        The plugin to use for type transformations.
      • apply

        public DynamicType.Builder<?> apply​(DynamicType.Builder<?> builder,
                                            TypeDescription typeDescription,
                                            ClassFileLocator classFileLocator)
        Applies this plugin.
        Specified by:
        apply in interface Plugin
        Parameters:
        builder - The builder to use as a basis for the applied transformation.
        typeDescription - The type being transformed.
        classFileLocator - A class file locator that can locate other types in the scope of the project.
        Returns:
        The supplied builder with additional transformations registered.
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable