Guia de Referência de Transformação JDT AST para Java JET2

Este documento descreve os elementos e a estrutura de transformação de JET2 para a geração de código Java a partir de um JDT AST. Ele será especialmente valioso para desenvolvedores interessados em usar esta transformação para gerar código Java a partir de um JDT AST.

Transformação de JDT para código JET2

Transformação de JDT para código JET2 é a transformação de mais alto nível.

Transformação de JDT para código JET2
Identificador com.ibm.xtools.transform.java.jet2templates
Origem java.util.Map (um mapeamento entre org.eclipse.jdt.core.IJavaProject e uma Coleção de elementos do org.eclipse.jdt.core.dom.CompilationUnit daquele projeto )
Gera Arquivos Java de cada CompilationUnit no projeto correspondente

A transformação espera um Map<IJavaProject,Collection<CompilationUnit>> como o elemento raiz.Ela então processa a coleta para cada projeto e gera os arquivos de origem correspondentes no projeto correspondente. Os elementos CompilationUnit devem conter todas as informações necessárias, ou seja, Declarações do Pacote, Declarações de Importação etc

modelInspectors

A transformação usa a extensão org.eclipse.jet.modelInspectors para cruzar o JDT AST nos modelos JET. Um inspetor é um objeto que adapta objetos ao modelo de informações do XPath. Cada Inspetor define os tipos de objetos que ele é capaz de adaptar e somente esses objetos são entregues. Há um inspetor para cada ASTNode que responde as consultas do XPath para o ASTNode. Esses inspetores são implementados no plug-in com.ibm.xtools.transform.java.jet2

Extensibilidade

A transformação fornece o ponto de extensão com.ibm.xtools.transform.java.jet2.IJavaJET2ListenerProvider que permite que as transformações chamadas executem ações customizadas durante a execução da transformação. IJavaJET2ListenerProvider é uma interface que permite que os clientes registrem os listeners com a transformação do Java JET2 para cada ASTNode, bem como org.eclipse.jet.IWriterListener para cada arquivo gravado. A estrutura do ponto de extensão está descrita abaixo

Extensão IJavaJET2ListenerProvider
Identificador com.ibm.xtools.transform.java.jet2.IJavaJET2ListenerProvider
Elemento JavaJET2ListenerProvider
atributo classe
implementações com.ibm.xtools.transform.java.jet2.listeners.IJavaJET2ListenerProvider

A interface IJavaJET2ListenerProvider é definida conforme a seguir

public interface IJavaJET2ListenerProvider {
    public IJavaJET2Listener getJavaJET2Listener(String activityId);
    public IWriterListener getWriterListener(String activityId);
}

IJavaJET2Listener é um listener no nível do nó que é chamado antes e depois que cada ASTNode é processado enquanto o IWriterListener é um listener no nível do arquivo que é chamado antes e depois que cada arquivo é confirmado. Os contribuidores podem fornecer listeners somente para activityIds específicos nos quais estão interessados. O ActivityId é um identificador que pode ser especificado pelos clientes da transformação do Java JET2 e um contribuidor pode oferecer listeners para qualquer activityId permitindo, com isso, que o contribuidor extenda qualquer transformação que invoca a transformação do Java JET2. A interface IJavaJET2Listener está definida conforme abaixo

public interface IJavaJET2Listener {
    public void preVisit (ASTNode node, JET2Writer writer);
    public void postVisit(ASTNode node, JET2Writer writer);
}

Gravação incremental

<TBD>

Formatação de código

<TBD>