Annotation Interface DataversePlugin


@Retention(SOURCE) @Target(TYPE) public @interface DataversePlugin
Marks a concrete plugin implementation class for metadata generation.

Plugin authors should place this annotation on every concrete plugin implementation class that is meant to be discovered and loaded by Dataverse.

Annotated classes are validated by the annotation processor and contribute generated compatibility metadata used during plugin loading.

Implementation rules:

  • the annotated type must be a public, non-abstract class,
  • it must implement exactly one base contract,
  • it may additionally implement any number of capability contracts.

A capability contract is never loadable on its own. A plugin implementing a capability must also implement the capability's required base contract. The base contract is the single hook the Dataverse core uses to discover and load your plugin.

Implementation Note:
Example where Exporter is a base contract and FooExporter a capability:

 @DataversePlugin
 public class MyBarExporter implements Exporter, FooExporter {
     // Your implementation goes here...
 }