Notificação usando o Primefaces Push
Estou desenvolvendo uma aplicação Primefaces Push e recebo essa mensagem de erro: "GRAVE: java.lang.NullPointerException".
Essa linha "eventBus.publish(CHANNEL, new FacesMessage(StringEscapeUtils.escapeHtml(summary), StringEscapeUtils.escapeHtml(detail)));" está retornando como NULL.
Como poderia solucionar esse erro?
Segue o código:
Essa linha "eventBus.publish(CHANNEL, new FacesMessage(StringEscapeUtils.escapeHtml(summary), StringEscapeUtils.escapeHtml(detail)));" está retornando como NULL.
Como poderia solucionar esse erro?
Segue o código:
import javax.faces.application.FacesMessage; import org.primefaces.push.annotation.OnMessage; import org.primefaces.push.annotation.PushEndpoint; import org.primefaces.push.impl.JSONEncoder; /** * * @author Antonio Alves de Lima Filho */ @PushEndpoint("/notify") public class NotifyResource { @OnMessage(encoders = (JSONEncoder.class)) public FacesMessage onMessage(FacesMessage message) { return message; } } import java.util.List; import br.com.dentalweb.model.Notificacao; /** * * @author Antonio Alves de Lima Filho */ public interface NotificacaoDao { public void grava(Notificacao notificacao); public void remove(Notificacao notificacao); public void altera(Notificacao notificacao); public List<Notificacao> listaTodos(String consulta); public List<Notificacao> localizarMensagem(String consulta, String mensagem); public List<Notificacao> localizarIdNotificacao(String consulta, int id); } import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import br.com.dentalweb.model.Notificacao; import br.com.dentalweb.util.ConnectFactory; /** * * @author Antonio Alves de Lima Filho */ public class NotificacaoDaoImp implements NotificacaoDao{ private Session session; private Transaction t; private boolean commited = false; private List<Notificacao> list; private List lista; private Query query; public void grava(Notificacao notificacao) { try{ session = ConnectFactory.getInstance(); t = session.beginTransaction(); session.save(notificacao); t.commit(); commited = true; }finally{ if(!commited){ t.rollback(); } session.close(); } } public List<Notificacao> localizarMensagem(String consulta, String mensagem) { try{ session = ConnectFactory.getInstance(); list = null; query = session.getNamedQuery(consulta); query.setString("mensagem", "%"+mensagem+"%"); list = query.list(); }finally{ session.close(); } return list; } public List<Notificacao> listaTodos(String consulta) { try{ session = ConnectFactory.getInstance(); t = session.beginTransaction(); lista = session.getNamedQuery(consulta).list(); t.commit(); }finally{ session.close(); } return lista; } public void remove(Notificacao notificacao) { try{ session = ConnectFactory.getInstance(); t = session.beginTransaction(); session.delete(notificacao); t.commit(); commited = true; }finally{ if(!commited){ t.rollback(); } session.close(); } } public void altera(Notificacao notificacao) { try{ session = ConnectFactory.getInstance(); t = session.beginTransaction(); session.update(notificacao); t.commit(); commited = true; }finally{ if(!commited){ t.rollback(); } session.close(); } } public List<Notificacao> localizarIdNotificacao(String consulta, int id){ try{ session = ConnectFactory.getInstance(); list = null; query = session.getNamedQuery(consulta); query.setInteger("id", id); list = query.list(); }finally{ session.close(); } return list; } } import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.context.FacesContext; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import org.apache.commons.lang.StringEscapeUtils; import org.primefaces.push.EventBus; import org.primefaces.push.EventBusFactory; import br.com.dentalweb.dao.NotificacaoDao; import br.com.dentalweb.dao.NotificacaoDaoImp; import br.com.dentalweb.model.Notificacao; /** * * @author Antonio Alves de Lima Filho */ @ManagedBean(name="notificacaoController") @RequestScoped public class NotificacaoController implements Serializable{ /** * */ private static final long serialVersionUID = -6745079899914256290L; private String CHANNEL = "/notify"; private String summary; private String detail; private EventBus eventBus; private Notificacao notificacao; private List<Notificacao> listaNotificacao = new ArrayList<Notificacao>(); private DataModel<Notificacao> listaNotificacaoCadastradas; private FacesMessage dlgNotificacao; @PostConstruct public void init() { if(listaNotificacao.isEmpty()){ listaNotificacao = new NotificacaoDaoImp().listaTodos("notificacao.mostraTodos"); listaNotificacaoCadastradas = new ListDataModel<Notificacao>(listaNotificacao); } } public String getCHANNEL() { return CHANNEL; } public void setCHANNEL(String cHANNEL) { CHANNEL = cHANNEL; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getDetail() { return detail; } public void setDetail(String detail) { this.detail = detail; } public EventBus getEventBus() { return eventBus; } public void setEventBus(EventBus eventBus) { this.eventBus = eventBus; } public Notificacao getNotificacao() { return notificacao; } public void setNotificacao(Notificacao notificacao) { this.notificacao = notificacao; } public List<Notificacao> getListaNotificacao() { return listaNotificacao; } public void setListaNotificacao(List<Notificacao> listaNotificacao) { this.listaNotificacao = listaNotificacao; } public DataModel<Notificacao> getListaNotificacaoCadastradas() { return listaNotificacaoCadastradas; } public void setListaNotificacaoCadastradas(DataModel<Notificacao> listaNotificacaoCadastradas) { this.listaNotificacaoCadastradas = listaNotificacaoCadastradas; } public FacesMessage getDlgNotificacao() { return dlgNotificacao; } public void setDlgNotificacao(FacesMessage dlgNotificacao) { this.dlgNotificacao = dlgNotificacao; } //Exibe página cadastro notificação public String prepararAdicionarNotificacao(){ eventBus = EventBusFactory.getDefault().eventBus(); limpa(); return "/paginaNotificacao/cadastrarNotificacao.xhtml"; } //Exibe página notificação public String prepararExibeNotificacao(){ limpa(); return "/paginaNotificacao/exibeNotificacao.xhtml"; } public void limpa() { listaNotificacao.clear(); detail = null; init(); } //Gravar dados public void adicionarNotificacao(){ try{ notificacao = new Notificacao(); NotificacaoDao dao = new NotificacaoDaoImp(); notificacao.setMensagem(detail); summary = "Aviso"; dao.grava(notificacao); dlgNotificacao = new FacesMessage(FacesMessage.SEVERITY_INFO, "Gravado com sucesso.",""); FacesContext.getCurrentInstance().addMessage(null, dlgNotificacao); }finally{ notificacao.limpaValores(); limpa(); agregar(); } } public void agregar() { notificarPush(); } public void notificarPush() { eventBus.publish(CHANNEL, new FacesMessage(StringEscapeUtils.escapeHtml(summary), StringEscapeUtils.escapeHtml(detail))); } }
Antonio Filho
Curtidas 0