Annotation Type ComponentType


  • @Retention(RUNTIME)
    @Target(METHOD)
    @Incubating
    public @interface ComponentType
    Declares a custom ComponentSpec type. The following example demonstrates how to register a custom component type using a plugin with a ComponentType annotation. Furthermore the plugin creates an instance of SampleComponent named 'sampleComponent'.
     interface SampleComponent extends ComponentSpec {}
     class DefaultSampleComponent extends BaseComponentSpec implements SampleComponent {}
    
     apply plugin: MySamplePlugin
    
     class MySamplePlugin extends RuleSource {
         @ComponentType
         void register(TypeBuilder<SampleComponent> builder) {
             builder.defaultImplementation(DefaultSampleComponent)
         }
    
         @Mutate
         void createSampleLibraryComponents(ModelMap<SampleComponent> componentSpecs) {
             componentSpecs.create("sampleComponent")
         }
     }