o result.include é um atalho pro request.setAttribute.
se fosse pra tratar esse caso, como vc faria? ${convenios} seria o que?
o result.include é um atalho pro request.setAttribute.
se fosse pra tratar esse caso, como vc faria? ${convenios} seria o que?
Então, são 2 convênios diferentes: um que eu recebo como parâmetro na requisição e outro que eu dou “include” no meu interceptor com o Vrator. O do include eu acho que teria que ser isso mesmo: um atalho pra setAttribute. Mas o que eu recebo na requisição era pra estar nos “parameters” do request. Eu acredito que o Vraptor esteja fazendo algum do tipo em algum momento:
Caso contrário, não vejo sentido de uma coisa influenciar na outra 
Se o Vraptor estiver fazendo isso, quando eu desse um “result.include” o Vraptor poderia verificar se já existe um atributo na requisição com o mesmo nome. Se sim, poderia lançar um warn no console, sei lá. Melhor ainda seria se ele descobrisse se o atributo que está na requisição foi colocado por ele mesmo ou não. Aí só lançaria o warn pros casos em que ele colocou o atributo lá.
O VRaptor só faz isso se der algum erro de validação… aí ele pega todos os parâmetros que foram mandados para o request e deixa como atributos.
Mas em requisições normais isso não acontece.
Se o result.include fizesse essa lógica, como seria possível sobrescrever um atributo do request? Ia ser bem estranho para a pessoa que incluiu explicitamente o atributo “x” no result e ele foi ignorado.
[quote=Lucas Cavalcanti]O VRaptor só faz isso se der algum erro de validação… aí ele pega todos os parâmetros que foram mandados para o request e deixa como atributos.
Mas em requisições normais isso não acontece.[/quote]
Pelo que eu vi aqui está fazendo mesmo sem erro de validação 
Acho que não expliquei direito: o warn não iria impedir a sobrescrita do atributo. Ele só iria avisar ao programador que foi sobrescrito pra pessoa ver se é isso mesmo que ela espera.
É que no meu caso, isso fez com que gerasse um erro “argument type mismatch”. Eu poderia demorar pra descobrir que o erro é que eu recebi uma variável por parâmetro com o mesmo nome que uma variável que eu dei include na mão. Na verdade nem entendi ainda porque isso gera um erro, mas enfim 
Você pode me falar o fluxo da requisição que está acontecendo o problema?
redirects, forwards, validações, etc.
Segue o debug do Vraptor:
12:35:01,032 DEBUG [VRaptor ] VRaptor received a new request
12:35:01,032 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
12:35:01,032 DEBUG [DefaultResourceTranslator] trying to access /cadastrar-medico
12:35:01,033 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: MedicoController.cadastrar(Medico, String, UploadedFile, List, List)]
12:35:01,033 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor HibernateInterceptor
12:35:01,033 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor
12:35:01,036 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor CommonsUploadMultipartInterceptor
12:35:01,036 INFO [CommonsUploadMultipartInterceptor] Request contains multipart data. Try to parse with commons-upload.
12:35:01,040 DEBUG [CommonsUploadMultipartInterceptor] Using repository C:\Users\Guto\AppData\Local\Temp for file upload
12:35:01,081 DEBUG [CommonsUploadMultipartInterceptor] Found 19 attributes in the multipart form submission. Parsing them.
12:35:01,081 DEBUG [CommonsUploadMultipartInterceptor] A file field was empty: foto
12:35:01,081 DEBUG [CommonsUploadMultipartInterceptor] medico is a field
12:35:01,082 DEBUG [CommonsUploadMultipartInterceptor] medico.nome is a field
12:35:01,082 DEBUG [CommonsUploadMultipartInterceptor] medico.cpf is a field
12:35:01,082 DEBUG [CommonsUploadMultipartInterceptor] medico.crm is a field
12:35:01,082 DEBUG [CommonsUploadMultipartInterceptor] medico.crm.numero is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] convenios is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] convenios is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] medico.endereco is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] medico.endereco.endereco is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] medico.endereco.cidade is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] medico.endereco.cidade.nome is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] medico.telefonePrincipal is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] medico.telefoneSecundario is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] medico.celular is a field
12:35:01,083 DEBUG [CommonsUploadMultipartInterceptor] medico.uri is a field
12:35:01,084 DEBUG [CommonsUploadMultipartInterceptor] medico.email is a field
12:35:01,084 DEBUG [CommonsUploadMultipartInterceptor] medico.senha is a field
12:35:01,084 DEBUG [CommonsUploadMultipartInterceptor] confirmarSenha is a field
12:35:01,090 DEBUG [VRaptorRequest ] Setting medico with []
12:35:01,090 DEBUG [VRaptorRequest ] Setting medico.nome with []
12:35:01,090 DEBUG [VRaptorRequest ] Setting medico.cpf with []
12:35:01,090 DEBUG [VRaptorRequest ] Setting medico.crm with []
12:35:01,090 DEBUG [VRaptorRequest ] Setting medico.crm.numero with []
12:35:01,090 DEBUG [VRaptorRequest ] Setting convenios with [3, 2]
12:35:01,090 DEBUG [VRaptorRequest ] Setting medico.endereco with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting medico.endereco.endereco with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting medico.endereco.cidade with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting medico.endereco.cidade.nome with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting medico.telefonePrincipal with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting medico.telefoneSecundario with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting medico.celular with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting medico.uri with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting medico.email with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting medico.senha with []
12:35:01,091 DEBUG [VRaptorRequest ] Setting confirmarSenha with []
12:35:01,091 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor
12:35:01,091 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor
12:35:01,091 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor DaoInterceptor
12:35:01,094 DEBUG [DefaultResult ] including attribute conveniosList: [Amil, Bradesco Saúde, Dix, Golden Cross, Unimed]
12:35:01,095 DEBUG [DefaultResult ] including attribute convenios: {Amil=false, Bradesco Saúde=false, Dix=false, Golden Cross=false, Unimed=false}
12:35:01,095 DEBUG [IogiParametersProvider] IogiParametersProvider is up
12:35:01,095 DEBUG [LazyInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor
12:35:01,095 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for MedicoController.cadastrar(Medico, String, UploadedFile, List, List) as [medico, confirmarSenha, foto, especialidades, convenios]
12:35:01,096 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for MedicoController.cadastrar(Medico, String, UploadedFile, List, List) as [medico, confirmarSenha, foto, especialidades, convenios]
12:35:01,097 DEBUG [IogiParametersProvider] getParametersFor() called with parameters Parameters(Parameter(medico.endereco.endereco -> ), Parameter(medico.endereco.cidade.nome -> ), Parameter(medico.crm.numero -> ), Parameter(medico.nome -> ), Parameter(medico.uri -> ), Parameter(medico.email -> ), Parameter(medico.telefoneSecundario -> ), Parameter(medico.endereco.cidade -> ), Parameter(medico.crm -> ), Parameter(medico.cpf -> ), Parameter(medico.telefonePrincipal -> ), Parameter(medico -> ), Parameter(medico.endereco -> ), Parameter(medico.celular -> ), Parameter(medico.senha -> ), Parameter(confirmarSenha -> ), Parameter(convenios -> 3), Parameter(convenios -> 2)) and targets [Target(name=medico, type=class br.com.metamorfosevirtual.models.Medico), Target(name=confirmarSenha, type=class java.lang.String), Target(name=foto, type=interface br.com.caelum.vraptor.interceptor.multipart.UploadedFile), Target(name=especialidades, type=interface java.util.List), Target(name=convenios, type=interface java.util.List)].
12:35:01,112 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: MedicoController.cadastrar(Medico, String, UploadedFile, List, List)] are [br.com.metamorfosevirtual.models.Medico@1f, null, null, null, {Amil=false, Bradesco Saúde=false, Dix=false, Golden Cross=false, Unimed=false}]
12:35:01,112 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
12:35:01,112 DEBUG [ExecuteMethodInterceptor] Invoking MedicoController.cadastrar(Medico, String, UploadedFile, List, List)
12:35:01,113 DEBUG [DefaultExceptionMapper] find for exception class java.lang.IllegalArgumentException
Jan 31, 2014 12:35:01 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [default] in context with path [/marque-agora] threw exception
br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: argument type mismatch
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:87)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:96)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.metamorfosevirtual.interceptors.DaoInterceptor.intercept(DaoInterceptor.java:35)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:138)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.metamorfosevirtual.interceptors.HibernateInterceptor.intercept(HibernateInterceptor.java:30)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:93)
at br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:82)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
... 50 more
Pelo que eu entendi, o problema é o seguinte: quando ele chama o DaoInterceptor, eu crio um atributo chamado “convenios”. Repara que tem 2 parâmetros que eu mandei com o nome “convenios”. O IOGI consegue lidar com eles e monta certinho os parâmetros (é uma lista de convênios). Depois ele diz que chama meu método: Invoking MedicoController.cadastrar(Medico, String, UploadedFile, List, List). Mas eu coloco um breakpoint na primeira linha do meu controller e não para lá. Ou seja, eu nem chego a validar nada. Acredito que o Vraptor esteja jogando os parâmetros do request na lista de atributos mesmo sem validação. Aí o conflito que dá é porque eu já tinha colocado um atributo “convenios” que era do tipo Map e ele tenta colocar um atributo “convenios” do tipo List. Aí dá “argument type mismatch”. Acho que é isso…
O VRaptor tem uma lógica que se ele achar um atributo do request com o nome do parâmetro e esse parâmetro for uma interface (List é uma interface), ele usa o atributo.
Por isso é que ele tá tentando colocar o atributo.
A solução mais simples é trocar o parametro de convenios pra outra coisa, como convenioList.
É o que eu fiz 
A thread ficou enorme e mistura vários casos. Deixe-me tentar entender o que você precisa:
Você tem um converter genérico que faz o load dos objetos no banco. Então se você passar cliente=5, o converter lê o cliente 5 do banco. E se você passar o cliente.nome, ele deveria ler o registro do banco, e depois popular o novo nome, correto?
Além disso, quando você está incluindo um cliente, você quer apenas passar cliente.nome, e o vraptor deve criar um cliente transient com o nome populado.
É isso mesmo?
Exato. Toda classe de modelo minha herda uma classe chamada Model. Eu fiz um converter pra essa classe model. Então se eu passar cliente=5 ele lê, na tabela de clientes, o registro que tem id 5.
Se eu passar “cliente=5” e “cliente.nome=Guto”, aí sim, eu espero que o Vraptor chame o meu conversor passando o valor 5 e depois que meu conversor retornasse um objeto o Vraptor populasse o campo nome do objeto retornado com o valor “Guto”.
Exatamente. Espero que o Vraptor crie um Cliente vazio e popule seu nome. E é justamente aí que está o problema. Se eu faço isso eu tomo um InvalidParameterException sem nem ao menos o fluxo de execução cair no meu converter.
Ah, só uma observação: eu to tendo muitos problemas com o converter do Vraptor. Não sei se esses problemas que eu to tendo é mais por ser um converter genérico, mas aconselharia uma olhada com cuidado no código que trata disso. So nessa thread eu abri 2 issues com o pedido do Lucas. E além dessas 2 issues, to vendo que o Vraptor não se comporta de uma forma muito padronizada com a presença ou ausência de um converter.
Me passe a versão do vraptor que você usa. E veja se você tem os jars IOGI ou OGNL no classpath.
Uso a versão 3.5.3.
Tenho o jar do IOGI, mas não tenho do OGNL. Era pra eu ter? Eu importei o blank-project. Tá do jeito que veio.
Na verdade você deve ter ou um ou outro. Vou montar aqui os cenários que você me descreveu e fazer alguns testes.
Abraço
Olá pessoal,
Estou tendo mais problemas com o converter. Quando eu tento criar uma lista de Models vazios e preenche-los, eu tomo um NullPointerException. É o mesmo que o NullPointer lá de trás, mas agora eu não to conseguindo contorná-lo.
Seguinte: eu quero receber por parâmetro uma lista de horários. Aí to fazendo assim:
View:
[code]$("#agenda td .horario").each(function(index) {
data[“horarios[” + index + “]”] = “”;
data[“horarios[” + index + “].diaSemana”] = dia;
data[“horarios[” + index + “].inicio”] = inicio;
data[“horarios[” + index + “].fim”] = fim;
});
$.post(url, data, function(data) {
…
}, “json”);[/code]
Controller:
public void agendaSemanal(List<Horario> horarios) {
...
}
Como posso fazer nesse caso?
PS: conseguiu criar os testes e reproduzir os erros?
Eu ainda não consegui ver essa questão com calma, mas não vejo muito bem essa questão de usar um converter para ler um objeto do banco de dados.
O converter serve para você fazer uma conversão String > Objeto. Vários frameworks usam assim, como por exemplo o JSF e o agora o JPA.
Penso que o ideal é você usar a anotação @Load dos plugins de JPA e do Hibernate. Se você não usa eles, você pode fazer um copy and paste das classes.
[quote=garcia-jj]Eu ainda não consegui ver essa questão com calma, mas não vejo muito bem essa questão de usar um converter para ler um objeto do banco de dados.
O converter serve para você fazer uma conversão String > Objeto. Vários frameworks usam assim, como por exemplo o JSF e o agora o JPA.[/quote]
Entendi. Pra dizer a verdade eu não tenho opinião formada sobre o assunto. A priori não me parece uma prática ruim 
Mas de qualquer forma isso não elimina os bugs do Vraptor. Eu poderia estar fazendo qualquer outra coisa dentro do meu Converter que os bugs continuariam existindo. Acredito que o pessoal não tenho muito esse problema por aí porque é raro eles criarem um converter pra uma superclasse. Geralmente eles criam pra classe final mesmo.
Eu uso o Hibernate sim, mas não tem essa annotation aqui. Num seria @Loader? Essa annotation carregaria meu model object automaticamente?
A anotação @Load é do plugin do vraptor. Existe tanto no plugin de JPA quanto no do Hibernate.
Claro, os bugs devem ser resolvidos. É só uma questão de juntarmos os cenários que geram os erros para poder ver como corrigir. Se você quiser nos ajudar, você pode fazer um pull request. Nos docs do vraptor tem um guia de como fazer.
Quanto ao conversor, normalmente conversores são usados quando você quer converter um tipo para o outro. Exemplo, na aplicação você usa o CPF formatado como 111.111.111-11 mas grava como numeric na base de dados. Sendo assim você faz um converter String > Long e vice versa. Para mim é novo ver um converter para fazer load. E como você, realmente não tenho uma opinião formada.
Tenta usar o @Load por enquanto, até conseguirmos simular os cenários e fazer uma correção. Se você tiver dúvidas no Load, pergunte-nos.
Abraço
Então, como falei com o Lucas, estou um pouco sem tempo agora agora. Mas assim que sobrar um tempinho eu crio os testes e faço um pull request. 
E se for tranquilo de resolve-los também.
Num próximo projeto vou usar o @Load. Mas no atual não tem como pois o projeto já está enorme. Ele foi todo projetado para usar o converter. Eu ficaria dias só pra fazer essa alteração. Aí eu acho que perde um pouco o sentido. Mas num próximo projeto tentar usar o @Load sim. E eu tiver dúvida, perturbo vocês mais um pouco =P
Mas enquanto isso, como eu poderia fazer pra resolver esse último problema. Nos casos anteriores o Lucas Cavalcanti indicou como contornar os bugs. Mas nesse caso, todas as dicas que ele deu não funcionaram. Será que tem algo que eu possa fazer pra contornar?
Cola o stacktrace em um pastebin, gist, ou cola aqui mesmo. Aí podemos ver certinho o que pode causar o erro.
br.com.caelum.vraptor.http.InvalidParameterException: Exception when trying to instantiate Target(name=agendaSemanal, type=interface java.util.List)
at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:96)
at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:98)
at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:88)
at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:81)
at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateOrAddError(IogiParametersProvider.java:80)
at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateParameters(IogiParametersProvider.java:73)
at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.getParametersFor(IogiParametersProvider.java:63)
at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:132)
at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:86)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.metamorfosevirtual.interceptors.DaoInterceptor.intercept(DaoInterceptor.java:35)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.metamorfosevirtual.interceptors.HibernateInterceptor.intercept(HibernateInterceptor.java:30)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:93)
at br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:82)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator$VRaptorTypeConverter.setPropertiesAfterConversions(VRaptorInstantiator.java:144)
at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator$VRaptorTypeConverter.instantiate(VRaptorInstantiator.java:135)
at br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20)
at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:86)
at br.com.caelum.iogi.collections.IndexedListInstantiator.instantiate(IndexedListInstantiator.java:34)
at br.com.caelum.iogi.collections.ListInstantiator.instantiate(ListInstantiator.java:25)
at br.com.caelum.iogi.collections.ListInstantiator.instantiate(ListInstantiator.java:10)
at br.com.caelum.vraptor.http.iogi.NullDecorator.instantiate(NullDecorator.java:39)
at br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20)
at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:86)
... 48 more