- All Implemented Interfaces:
- Processor
@SupportedAnnotationTypes(value="xapi.annotation.inject.*")
@SupportedSourceVersion(value=RELEASE_7)
public class InjectionAnnotationProcessor
extends AbstractProcessor
This is the annotation processor for our injection library.
It scans for our injection annotations and writes manifests to speed up injection.
default implementations go in META-INF/instances or META-INF/singletons.
Platform specific injection types go into META-INF/$type/instances, META-INF/$type/singletons.
It is included in the core api because it is run on the core api;
every jar built will include these manifests, whether they are used at runtime or not.
Gwt injection does not look at the manifests, and a bytecode enhancer is
in the works to further process jre environments, by replacing calls to X_Inject
with direct access of the injected type.
Final builds (bound to pre-deploy) can also be further enhanced,
by replacing all references to an injected interface with it's replacement type
(changing all class references, and changing invokeinterface to invokespecial).
This may be unnecessary once javac optimize=true after replacing the X_Inject call site.
- Author:
- "James X. Nelson (james@wetheinter.net)"