eu tenho uma fachada e preciso interceptar as chamadas à mesma para uma regra de negocio.
Aí lembrei do InvocationHandler. Gostaria de saber se é viável a implementação de um para interceptar estas chamadas, e como eu faria para “associar” à minha fachada(construtor) a classe que implementaria o invocation.
Gostaria de saber também, se eu tenho que necessáriamente ter uma interface que extenda InvocationHandler (e.g: IFachadaProxy), para depois ter uma outra classe que implemente essa interface(e.g: FachadaProxy) que irá sobrescrever o método invoke.
Se vc estiver usando um servidor de aplicação com suporte a AOP como Jboss, isso fica bastante fácil. No caso do Jboss, uma das opções é especificar o arquivo ejb-jar.xml. Segue um exemplo:
Helaine porque essa regra de negocio esta fora da fachada?
Eu acho viavel usar o InvocationHandler quando uma mesma regra é aplicada a todos os metodos da sua fachada, se não for aplicavel a todos os metodos voce vai ter que checar os metodos que estao sendo chamado para aplicar uma determinada regra e isso vai acabar com a orientação a objeto do seu código.
Eu estou usando o InvocationHandler para verificação de autorização o que é igual para todos os metodos dos objetos.
Caso vc queira usar vc deve ter:
Uma interface para sua fachada;
Sua fachada implementando essa interface;
Um objeto Implementado InvocationHandler para fazer seu filtro;
Criar o proxy usando o filtro;
E usar sua fachada através da interface.
Caramba bacana o artigo Thiago, dale IBM sempre com umas paradinhas bacanas já li sobre generic dao lá e tbem é muito bacana!
Em particular este foi muito legal pois eu ainda não tinha o visto e apesar dele ser bem antiguinho e ter sido tachado com o nivel introdutorio, é bacana ver que eu implementei uma visão que outras pessoas também acham legal!
Vou guada-lo na minha caixinha de provas para minhas teorias! Já que eu não tenho muita credibilidade heheeheh…
Para um programador enferrujado como eu isso serve até com estimulo.
o interessante é que eu primeiro aprendi sobre o proxy com o post que você tinha feito, e só depois descobri o artigo. Descobri sem querer no google enquanto pesquisava sobre validação e proxy. Eu também achei a solução do artigo muito similar a sua, e desde então guardo o link com muito carinho, hehe!