Ahh bom. Mas esse tópico é para o GAE/J, hahaha.
Lucas, nesse caso o que você sugere? Que o Vraptor suporte o @PersistenceContext ao invés de injetar no construtor?
Ahh bom. Mas esse tópico é para o GAE/J, hahaha.
Lucas, nesse caso o que você sugere? Que o Vraptor suporte o @PersistenceContext ao invés de injetar no construtor?
[quote=garcia-jj]Ahh bom. Mas esse tópico é para o GAE/J, hahaha.
Lucas, nesse caso o que você sugere? Que o Vraptor suporte o @PersistenceContext ao invés de injetar no construtor?[/quote]
Sim, claro, mas se fizesse algo como o que sugeri, não percisaríamos de classes extras apenas para ter um EntityManager com outra PU, isso se resumiria a tudo.
se vc vai selecionar o EntityManager por algo que vem na request ou coisa do tipo, vc pode criar uma ComponentFactory que faz a seleção.
se vc vai fazer por anotação, o jeito mais fácil de fazer isso hoje é usando o Guice, e sobrescrevendo um módulo.
nas configurações vc vai colocar
bind(EntityManager.class).annotatedWith(PersistenceUnit("abc")).toProvider(UmaClasseQueCriaEssaPersistenceUnit);
bind(EntityManager.class).annotatedWith(PersistenceUnit("def")).toProvider(UmaClasseQueCriaEssaPersistenceUnit);
tem q ver o jeito direitinho de criar esse annotatedWith, mas é isso
ainda dá pra injetar no construtor:
public class MeuComponente {
public MeuComponente(@PersistenceContext("bolinha") EntityManager bolinha) {...}
}
[quote=Lucas Cavalcanti][quote=garcia-jj]
Lucas, nesse caso o que você sugere? Que o Vraptor suporte o @PersistenceContext ao invés de injetar no construtor?
[/quote]
ainda dá pra injetar no construtor:
public class MeuComponente {
public MeuComponente(@PersistenceContext("bolinha") EntityManager bolinha) {...}
}
[/quote]
Exatamente isso…
Retomando a questão, por enquanto, vou ter que registrar quais classes todas para eu conseguir usar o VRaptor no GAE/J?
Já foi resolvido algo em questão à essa issue que abri?
não consegui pensar num jeito bom de implementar a issue. Pelo menos não um que funcione no Spring, Guice e Pico… o @PersistenceContext(“abc”) não vai rolar, não dá pra recuperar esse “abc” no momento da injeção pelos meios comuns.
o jeito mais fácil ainda é com um módulo do guice, e criando anotações ou usando a anotação @Named para decidir qual EntityManager vc vai usar
[quote=Lucas Cavalcanti]não consegui pensar num jeito bom de implementar a issue. Pelo menos não um que funcione no Spring, Guice e Pico… o @PersistenceContext(“abc”) não vai rolar, não dá pra recuperar esse “abc” no momento da injeção pelos meios comuns.
o jeito mais fácil ainda é com um módulo do guice, e criando anotações ou usando a anotação @Named para decidir qual EntityManager vc vai usar[/quote]
Mas isso só funcionaria com o Guice?
Lucas, será que dá para fazer alguma coisa com o @Qualifier? Se der melhor, pois o Guice e o Spring suportam a JSR299.
Modules só funcionaria com o guice…
vc pode criar factories com Qualifiers no Spring também.
não sei como fazer isso com Pico.
Talvez o @Named funcione no Spring tb, se vc usar o javax.inject.Named
Qualifier/Named talvez funcione, precisamos testar…
não acho que funcione diretamente com ComponentFactories, de qqer forma
Neste momento não estou pensando apenas no meu projetinho, que uso Guice, mas sim no VRaptor em geral, que atenderia várias opções.
Por isso a sugestão.
sim sim… e isso é uma issue aberta há algum tempo já:
a gente só não sabe como resolver direito ainda =(
obrigado pelas sugestões =)
[quote=Lucas Cavalcanti]sim sim… e isso é uma issue aberta há algum tempo já:
a gente só não sabe como resolver direito ainda =(
obrigado pelas sugestões =)[/quote]
Claro, entendo que fácil não é ^^
Mas se houver um jeito de fazer isso sem precisar registrar essas classes, ficaria melhor.