Ciao a tutti,
ho un problemino con un sorgente Java, non riesco a capire che giri fa...
Ecco le varie classi:
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 una classe EventResource (parte di un webservice)
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);		 	
}
poi la classe EventManager che contiene, oltre ad altri metodi, anche:
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;
   }
...
}
ed infine la classe Publisher:
codice:
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);
   }
}
Da quello che ho capito, quando arriva una richiesta al webservice (al path indicato), la classe EventResource richiama
codice:
EventManager.getInstance().createEvent(userid, toAdd);
quindi si fa restituire l'istanza creata dalla classe EventManager ed invoca su questa istanza il metodo createEvent sempre della classe EventManager.
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
codice:
protected EventSubscriber() { 		       
   EventManager.getInstance().subscribe(this); 	    
}
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?

Ciao e grazie a tutti!!!!

Alessio