En este documento se describen los elementos y la estructura de la Transformación JET2 para generar código Java a partir de un JDT AST. Esta información resultará especialmente valiosa para los desarrolladores que esperan utilizar esta transformación para generar código Java a partir de un JDT AST.
La transformación de JDT en código JET2 es la transformación de nivel superior.
| Transformación de JDT en código JET2 |
|
La transformación espera una Map<IJavaProject,Collection<CompilationUnit>> como el elemento raíz. Luego procesa la colección para cada proyecto y genera los archivos de origen correspondientes en el proyecto correspondiente. Se espera que los elementos CompilationUnit contengan toda la información necesaria, es decir, Declaraciones de paquete, Declaraciones de importación, etcétera.
La transformación utiliza la extensión org.eclipse.jet.modelInspectors para recorrer el JDT AST en las plantillas JET. Un inspector es un objeto que adapta objetos al modelo de información XPath. Cada Inspector define los tipos de objetos que puede adaptar y solo se le entregan esos objetos. Hay un inspector para cada ASTNode que responde las consultas XPath para ese ASTNode. Estos inspectores están implementados en el plug-in com.ibm.xtools.transform.java.jet2
La transformación proporciona el punto de extensión com.ibm.xtools.transform.java.jet2.IJavaJET2ListenerProvider que permite a las transformaciones invocantes realizar acciones personalizadas durante la ejecución de la transformación. IJavaJET2ListenerProvider es una interfaz que permite a los clientes registrar escuchas con la transformación Java JET2 para cada ASTNode, además de org.eclipse.jet.IWriterListener para cada archivo en el que se escribe. A continuación se describe la estructura del punto de extensión
| Extensión IJavaJET2ListenerProvider |
|
La interfaz IJavaJET2ListenerProvider se define de la siguiente manera
| public interface IJavaJET2ListenerProvider { public IJavaJET2Listener getJavaJET2Listener(String activityId); public IWriterListener getWriterListener(String activityId); } |
IJavaJET2Listener es un escucha a nivel de nodo que se invoca antes y después de procesar cada ASTNode, mientras que IWriterListener es un escucha a nivel de archivo que se invoca antes y después de comprometer cada archivo. Los colaboradores pueden proporcionar escuchas solo para determinados activityIds en los que estén interesados. ActivityId es un identificador que pueden especificar los clientes de la transformación Java JET2 y un colaborador puede proporcionar escuchas para cualquier activityId, lo que permite al colaborador ampliar cualquier transformación que invoque la transformación Java JET2. La interfaz IJavaJET2Listener se define de la siguiente manera
| public interface IJavaJET2Listener { public void preVisit (ASTNode node, JET2Writer writer); public void postVisit(ASTNode node, JET2Writer writer); } |
<TBD>
<TBD>