VRaptor - Pegar um @Component dinamicamente em um interceptor  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

No vraptor, como fazer para acessar dinamicamente no interceptor a implementação de um determinado @Compnent, sendo que em tempo de compilação não sei qual vai ser ele? Em suma, em runtime acesso determinadas annotations do método ou classe que está sendo executado, e ai preciso delegar a execução ao @Component correspondente.

O uso é mais ou menos assim:



AuthenticatedRule.class vai ser a classe que em runtime, no inteceptor, vou precisar da implementação. Ela está definida assim:



No código do interceptor, pego as annotations e eventualmente descubro que ele tem uma rule apontando para AuthenticatedRule.class (ou qualquer uma outra que tenha sido definida). Neste ponto preciso da instância (seja ela application, request, session scoped etc...).

Como fazer?

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

vc pode criar uma interface, receber essa interface no construtor e usar o .getClass do objeto que veio

--
Caelum
www.caelum.com.br

Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

No construtor de quem? Do interceptor? Mas isso implica em eu saber quais serão as interfaces que poderão chegar, o que eu não sei. A minha annotation @SecurityConstraint pode receber inúmeras implementações de AccessRule, e além disso qualquer outra pessoa pode extender o sistema para adicionar suas próprias rules.

Se fossem classes simples eu poderia instanciar via reflection, porém tais classes são @Component's do vraptor.

No vraptor 2 eu tinha resolvido isso acessando o application context do spring pelo interceptor, e ai eu só pedia o bean para ele, mas no vraptor 3 (ainda) não achei como fazer algo similar.

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

só receber a interface AccessRule no construtor do interceptor

ou vc pode receber Container no construtor e fazer um:


--
Caelum
www.caelum.com.br

Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

Receber no construtor não funcionaria por as rules (podem ser várias, não apenas uma) são especificadas na annotation @SecurityConstraint, e o interceptor é um genérico que pega as rules da annotation.

De qualquer maneira, creio que era a idéia de receber o Container (não sabia da existencia dele) é a solução que eu estava atrás.

Valeu.

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
wpivotto
Thread.start()

Membro desde: 04/01/2010 14:44:33
Mensagens: 34
Offline

Rafael Steil wrote:Receber no construtor não funcionaria por as rules (podem ser várias, não apenas uma) são especificadas na annotation @SecurityConstraint, e o interceptor é um genérico que pega as rules da annotation.

De qualquer maneira, creio que era a idéia de receber o Container (não sabia da existencia dele) é a solução que eu estava atrás.

Valeu.



Rafael você pode receber todas as implementações no construtor e simplesmente delegar a execução baseada na annotation:

Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

Olha que chigue, não sabia que funcionava esse monte de mágica!

Tks!

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team