90 likes | 210 Views
Exploring Annotation-Based Programming through the APT and Mirror APIs. Tim Wagner, Senior Manager Gary Horen, Program Manager BEA Systems, Inc. http://www.bea.com. BOF-9161. Agenda. Why apt/mirror in Eclipse? Feature overview Technical details Future plans Q&A.
E N D
Exploring Annotation-Based Programming through the APT and Mirror APIs Tim Wagner, Senior Manager Gary Horen, Program Manager BEA Systems, Inc.http://www.bea.com BOF-9161
Agenda Why apt/mirror in Eclipse? Feature overview Technical details Future plans Q&A
Why apt/mirror in Eclipse? • Want high-fidelity IDE support for annotations… • …but don’t want to reinvent the wheel Wouldn’t it be great if existing apt processors could run inside Eclipse?
Feature Overview • Eclipse 3.1 plugin that… • Runs apt processors interactively inside Eclipse • Diagnostic integration “red squiggles” • Build integration (including problem view) • Generated types behave as you’d expect • APT factories can be loaded as plugins or jars • UI to configure APT options
Technical Details • Implementation of 1.5 JDK mirror APIs over the Eclipse type system (via wrappers) • Processors executed during compilation • Separate passes: reconcile (interactive) and build • Replicates apt semantics (fixed point iteration, “claim” model) • Factory discovery • Jars containing factories or Eclipse plugins • Preference UI supports enabling, ordering of jars
Future Plans • Support for enhanced IDE functionality • Content assist (code completion) in annotation values • Quick fix • Integration with property view • Type-specific editors • Propose new annotations/annotation values • Search and refactoring over annotation values • Wizards for creating annotation processor factories and plugins • Adopt JSR 269
Release Dates • Preview • Summer ’05 (i.e., soon!) • Branch of JDT 3.1, based on GA version (new component + minor JDT API enhancements) • Based on open source (yay!) apt/mirror interfaces in the 1.5 JDK • Eclipse Platform 3.2 • Summer ’06 • Standard part of JDT – will reach all Eclipse users • Ideally JSR 269-compliant APIs
DEMO • Sample apt processor running inside Eclipse