Ciao a tutti,
ho un problemino con un sorgente Java, non riesco a capire che giri fa...
Ecco le varie classi:
poi una classe EventResource (parte di un webservice)codice:public abstract class EventSubscriber implements EventInterface { @SuppressWarnings("static-access") protected static final Properties CONSTANTS = Configuration.getInstance().constants; protected EventSubscriber() { EventManager.getInstance().subscribe(this); } }
poi la classe EventManager che contiene, oltre ad altri metodi, anche:codice:@POST @Path("/add") @Consumes("application/xml") public void createEvent(@PathParam("username") String userid, @CookieParam("sessionid") String sessionid, SingleEvent toAdd) { log.info("Request to create event from user " + userid + ", session "+ sessionid); EventManager.getInstance().createEvent(userid, toAdd); }
ed infine la classe Publisher:codice:public class EventManager extends Publisher<EventSubscriber> implements EventInterface { ... public boolean createEvent(String userID, SingleEvent toAdd){ for (EventSubscriber o : subscriberlist) o.createEvent(userID, toAdd); EventDatabase.instance.addEvent(userID, toAdd); return true; } public static EventManager getInstance() { return InstanceHolder.INSTANCE; } ... }
Da quello che ho capito, quando arriva una richiesta al webservice (al path indicato), la classe EventResource richiamacodice:public abstract class Publisher<E> { protected List<E> subscriberlist; public Publisher(){ subscriberlist = new LinkedList<E>(); } public void subscribe(E subscriber) { subscriberlist.add(subscriber); } public void unsubscribe(E subscriber) { subscriberlist.remove(subscriber); } }
quindi si fa restituire l'istanza creata dalla classe EventManager ed invoca su questa istanza il metodo createEvent sempre della classe EventManager.codice:EventManager.getInstance().createEvent(userid, toAdd);
Tale metodo, ne ciclo for, crea un oggetto di tipo EventSubscriber per ogni elemento di subscriberlist (una linked list). Ma andando a vedere il costruttore di EventSubscriber
Cosa significa this?? Come funziona? Da quello che conosco serve per identificare una istanza di un oggetto creato? Come funziona il construttore di EventSubscriber? Si autocostruisce?codice:protected EventSubscriber() { EventManager.getInstance().subscribe(this); }
Ciao e grazie a tutti!!!!
Alessio

Rispondi quotando