Pessoal, gostaria de saber onde estou errando pois estou confuso. Tenho um List<Observador> que me estão os UsuarioBean que adicionei a lista, gostaria de recuperar o apelido do Usuario que o UsuarioBean carregou. Me perdoem pela confusão, tentarei detalhar. Estou estudando o padrão Observer e Managed Bean para a criação de um CHAT, didático apenas.
List<Observador> => UsuarioBean => Usuario => apelidopackage com.marcelodeandrade.usuario;
import com.marcelodeandrade.observer.Observador;
public class Usuario implements Observador {
private String apelido;
public String getApelido() {
return apelido;
}
public void setApelido(String apelido) {
this.apelido = apelido;
}
@Override
public void atualizarMensagem(String mensagem) {
System.out.println("Painel: " + mensagem);
}
}
package com.marcelodeandrade.usuario;
import java.util.List;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.NoneScoped;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import com.marcelodeandrade.observer.Observador;
@ManagedBean(name = "UsuarioBean")
@SessionScoped
public class UsuarioBean implements Observador{
private Usuario usuario;
public UsuarioBean(){
this.usuario = new Usuario();
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
@Override
public void atualizarMensagem(String mensagem) {
System.out.println(mensagem);
}
}
import java.util.ArrayList;
import java.util.List;
import com.marcelodeandrade.observer.Objeto;
import com.marcelodeandrade.observer.Observador;
import com.marcelodeandrade.usuario.Usuario;
import com.marcelodeandrade.usuario.UsuarioBean;
public class PainelMensagem implements Objeto {
private String mensagem;
private List<Observador> observadores;
private List<String> mensagens;
private static PainelMensagem instancia;
public PainelMensagem(){
this.observadores = new ArrayList<Observador>();
this.mensagens = new ArrayList<String>();
}
public static PainelMensagem getInstancia(){
if( instancia == null){
instancia = new PainelMensagem();
}
return instancia;
}
public List<String> getMensagens() {
return mensagens;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
this.mensagens.add(mensagem);
notificarObservadores();
}
@Override
public void adicionarObservador(UsuarioBean usuarioBean) {
this.observadores.add(usuarioBean);
}
@Override
public void removerObservador(UsuarioBean usuarioBean) {
this.observadores.remove(usuarioBean);
}
@Override
public void notificarObservadores() {
for( Observador observador : this.observadores){
observador.atualizarMensagem(this.mensagem);
}
}
public List<Observador> getObservadores() {
return observadores;
}
}
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import com.marcelodeandrade.usuario.UsuarioBean;
@ManagedBean(name = "Main")
public class Main {
@ManagedProperty(value = "#{UsuarioBean}")
private UsuarioBean usuarioBean;
private PainelMensagem painelMensagem;
public PainelMensagem getPainelMensagem() {
return painelMensagem;
}
public void setPainelMensagem(PainelMensagem painelMensagem) {
this.painelMensagem = painelMensagem;
}
public UsuarioBean getUsuarioBean() {
return usuarioBean;
}
public void setUsuarioBean(UsuarioBean usuarioBean) {
this.usuarioBean = usuarioBean;
}
public Main(){
this.usuarioBean = new UsuarioBean();
painelMensagem = PainelMensagem.getInstancia();
getPainelMensagem().adicionarObservador(this.usuarioBean);
}
}
import com.marcelodeandrade.observer.Observador;
import com.marcelodeandrade.usuario.Usuario;
import com.marcelodeandrade.usuario.UsuarioBean;
public class MetodoPrincial {
public static void main(String[] args) {
Usuario u1 = new Usuario();
u1.setApelido("u1");
Usuario u2 = new Usuario();
u2.setApelido("u2");
UsuarioBean ub1 = new UsuarioBean();
ub1.setUsuario(u1);
UsuarioBean ub2 = new UsuarioBean();
ub2.setUsuario(u1);
PainelMensagem painelMensagem = PainelMensagem.getInstancia();
painelMensagem.adicionarObservador(ub1);
painelMensagem.adicionarObservador(ub2);
painelMensagem.setMensagem("Olá ");
for(Observador o : painelMensagem.getObservadores() ){
System.out.println(o);
}
}
}
No console o for(Observador o : painelMensagem.getObservadores() ) exibe:
com.marcelodeandrade.usuario.UsuarioBean@8dc8569
com.marcelodeandrade.usuario.UsuarioBean@45bab50a
Eu gostaria de exibir o apelido setado:
u1
u2