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

xapi.annotation.reflect.ReflectionAnnotation Maven / Gradle / Ivy

Go to download

Everything needed to run a comprehensive dev environment. Just type X_ and pick a service from autocomplete; new dev modules will be added as they are built. The only dev service not included in the uber jar is xapi-dev-maven, as it includes all runtime dependencies of maven, adding ~4 seconds to build time, and 6 megabytes to the final output jar size (without xapi-dev-maven, it's ~1MB).

The newest version!
package xapi.annotation.reflect;

import java.lang.annotation.Annotation;

/**
 * The common structure of all @Keep____ Reflection annotations.
 * Currently {@link KeepConstructor}, {@link KeepMethod}
 * @author "James X. Nelson ([email protected])"
 *
 */
public interface ReflectionAnnotation extends Annotation{

  /**
   * DebugData to include.
   * @return "" (default) = no debug data / production mode
   * "anything" = keep this string, and print extra debug logging.
   */
  String debugData();

  /**
   * Whether or not to defer including reflected constructor
   * into a code split containing all reflection data.
   *
   * Implementations using xapi-gwt-inject won't need to worry as much,
   * the magic-method-injector will ensure code bloat is localized to call site
   * and trimmed
   *
   * @return true to force this code into async split.
   * Generator will throw exception if accessed outside of X_Reflect.async()
   */
  boolean loadAsync();

  /**
   * Used to allow package-level or type-level annotations to override children.
   *
   * Good for overriding default settings temporarily; setting debugData and
   * preventOverride on package-info.java will turn on debugging for that package.
   *
   * @return true, to prevent checking for more specific child types.
   *
   * Inheritance Hierarchy Is ->
   * package-info.java -> OuterClass -> OuterClass$InnerClass -> ...
   */
  boolean preventOverride();

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy