Eccoli, la parte server non fa niente di complicato, istanzia l'oggetto remoto passandogli la lista, e con questo metodo la richiedo dal client:
codice:
public synchronized ArrayList<Giocatore> getListaGiocatori() throws RemoteException {
return giocatori;
}
questo è invece quello che succede nella parte client (ho inserito solo i metodi interessati e qualche istruzione è ancora di prova):
codice:
private RemoteInterface server = null;
public Client(String address) {
t = new Thread(this);
serverAddress = (address != null && address.matches(validAddress)) ? address : defaultAddress;
try {
server = (RemoteInterface) Naming.lookup("rmi://" + serverAddress + "/RemoteInterface");
} catch(MalformedURLException | RemoteException | NotBoundException e) {
e.printStackTrace();
}
}
public void run() {
Rosa model = new Rosa("Giovanni");
ClientWindow view = new ClientWindow(giocatori(), 100);
// associo modello alla vista
model.addObserver(view);
// creo il controller e associo il modello e la vista
ClientController myController = new ClientController();
myController.addModel(model);
myController.addView(view);
// associo il controller alla vista
view.addController(myController);
}
private ArrayList<Giocatore> giocatori() {
ArrayList<Giocatore> giocatori = null;
try {
giocatori = getListaGiocatori();
} catch(RemoteException e) {}
return giocatori;
}
public ArrayList<Giocatore> getListaGiocatori() throws RemoteException {
return server.getListaGiocatori();
}
praticamente mi faccio inviare la lista dei giocatori e poi la passo all'interfaccia che deve semplicemente visualizzarla... ma arriva un puntatore nullo...