ique aqui para ler esse artigo em PDF.
Automação com XDoclet
Livre-se da codificação repetitiva
Retirar do programador a tarefa entediante de criar código repetitivo, adicionando mais significado e poder ao código escrito é o objetivo do XDoclet
Diversas áreas de programação em Java têm uma característica bem distinta: o uso de código baseado em modelos ou templates – aquelas classes que você sempre acaba copiando de um exemplo, ou cria baseando-se em padrões de projeto bem conhecidos. À medida que um projeto cresce, a criação dessas classes se torna apenas trabalho repetitivo. Esse é o cenário ideal para a aplicação do uma ferramenta de geração de código como o XDoclet.
Origens
Visando livrar o programador do trabalho repetitivo no desenvolvimento de EJB’s, Rickard Öberg criou uma ferramenta chamada ejbdoclet, que gerava interfaces de componentes e seus deployment descriptors. O ejbdoclet ganhou força e, com a idéia de levar a geração automática de código a outras áreas da programação, nasceu o XDoclet.
Hoje, Öberg não participa mais do desenvolvimento da ferramenta, mas o projeto atraiu um grupo de programadores ao redor do mundo, tornando a equipe do projeto verdadeiramente internacional. O XDoclet conta atualmente com desenvolvedores na Alemanha, França, Noruega, Rússia, Brasil e Estados Unidos, entre vários outros países.
@tags: metadados para seu código
Informações são fornecidas ao XDoclet através da marcação do código fonte com tags semelhantes às usadas para gerar documentação usando a ferramenta javadoc. As tags adicionam metadados ao código existente – são esses metadados a fonte de informação para a geração de arquivos pelo XDoclet.
Com o XDoclet, você passa a ver os comentários de seu código com outros olhos. Eles passam a complementar o significado dos programas, expressando coisas que a linguagem Java não consegue expressar, como as relações entre as várias partes de um EJB: as interfaces, a classe de implementação e os deployment descriptors. A principal vantagem de um modelo como esse é a centralização da informação. Tudo o que você precisa saber sobre um componente fica em um único local: a classe de implementação do componente.
Algumas das principais tags do XDoclet usada na programação de EJBs são:
· @ejb.bean – fornece informações gerais sobre um componente EJB, como o tipo de componente, seu nome, localização no JNDI, tipos de interface (local ou remota) e chave primária;
· @ejb.finder – define métodos de pesquisa (finders) para um entity bean;
· @ejb.persistence – define parâmetros de persistência para um entity bean, como o nome da tabela em que o bean é persistido, ou o nome da coluna em que cada propriedade é persistida.
Arquitetura
No coração do XDoclet, está o template engine (mecanismo de templates), responsável pela interpretação dos templates (modelos de código), usados como base para a geração dos arquivos. Os templates são escritos numa sintaxe particular ao XDoclet e fazem uso dos tag handlers (manipuladores de tags), classes que fornecem os dados necessários para os templates. Ligado aos tag handlers está o xjavadoc, um analisador de código Java responsável por fornecer aos tag handlers informações sobre as tags utilizadas na marcação do código fonte.
Figura 1. Arquitetura e fluxo do XDoclet
A execução de um template do XDoclet segue este fluxo: o engine carrega um template, identifica os tag handlers utilizados nele e executa os tag handlers à medida que prossegue analisando o template. Os handlers fazem uso do xjavadoc para obter as informações necessárias (as @tags) e geram o resultado final. Veja a Figura 1.
A arquitetura do XDoclet torna-o bastante flexível. Se você precisar modificar a forma como é gerado algum elemento, basta modificar o template usado para gerá-lo; se você quiser que o XDoclet gere novos elementos, basta escrever mais um template e opcionalmente alguns tag handlers.
Instalação e uso
A URL direta para download do XDoclet é:
sourceforge.net/project/showfiles.php?group_id=31602.
Todas as versões já lançadas do XDoclet são listadas nesta página; baixe a mais recente (1.2.0 Beta 2, no momento de fechamento deste artigo), com o nome xdoclet-bin-<versão>.zip. O pacote contém diversos arquivos .jar, com as classes do XDoclet e todos os seus módulos. Descompacte os arquivos em algum diretório do seu computador e tome nota dele.
O XDoclet é executado como uma tarefa (task) do Ant. Para executá-lo, você precisará escrever um arquivo de build do Ant (buildfile) que chama as funcionalidades do XDoclet. Se você não sabe como usar o Ant, recomendo uma leitura do artigo "Builds com Ant" (Edição 2).
O diretório onde foi feita a descompactação será usado para construir o classpath de execução do XDoclet no buildfile. Para o exemplo a seguir, vamos supor que você descompactou o zip no diretório c:\xdoclet.
Exemplo: EJB a partir de uma classe
Vamos montar um exemplo simples: escrever a classe de um EJB incluindo as tags do XDoclet, executar a ferramenta e compilar o projeto. Note que é importante entender um pouco sobre EJB para acompanhar esse exemplo. Um exemplo mais extenso está disponível para download no site da Revista, mostrando mais recursos do XDoclet.
A Listagem 1 mostra o código fonte de um EJB marcado com tags do XDoclet. É um entity bean CMP chamado “Produto”, com apenas duas propriedades.