VRaptor 3.4.0 lançado

Olá pessoal.

Depois de mais de 10 mil downloads da série 3.3.x, e 6 meses passados, temos um novo release com muitas novidades. Ele já está no repositório central do maven, basta atualizar para 3.4.0 ou baixar diretamente:
http://code.google.com/p/vraptor3/downloads/list

Agradecimentos ao Lucas Cavalcanti, WBotelhoS, David Paniz, Vinicius Oliveira, Otavio Garcia, Douglas Campos, Narciso Benigno, Roberto Nogueira, A.C de Souza e Rafael Viana pelos pushes, patches e commits no repositório. Foi a versão com a maior quantidade de contribuidores diferentes, mostrando o crescimento da comunidade.

Changelog http://vraptor.caelum.com.br/documentacao/changelog/

Highlights:

  • suporte a javassist para gerar proxies

  • novas formas de popular os parâmetros das lógicas:

    • via atributo de request (ex se algum interceptor adicionar esse parametro)
    • injeção de dependências (só pra interfaces)
  • plugin - @Load nos parâmetros das lógicas (…vraptor.util.hibernate.extra, e …vraptor.util.jpa.extra)

@Path("/entidade/{entidade.id}") //o id precisa estar preenchido no request
public void minhaLogica(@Load Entidade entidade) {
  //entidade já vem carregada do banco, pelo id, e se não existir retorna 404 automaticamente
  //isso desabilita população da entidade por outros parâmetros do request
}
  • plugin da integração com scala melhorado

  • bugfix - corrigido scan de classes no JBoss

*lazy 18n para validações:

validator.checking(new Validations() {{
   that(a == b, i18n("category"), "message.key", "params"); 
   // tanto category quanto message.key serão i18n na hora de mostrar a mensagem,
   // usando o resource bundle padrão (do Localization)
}});
  • Registro do converters do XStream automático. Basta anotar com @Component.

  • Refatoração dos XStream (de)serializers para usar um XStreamBuilder centralizado e estensível

  • linkTo para os jsps:

@Resource
public class ProdutoController {
  @Path("/produtos/{id}")
  public void carrega(Long id) {..}
}

jsp:

O fórum possui mais de 1500 tópicos com dúvidas, e não para de crescer:
http://guj.com.br/forums/show/23.java

Muito bom!
Parabéns aí galera que deixa o vraptor cada dia melhor.
Na minha opnião é O framework web quando falamos de java.

Parabéns pessoal da Caelum!!

Essa nova versão vai trazer uma redução incrível de código em nosso projeto!

Paulo, a apostila aberta da Caelum já está atualizada com essa nova versão? Achei bem interessante esse lance do @Load, mas não tô conseguindo encontrar nenhuma documentação sobre essa opção.

Nada como um novo release.

Para aqueles que não testavam seus resultados JSON agora é a hora de aproveitar o MockSerializationResult e testar.
Creio fazer um post sobre algumas formas legais de testar no VRaptor.

Menos uma linha no load cliche dos loadByID.

Agora nas NoResultException não precisa de um new MeuObjeto() só pra evitar passar null na serialização do XStream.

Parabéns à todos pelas melhorias.

ainda não foi atualizada. Pra usar o @Load vc precisa registrar o pacote do hibernate (ou da jpa) no web.xml, e anotar o parâmetro recebido com @Load.
precisa ter na requisição um parametro chamado nomeDaEntidade.id

Lucas, mas qual é a mágica que o framework faz pra carregar a entidade? Ele faz uma chamada ao find() de um EntityManager da vida, é isso?

exato

Então, se eu tiver uma lógica um pouco mais complexa na hora de instanciar o objeto recuperando (digamos, fazendo chamada a um serviço externo, precisando de determinadas dependências a serem injetadas etc.) não vou poder usar esse recurso, certo?

Ou existe a possibildade de se atribuir algum método de fábrica a ser chamado pelo @Load?

Parabéns pessoal!

VRaptor está na minha lista de estudos.
Quem usa fala muito bem! :slight_smile:

por enquanto é o mais simples possível, afinal é uma entidade, e o que a gente quer é carregá-la do banco simplesmente.

Mas a gente pode pensar num jeito de deixar isso extensível.
se estiver a fim de pensar nesse hack, essa é a classe:
https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/util/jpa/extra/ParameterLoaderInterceptor.java

=)

Lucas, contribuir como VRaptor é uma das coisas que está na minha “todo list” há um bom tempo. Vou dar uma olhada e, se puder, ajudo com essa parte. :slight_smile:

E mais uma vez, parabéns pelo excelente trabalho!

Parabéns pessoal do VRaptor… legal ver que a comunidade está crescendo :smiley:

Eu tava com dúvida aqui e dei uma fuçada coloquei no web.xml

<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.util.hibernate</param-value>
</context-param>

E no controller

@Get
	@Path("/departamento/{departamento.id}")
	public void get(@Load Departamento departamento) {
        ...

carregou o objeto direitinho :smiley:

Como eu utilizo uma factory diferente da existente no vRaptor, carreguei somente o pacote extra.

O Lucas Cavalcanti me falou isso, estou postando caso alguém tenha a mesma dificuldade.

<context-param>  
<param-name>br.com.caelum.vraptor.packages</param-name>  
<param-value>br.com.caelum.vraptor.util.hibernate.extra</param-value>  
</context-param> 

[quote=Lucas Cavalcanti]por enquanto é o mais simples possível, afinal é uma entidade, e o que a gente quer é carregá-la do banco simplesmente.

Mas a gente pode pensar num jeito de deixar isso extensível.
se estiver a fim de pensar nesse hack, essa é a classe:
https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/util/jpa/extra/ParameterLoaderInterceptor.java

=)[/quote]

Neste caso não pode ser utilizado uma factory para a entidade?

thiagobaptista

Dê exemplo de uma entidade que precisaria de uma factory ?

.

Ja utilizo o Vraptor em alguns projetos e é muito confortavél ver tantas pessoas trabalhando em pro ao Vraptor isso mostra que ha uma tendencia de crescimento muito grande o que incentiva cada vez mais seu uso e dissiminação entre a comunidade…
Me sinto muito bem desenvolvendo projetos em Vraptor e espero continuar a usa-lo por muitos anos…
Parabéns a toda a equipe e que tenham cada vez mais sucesso…