Eu estava estudando a apostila da Caelum fj28 na parte de Spring com o VRaptor. Terminei a classe CriadorDeSession que tem esse construtor:
@Component
public class CriadorDeSession implements ComponentFactory<Session> {
private final SessionFactory factory;
private final Proxifier proxifier;
private Session session;
public CriadorDeSession(SessionFactory factory, Proxifier proxifier) {
System.out.println("CriadorDeSession - Criando session da factory");
this.factory = factory;
this.proxifier = proxifier;
}
@PostConstruct
public void abre() {
System.out.println("CriadorDeSession - Abrindo session");
// this.session = factory.openSession();
this.session = proxifier.proxify(Session.class,
new MethodInvocation<Session>() {
public Object intercept(Session proxy, Method method,
Object[] args, SuperMethod superMethod) {
Session sessionDoSpring = SessionFactoryUtils
.doGetSession(factory, true);
return new Mirror().on(sessionDoSpring).invoke()
.method(method).withArgs(args);
}
});
}
Agora então não uso o criador de session factory.
Eu gostaria de fazer um pequeno teste com o meu controller que antes usava a factory.
public class AdicaoDeProduto {
public static void main(String[] args) {
//SessionFactory factory = new CriadorDeSessionFactory().getInstance();
Session session = new CriadorDeSession(factory, AQUI TEM QUE COLOCAR O PROXIFIER).getInstance();
Produto produto = criacaoProduto();
new ProdutoDao(session).salva(produto);
}
private static Produto criacaoProduto() {
Produto produto = new Produto();
produto.setNome("Geladeira");
produto.setDescricao("Geladeira com freezer");
produto.setPreco(new BigDecimal("1035.70"));
return produto;
}
}
Mas preciso agora passar para classe CriadordeSession o Proxifier. Pergunto como criar ele?
Obrigado