ique aqui para ler esse artigo em PDF.imagem_pdf.jpg

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. ...

Quer ler esse conteúdo completo? Tenha acesso completo