All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.vertx.codegen.annotations.ModuleGen Maven / Gradle / Ivy

There is a newer version: 3.6.3
Show newest version
package io.vertx.codegen.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Declares a Codegen module, all the processed elements contained in the annotated package
 * or one of its child package will be part of the same module. The identity of the module plays an
 * important role as it can be used by a runtime to load a module.

* * The {@link #name()} declares the name of the module: a non hierarchical name. Such name is used by * the JavaScript or Ruby language to generate modules for their runtime. The Java or Groovy runtime do * not use this info.

* * The {@link #groupPackage()} declares the group name of the module: the package of the group used * for generating the generated package names (for Groovy or RxJava generation).

* * * {@literal @ModuleGen}(name = "acme", groupPackage="com.acme") * package com.acme.myservice; * * * The group package must be a prefix of the annotated module package, it defines the naming of the generate * packages for the modules that belongs to the same group, in this case:

* *

    *
  • {@code com.acme.groovy...} for Groovy API
  • *
  • {@code com.acme.rxjava...} for RxJava API
  • *
*

* * For this particular `com.acme.myservice` module we have:

* *

    *
  • {@code com.acme.groovy.myservice} for Groovy API
  • *
  • {@code com.acme.rxjava.myservice} for RxJava API
  • *
* * @author Julien Viet */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PACKAGE) public @interface ModuleGen { /** * @return the module name */ String name(); /** * @return the module group package */ String groupPackage(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy