Última Atualização: 30 de Setembro de 2002 00:47 BRST
Gerador de Proxies
A idéia principal desse projeto era criar um mecanismo simples de gerar
proxies para objetos a serem compartilhados num GlobalSpace. Proxies são criados a partir de interfaces java, flexibilizando assim a implementação. O processo todo
divide-se em duas etapas:
- Configuração
- Um programa lê um arquivo .class contendo a interface java e mostra uma tela ao usuário. Lá, ele pode marcar quais metodos envolvem alteração do estado do objeto (ou seja, escrita)
- O usuário fornece o nome completo (com pacote) da classe da referência e o nome do arquivo xml onde ele quer que a configuração seja gravada
- Clica um botao e o programa gera o arquivo para ele
- Criação do arquivo-fonte
- Um outro programa lê os dois arquivos (.class e .xml) e gera um arquivo .java, que pode ser compilado com o resto do programa
O gerador de proxies, embora já funcional, é um ponto que permite grandes melhorias e avanços que podem agilizar muito a criação de proxies, um passo importante do desenvolvimento.
A classe gerada possui muitas semelhanças e algumas diferenças com relação à interface original:
- Os métodos private, protected, static não são traduzidos
- Métodos da classe de origem com a mesma assinatura de métodos existentes na classe br.shob.SharedReference recebem, na classe gerada, o nome original acrescido de "Proxy"
- Por exemplo, toString() vira toStringProxy()
- Todos os métodos podem lançar, além das exceções que o método de origem lança, uma exceção br.shob.ShmemException
Scripts
Para facilitar o uso, colocamos no subdiretório bin da distribuição 3 scripts, utilizados conforme as instruções a seguir:
- bin/configurator <class_file>
- Lê o arquivo class_file e gera um XML para ele
- bin/shobc<class_file> <xml_file>
- Gera um arquivo .java a partir dos parâmetros
- bin/build <class_file> <xml_file>
- Chama os dois scripts acima, assumindo que o arquivo XML gerado pelo configurator tera o nome fornecido pelo parametro
LOCALCLASSPATH
Classes adicionais que podem ser necessárias para carregar a classe envolvida devem estar no CLASSPATH ou na variável LOCALCLASSPATH no momento da execução do programa
JDOM
O compilador usa, para manipular os arquivos XML, o pacote JDOM,
disponivel gratuitamente.