Pessoal,
estou com um pequeno problema com vraptor3 + dwr, antes de começar a utilizar o vraptor3 e suas injeções de dependencias o meu método DWR funcionava normalmente e era assim:
public class DWRFacade {
private final LocalizacaoDAO dao = new LocalizacaoHibernateDAO();
public List<Localizacao> findSimpleLocalizacaoByDescricaoInLatLng(String descricao, Bounds bounds) {
return dao.findLocalizacaoByDescricaoInLatLng(descricao, bounds);
}
}
dessa maneira funcionava!!!
depois resolvi incluir as injeções de dependencia na minha classe LocalizacaoHibernateDAO logo ela ganhou um contrutor diferente do default e ficou assim:
@Component
public class LocalizacaoHibernateDAO extends
GenericoHibernateDAO<Localizacao, Long> implements LocalizacaoDAO {
private final Session session;
public LocalizacaoHibernateDAO(Session session) {
super(session);
this.session = session;
}
@Override
@SuppressWarnings("unchecked")
public List<Localizacao> findLocalizacaoByDescricaoInLatLng(
String categoria, Bounds bounds) {
Criteria crit = session.createCriteria(Localizacao.class);
Criterion cOr = Restrictions.or(
Restrictions.ilike("nome", "%" + categoria.trim() + "%"),
Restrictions.ilike("descricao", "%" + categoria.trim() + "%"));
Criterion cLat = Restrictions.between("latitude", bounds.getSul().getLatitude(), bounds.getNorte().getLatitude());
Criterion cLng = Restrictions.between("longitude", bounds.getSul().getLongitude(), bounds.getNorte().getLongitude());
crit.add(cOr);
crit.add(cLat);
crit.add(cLng);
return crit.list();
}
}
Agora estou com um problema na minha classe DWRFacade. Como vou fazer para chamar a minha classe LocalizacaoHibernateDAO. Eu até pense em usar a injeção de dependencia do vraptor no meu DWRFacade e acabei fazendo isso:
public class DWRFacade {
private final LocalizacaoDAO dao;
public DWRFacade(LocalizacaoDAO dao) {
this.dao = dao;
}
public List<Localizacao> findSimpleLocalizacaoByDescricaoInLatLng(String descricao, Bounds bounds) {
return dao.findLocalizacaoByDescricaoInLatLng(descricao, bounds);
}
}
porém não funciona pois quem chama essa classe DWRFacade é um método javascript e provavelmente ele acaba não encontrado a classe java pelo fato de não encontrar o construtor default. Queria saber se após eu ter adicionado a injeção de dependencia na classe LocalizacaoHibernateDAO tem algum forma de instancia-la em outra classe passando a sessão do hibernate por parametro? E como faço para pegar a sessão do hibernate quando estou usando o provider default do vraptor?
ou iso-8859-1 :-(, mas dá para você alterar isso para o charset que você quiser.