Fiquei com uma dúvida de como o Vraptor processa a prioridade das rotas e também como ele “casa” o URI com determinada rota. Eu tenho uma action que possui a seguinte rota e assinatura:
@Get
@Path( { "/customer/",
"/customer/order-{order}/page-{page}/", "/customer/{letter}/order-{order}/page-{page}/",
"/customer/page-{page}/", "/customer/{letter}/page-{page}/"
})
void list(String letter, Paging paging, Order order);
Quando eu passo parametros que casem com /customer/page-{paging}/ o vraptor me passa o parametro {paging} sempre como null. Fiz um debug e notei isso nos logs:
FINE: trying to access /customer/page-10/
FINE: Setting paging with [10]
FINE: found resource [DefaultResourceMethod: CustomerController.listCustomerController.list(String, Paging, Order)]
Coloquei um breakpoint no converter e ele está sendo chamado tudo certo, inicializando new Paging(14), porém quando chega no método list o valor de paging está nulo. Essa action funcionava corretamente quando as rotas eram apenas /customer/, /customer/page-{page}/, /customer/{letter}/page-{page}/. Quando adicionei /customer/order-{order}/page-{page}/ e /customer/{letter}/order-{order}/page-{page}/ deu esse erro.
Enfim, como eu posso colocar as prioridades dessas rotas para que eu possa ter os parametros passados corretamente? Será que nessas minhas rotas estou confundindo o vraptor a ponto dele tentar injetar o order ao invés do page?