È possibile utilizzare il gestore aggiornamenti di Eclipse per utilizzare ed esplorare siti di aggiornamento Eclipse in modo prevedibile. Un sito di aggiornamento può contenere categorie visualizzate in una vista strutturata; queste categorie contengono funzioni. Le funzioni possono essere esaminate in una vista Anteprima all'interno del gestore aggiornamenti. Se una funzione è un candidato valido all'installazione, conterrà un pulsante "Installa ora" che avvierà la procedura guidata di installazione Eclipse. Al completamento dell'installazione, la funzione diventa parte del prodotto.
Questa modalità standard di presentazione delle funzioni per l'installazione non è l'unica. I fornitori possono prendere il controllo di presentazioni, registrazioni, ricerche ed altre attività dal gestore aggiornamenti e restituire il controllo solo quando è il momento di installare una funzione nel prodotto Eclipse.
Il gestore aggiornamenti è in grado di eseguire un servlet che può accettare le richieste dalle pagine Web. Questa capacità non è automatica: deve essere attivata nella pagina Preferenze>Installa/Aggiorna>Aggiornamenti su Web. Quando si preme OK, il gestore aggiornamenti attiverà il server applicativo per gestire le richieste in entrata. Successivamente, tutti gli URL aperti dal gestore aggiornamenti saranno codificati con le informazioni dell'URL di callback. Se l'URL iniziale è una normale pagina Web, l'URL codificata avrà una parte di query che si aggiunge all'URL di callback da utilizzare per richiamare Eclipse:
http://acme.com/myApplication.html
diventa
http://acme.com/myApplication.html?updateURL=<localhost>:<localport>?org.eclipse.update/install
dove "localhost" è l'indirizzo del server Eclipse in esecuzione sulla macchina locale, "localport" è la porta locale selezionata dinamicamente quando viene avviato il server, e la query è il nome dell'applicazione Web Eclipse e il nome del servlet che gestisce la richiesta.
Se l'URL originale è già una query:
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2
la codifica aggiungerà solo le informazioni come un'altro parametro:
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2&updateURL=<localhost>:<localport>?org.eclipse.update/install
La codifica è ignorata dalle normali pagine e query Web e non provoca problemi né ha effetti sulla presentazione. Si limita ad aggiungere informazioni che possono essere utilizzate da una pagina che è in grado di interpretarle.
Dal momento che la pagina Web deve essere avviata dal gestore aggiornamenti, i segnalibri del sito nella vista aggiornamenti possono essere creati come segnalibri Web. Il gestore aggiornamenti gestisce questi segnalibri in modo congruente, e se l'utente ne seleziona uno con doppio clic aprirà l'URL in un browser (se è disponibile un browser incorporato nella versione del sistema operativo e di gestione finestre, il segnalibro verrà aperto direttamente all'interno del gestore aggiornamenti; altrimenti sarà utilizzata la finestra del browser residente).
I fornitori possono impostare le pagine Web di aggiornamento secondo le proprie esigenze: possono utilizzare applicazioni Web complesse basate su database o semplice HTML statico. L'uso di un'architettura più complessa consente ai fornitori di offrire un valore aggiunto agli utenti. Alcune delle possibili offerte sono: ricerche complesse di nuove funzioni, aggiornamenti ed e-fix, presentazioni grafiche di funzioni selezionate, articoli sulle loro funzionalità, collegamenti utili, classifica delle "funzioni più richieste". Inoltre i fornitori possono abilitare l'autenticazione per limitare l'accesso al alcune funzioni, richiedere la registrazione degli utenti, ecc.
I modi per estrarre le informazioni codificate sono diversi. Quello più semplice è di utilizzare una funzione Java Script, come illustrato di seguito:
<SCRIPT LANGUAGE="JavaScript"> function getArgs() { var args = new Object(); var query = location.search.substring(1); var pairs = query.split("&"); for (var i=0; i<pairs.length; i++) { var pos = pairs[i].indexOf('='); if (pos == -1) continue; var argname = pairs[i].substring(0, pos); var value = pairs[i].substring(pos+1); args[argname] = unescape(value); } return args; } </SCRIPT>
La funzione illustrata analizza l'URL della pagina corrente e restituisce gli argomenti di query come array.
Il ruolo dell'URL di callback è di consentire alle pagine Web di restituire il controllo a Eclipse. Una volta che l'utente ha selezionato una funzione da installare, deve restituire il controllo a Eclipse per completarla. Il ruolo dell'aggiornamento su Web non è di rendere i siti di aggiornamento obsoleti: questi sono sempre necessari, ma in questo scenario essi sono utilizzati semplicemente come percorso nel quale sono memorizzate fisicamente le funzioni. La pagina Web provvede a restituire il controllo a Eclipse e trasmettere l'URL del sito di aggiornamento, oltre all'ID e alla versione della funzione selezionata. Questa informazione è codificata utilizzando l'URL di callback originaria e aggiungendo gli argomenti, creando una nuova query.
Gli argomenti della query di callback sono:
Il ritorno del controllo a Eclipse dovrebbe essere effettuato solo quando gli utenti hanno terminato la selezione nella pagina Web e devono semplicemente premere un pulsante di scaricamento o un collegamento ipertestuale. Una semplice implementazione di questa funzionalità è la seguente:
<input type="button" name="Download" value="Download" onClick="javascript:download('com.example.root', '1.0.0')">
Nel codice precedente, l'id e le versioni della funzione sono codificati in modo statico nel tag del pulsante.
La funzione di scaricamento può essere implementata come segue:
function download(id, version) { var args = getArgs(); if (args.updateURL) { var updateURL = args.updateURL; var callback = updateURL+"?server= "+escape("http://acme.com/updateSite/")+ "&feature="+escape(id+'_'+version)+"&backURL="+escape(location); location = callback; } }
Nella funzione JavaScript precedente, l'URL di callback inizialmente codificata nell'URL della pagina viene utilizzata per creare la query. Dopo aver creato la query, il browser è incaricato di aprirla. Questo passo determina il richiamo da parte del browser del servlet Eclipse, che esegue la query, si connette al sito di aggiornamento del fornitore (in questo caso "http://acme.com/updateSite/") e individua la funzione con l'id e versione fornita. Se l'operazione viene eseguita correttamente, la finestra Eclipse viene portata in primo piano e verrà aperta la procedura guidata di installazione. A questo punto, il controllo ritorna a Eclipse ed è possibile completare l'installazione.
È importante notare che la codifica dell'URL di callback è essenziale per l'intero meccanismo. Se la pagina che contiene il collegamento o il pulsante di scaricamento si trova ad un livello molto lontano nella mappa del sito, la pagina Web principale (quella avviata dal gestore aggiornamenti) deve assicurare che l'URL di callback sia passata a tutte le pagine intermedie aperte a partire da quella principale. Questo si può ottenere in diversi modi (codifica diretta nella pagina, salvataggio dei cookie transitori, memorizzazione nel servlet delle pagine del sito, ecc.).