vraptor-i18n

38 views
Skip to first unread message

Alberto Pida

unread,
Dec 14, 2015, 10:01:35 PM12/14/15
to caelum-...@googlegroups.com
Estou tentando colocar o plugin no meu projeto.
Depois de adicionar ao pom e startar o tomcat esta dando esse erro:

Caused by: java.lang.NoSuchMethodError: br.com.caelum.vraptor.http.route.PathAnnotationRoutesParser.<init>(Lbr/com/caelum/vraptor/http/route/Router;)V

at br.com.caelum.vraptor.i18n.routes.I18nRoutesParser.<init>(I18nRoutesParser.java:43)

at br.com.caelum.vraptor.i18n.routes.I18nRoutesParser.<init>(I18nRoutesParser.java:38)

at br.com.caelum.vraptor.i18n.routes.I18nRoutesParser$Proxy$_$$_WeldClientProxy.<init>(Unknown Source)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

at java.lang.Class.newInstance(Class.java:383)

at org.jboss.weld.security.NewInstanceAction.run(NewInstanceAction.java:33)

at java.security.AccessController.doPrivileged(Native Method)

at org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:282)

at org.jboss.weld.bean.proxy.ClientProxyFactory.create(ClientProxyFactory.java:111)

at org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:180)

at org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:170)

at org.jboss.weld.bean.proxy.ClientProxyProvider.access$100(ClientProxyProvider.java:45)

at org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.load(ClientProxyProvider.java:56)

at org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.load(ClientProxyProvider.java:52)

at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)

at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)

at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)

at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)

... 53 more



Procurei no historico do grupo, tinha um erro parecido mas era com o vraptor 3 e com a lib do guava.. Que não me ajudou muito.


Engraçado que estou me baseando pelo projeto mamute único projeto completo que conheço com vraptor e tudo que tento fazer sempre tenho problemas  ;/



Alberto Pida

unread,
Dec 15, 2015, 1:44:06 PM12/15/15
to caelum-...@googlegroups.com
Estava dando uma olhada no código do vraptor e do plugin vraptor-i18n e achei o problema o erro.
Na versão mais nova do vraptor, foi alterado alguns construtores e isso quebrou o vraptor-i18n.

Analisando aqui fiquei com uma dúvida, por que a classe br.com.caelum.vraptor.view.Linker não tem um construtor padrão sem argumentos?

Alberto Almeida

unread,
Dec 16, 2015, 12:33:42 PM12/16/15
to caelum-...@googlegroups.com
Abri uma issue la no repositorio do plugin..

Alberto Almeida

unread,
Dec 18, 2015, 8:49:30 AM12/18/15
to caelum-...@googlegroups.com
Baixei o código para tentar fazer a correção e enviar um pull request.

Adicionei aos construtores o parâmetro reflectionProvider que estava faltando.
Até aqui, tudo beleza, porém quando rodo os testes da classe I18nLinkToHandlerTest, sempre quebra..

Estou debugando aqui o teste shouldReturnWantedUrlDefault..

Na execução do método invoke(...), nessa parte:


method = new Mirror().on(obj.getClass()).reflect().method(methodName) .withArgs(Arrays.copyOf(types, length)); 


Esta retornando sempre null, dando exceção quando tenta retornar:


return new Mirror().on(obj).invoke().method(method).withArgs(args).toString(); 



java.lang.IllegalArgumentException: method cannot be null

at net.vidageek.mirror.invoke.MethodHandlerByMethod.<init>(MethodHandlerByMethod.java:35)

at net.vidageek.mirror.invoke.DefaultInvocationHandler.method(DefaultInvocationHandler.java:65)

at br.com.caelum.vraptor.i18n.routes.I18nLinkToHandlerTest.invoke(I18nLinkToHandlerTest.java:115)

at br.com.caelum.vraptor.i18n.routes.I18nLinkToHandlerTest.shouldReturnWantedUrlDefault(I18nLinkToHandlerTest.java:74)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)

at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)

at org.junit.runners.ParentRunner.run(ParentRunner.java:236)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)



Como disse na issue, não consegui entender bem a lógica desse teste.

Pra que serve a classe TestController e como esse metodo retorna uma uri? ;s


Se alguém puder dar uma ajuda, um caminho para eu seguir..


Obrigado.

 


Lucas Cavalcanti

unread,
Dec 19, 2015, 10:42:37 AM12/19/15
to caelum-vraptor

Olá,

Esse linkToHandler é a classe que implementa o ${linkTo[AlgumController].algumMetodo}, por isso que o teste simula uma invocação de método via reflection que retorna uma uri

Vc conseguiu isolar que parte ficou null?

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

Alberto Almeida

unread,
Dec 19, 2015, 11:48:42 AM12/19/15
to caelum-...@googlegroups.com
Oi Lucas,

Obrigado pelo retorno. 

Entendi, mas onde isso é usado no plugin? Quando usa ${t['alguma.chave']} é um exemplo? 

Quanto a isolar, no método invoke a parte que esta o for não esta alterando o valor da variável method. 
Então, quando chama return new Mirror().on(obj).invoke().method(method).withArgs(args).toString(); lança a exceção.. Era isso que queria saber? hehe

Alberto Almeida

unread,
Jan 5, 2016, 9:11:27 AM1/5/16
to caelum-...@googlegroups.com
Bom dia,

Andei pesquisando mas ainda não consegui resolver o problema.. Se alguém puder me ajudar.

Obrigado.

Guilherme Passero

unread,
Jan 11, 2016, 10:11:10 AM1/11/16
to caelum-vraptor
O problema é de incompatibilidade com a última versão do vraptor mesmo. A issue está aberta, estou esperando a solução também.

Guilherme Passero

unread,
Jan 11, 2016, 9:40:19 PM1/11/16
to caelum-vraptor
Liberei uma correção para esse problema. Agradeço se puder ajudar a testar. 

Alberto

unread,
Jan 12, 2016, 6:55:19 AM1/12/16
to caelum-...@googlegroups.com
Legal Guilherme, vou testar aqui.
Reply all
Reply to author
Forward
0 new messages