Pegando Instancia do método interceptado.  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
jingle
Virtual Machine Man

Membro desde: 04/10/2006 20:40:08
Mensagens: 642
Localização: Canoas/RS
Offline

Oi tem como eu pegar a instancia do método que estou interceptando?

só pra esclarecer melhor:

tenho interceptor normal


que esta interceptando um método que não é estático, gostaria de pegar esta instância.

This message was edited 1 time. Last update was at 20/05/2010 09:52:26

[Email] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6395
Online

resourceInstance é uma instancia do controller que está sendo interceptado
method.getMethod() é o método (java.reflect.Method) interceptado

--
Caelum
www.caelum.com.br

jingle
Virtual Machine Man

Membro desde: 04/10/2006 20:40:08
Mensagens: 642
Localização: Canoas/RS
Offline

Lucas Cavalcanti wrote:resourceInstance é uma instancia do controller que está sendo interceptado
method.getMethod() é o método (java.reflect.Method) interceptado



Estranho pois estou interceptando um método não estatico e o resourceInstance é nullo.
[Email] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6395
Online

não dá pra interceptar métodos estáticos...
métodos estáticos não são expostos como URIs...

a ordem de execução dos interceptors é essa:



isso é código do vraptor... vc pode criar essa mesma classe na sua aplicação, anotá-la com @Component e registrar seu interceptor na mão depois do instantiator (nesse caso seu interceptor tem que estar anotado com @Component, e não com @Intercepts)

vc pode me explicar por favor pq vc precisa da instância do controller, pra eu ver se tem uma solução melhor que essa por favor?

--
Caelum
www.caelum.com.br

jingle
Virtual Machine Man

Membro desde: 04/10/2006 20:40:08
Mensagens: 642
Localização: Canoas/RS
Offline

meu problema todo começou quando quis tratar os erro da aplicaçao:

queria remover os try catch das controller e colocalos em um interceptor, porém nos controller os meus métodos tem redirect diferente pra quando da o erro e para quando da sucesso:

exemplo



dai eu tinha pensado em criar uma superclasse com métodos que defini para onde vai ir em caso de falha e em caso de sucesso, e no interceptor eu obtinha esses valor e fazia o redirect...


mas me pareceu meio complexo de +++++ e estou já desistindo dessa abordagem.
[Email] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6395
Online

o garcia-jj fez algo do tipo já... ele até mandou uma feature request pra colocar isso no vraptor...


o que vc quer é algo genérico?
tipo: se der a ABCException vai pra XYZController.trataException();

ou vc quer algo que depende da lógica?

--
Caelum
www.caelum.com.br

jingle
Virtual Machine Man

Membro desde: 04/10/2006 20:40:08
Mensagens: 642
Localização: Canoas/RS
Offline

que eu queria era fazer algo +- assim no meu interceptor:


[Email] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6395
Online

vc acha que isso é suficiente?



daí o vraptor redirecionaria pra UmControlller.umaLogica() se desse a UmaException

--
Caelum
www.caelum.com.br

jingle
Virtual Machine Man

Membro desde: 04/10/2006 20:40:08
Mensagens: 642
Localização: Canoas/RS
Offline

Lucas Cavalcanti wrote:vc acha que isso é suficiente?



daí o vraptor redirecionaria pra UmControlller.umaLogica() se desse a UmaException


Exatamente!!! isso seria mais que suficiente. ainda mais se puder ter varios desse result.on (colocando classes de exception diferentes.)

This message was edited 1 time. Last update was at 20/05/2010 11:23:36

[Email] [MSN]
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

Lucas Cavalcanti wrote:o garcia-jj fez algo do tipo já... ele até mandou uma feature request pra colocar isso no vraptor...


Ahh, bem lembrado. Esse final de semana vou te mandar alguma coisa.

http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

Lucas, ví agora o comentário na issue. Até agora eu tinha implementando algo parecido com o seu exemplo:



Se por acaso ele cair nisso, o ExecuteMethodInterceptor pega a exception e joga em uma variável exception e joga para o destino indicado, de forma bem semelhante ao que é feito no Validation.onErrorUse.

Provavelmente eu faça um pull lá no meu fork no sábado.

http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6395
Online

ok, espero então =)

--
Caelum
www.caelum.com.br

garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

Para quem acompanha esse tópico, já há um esboço de como será o exception handler no meu fork: http://github.com/garcia-jj/vraptor/tree/exceptionhandler.

Tento em mente as exceptions FooException e BarException filhas de RuntimeException podemos fazer algo como:



E caso não houver declaração de tratamento de exception o vraptor estoura o erro 500 padrão. O mesmo acontece se você declarar, por exemplo, uma FooException e por acaso ocorrer uma NullPointerException, já que o exception handler testa apenas a exception declarada e suas filhas.

Nesse exemplo usei forwardTo, porém pode ser usado qualquer método de Results.*.



http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team