Seguinte, montei a seguinte estrutura:
public interface GenericDao<T> {
public T find(Class<T> c, Object id);
public T merge(T obj);
public void persist(T obj);
public void remove(T obj);
}
Name("genericDao")
public class GenericDaoImpl<T> implements GenericDao<T> {
@In(create = true)
protected EntityManager entityManager;
public T find(Class<T> c, Object id) {
return entityManager.find(c, id);
}
public T merge(T obj) {
return entityManager.merge(obj);
}
public void persist(T obj) {
entityManager.persist(obj);
}
public void remove(T obj) {
entityManager.remove(obj);
}
}
@Name("availabilityDao")
public class AvailabilityDaoImpl extends GenericDaoImpl<Availability> implements AvailabilityDao {
}
@Name("availabilityService")
public class AvailabilityService extends BaseService {
@In(create = true)
private AvailabilityDao availabilityDao;
public void persist(Availability obj) {
availabilityDao.persist(obj);
}
public List<Availability> findBy(Long idUser) {
return availabilityDao.findBy(idUser);
}
}
@Name("availabilityAction")
@Restrict("#{s:hasRole('PAID_USER') || s:hasRole('ADMIN')}")
public class AvailabilityAction {
@In(create = true)
private AvailabilityService availabilityService;
@In
private User user;
@Out(required = false)
private Availability availability;
public void save(Availability availability) {
availabilityService.persist(availability);
}
public void renew() {
availability= new Availability();
}
public void select(Availability availability) {
this.availability = availability == null ? new Availability() : availability;
}
public List<Availability> getAvailabilities() {
return availabilityService.findBy(user.getId());
}
}
Quando eu acesso da AvailabilityAction da o seguinte erro do Seam: @In attribute requires non-null value: availabilityDao.entityManager
Estranho pois eu coloquei @In(create = true) para esse Seam Bean. Aonde estou errando?