xapi.annotation.reflect.ReflectionAnnotation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xapi-dev Show documentation
Show all versions of xapi-dev Show documentation
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();
}