Vraptor3 - Customizando o RoutesParser

4 respostas
G

Criei um componente baseado no RoutesParser padrão do vraptor. Esse meu CustomRoutesParser faz nada mais nada menos que hifenizar as rotas, ao invés de usar o camel-case padrão do vraptor3.

Pensei inicialmente em extender a ComponentRoutesParser e alterar o método registerRulesFor e getUriFor, porém ambos são privados.

Há uma possibilidade de tornar esses métodos com visibilidade protected ou há alguma outra forma de alterar parcialmente as rotas sem escrever o componente por completo?

4 Respostas

Lucas_Cavalcanti

a classe que vc tem que estender é a PathAnnotationRoutesParser… ela tem esses métodos protected:

protected String defaultUriFor(String controllerName, String methodName);

protected String extractControllerNameFrom(Class<?> type);

com eles vc consegue fazer o que vc quer

G

Lucas, criei a implementação porém ele nunca é chamado.

Achei estranho ter de estender a PathAnnotationRoutesParser, já que não uso @Path. Quando eu implemento a RoutesParser funciona.

A declaração da classe está assim:

@Component @ApplicationScoped public class CustomRoutesParser extends PathAnnotationRoutesParser { [...] }

G

Oops, falha minha. Como é application-scoped ele é carregado na inicialização :oops:

Lucas_Cavalcanti

se vc não usa a anotação @Path, implementa direto o RoutesParser… aí vc vai ter que fazer tudo do zero… mas vc pode se inspirar nas implementações existentes…

Criado 6 de fevereiro de 2010
Ultima resposta 11 de fev. de 2010
Respostas 4
Participantes 2