O gestor de actualizações do Eclipse pode ser utilizado para representar e procurar os sítios da web de actualizações do Eclipse de forma previsível. Um sítio da web de actualizações pode conter categorias mostradas na vista em árvore, e essas categorias podem, por sua vez, conter funções. As funções podem ser inspeccionadas na vista Pré-visualizar dentro do gestor de actualizações. Se uma função for uma candidata válida da instalação, irá conter um botão "Instalar Agora" que irá iniciar o assistente de instalação do Eclipse. Após a conclusão de uma tarefa de instalação, a função fará parte do produto.
Este modo padrão de apresentar as funções para instalação não é o único modo que existe. Os fornecedores podem encarregar-se da apresentação, registo, pesquisa e outras tarefas do gestor de actualizações, e devolver o controlo apenas quando for altura de instalar efectivamente uma função num produto Eclipse.
O gestor de actualizações é capaz de executar um servlet que pode aceitar pedidos de páginas da Web. Esta capacidade não é automática, tem de ser activada na página Preferências>Instalar/Actualizar>Actualizações despoletadas pela Web. Quando prime o botão OK, o gestor de actualizações irá activar o servidor da aplicação que consegue processar os pedidos de entrada. Depois disso, todos os URLs aberto a partir do Gestor de Actualizações serão codificados com a informação de URL de chamada de retorno. Se o URL iniciar for uma página da Web normal, o URL codificado terá o componente de consulta que adicionar o URL de chamada de retorno a utilizar para chamar o Eclipse:
http://acme.com/myApplication.html
transforma-se em
http://acme.com/myApplication.html?updateURL=<localhost>:<localport>?org.eclipse.update/install
onde 'localhost' é o endereço do servidor do Eclipse que está a ser executado no computador local, a porta local é seleccionada de modo dinâmico quando o servidor é iniciado, e a consulta é o nome da aplicação da Web e o nome do servlet que processa o pedido.
Se o URL original já for uma consulta:
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2
a codificação irá simplesmente adicionar a nossa informação como outro parâmetro:
http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2&updateURL=<localhost>:<localport>?org.eclipse.update/install
A codificação é ignorada pelas páginas da Web normais e pelas consultas, e não causa quaisquer problemas nem afecta a apresentação. Adiciona simplesmente as informações que podem ser utilizadas por uma página que as conheça.
Uma vez que é necessário lançar uma página da Web a partir do gestor de actualizações, os favoritos do sítios da Web, na vista Actualizações, podem ser criados como favoritos da Web. Os gestor de actualizações trata estes favoritos conforme as circunstâncias, e quando o utilizador fizer duplo clique num deles, irá abrir o URL num browser (se o browser incorporado estiver disponível na versão do sistema operativo e de janelas, irá abrir directamente dentro do gestor de actualizações; caso contrário, irá abrir a janela do browser residente).
Os fornecedores podem configurar as páginas da Web de actualizações da forma que pretenderem: pode utilizar aplicações da Web elaboradas apoiadas por bases de dados, ou utilizar HTML simples e estático. Utilizando arquitecturas mais complexas permite aos fornecedores oferecer funções mais valiosas aos utilizadores. As pesquisas complexas para novas funções, actualizações e correcções electrónicas, apresentações visuais variadas de funções seleccionadas, artigos sobre a respectiva funcionalidade, várias ligações úteis e votações sobre as "funções mais populares". Além disso, os fornecedores podem activar a autenticação para restringir o acesso a algumas funções, requerer o registo do utilizador, etc.
Existem vários modo de extrair a informação codificada. Um modo simples é utilizar a função Java Script conforme se mostra a seguir:
<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>
A função anterior analisar o URL da página actual e devolve argumentos de consulta como um conjunto.
O papel do URL de chamada de retorno é permitir que as páginas da Web devolvam o controlo ao Eclipse. Assim que o utilizador seleccionar uma função para instalar, deverá devolvê-la ao Eclipse para a concluir. O papel de uma actualização despoletada pela Web não é tornar os sítios de actualizações obsoletos: estes sítios da Web continuam a ser necessários, mas neste cenário são utilizados simplesmente como uma localização onde as funções são fisicamente armazenadas. Uma página da Web deve a determinada altura efectuar uma chamada de retorno para o Eclipse e passar o URL do sítio da Web de actualizações, bem como o ID e versão da função seleccionada. Esta informação é codificada utilizando o URL de chamada de retorno original e adicionando argumentos, formando assim uma consulta.
Os argumentos para a consulta de chamada de retorno são:
A chamada de retorno para o Eclipse deve fazer-se quando os utilizadores terminarem todas as selecções na página da Web e só resta premir algum tipo de botão ou hiperligação "Transferir". Uma implementação simples desta capacidade seria:
<input type="button" name="Download" value="Download" onClick="javascript:download('com.example.root', '1.0.0')">
No código anterior, o ID e versões de função estão codificadas por programa no indicador button.
A função de transferência pode ser implementada do modo que se 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; } }
Na função de JavaScript anterior, o URL de chamada de retorno que estava codificado no URL da página desde o início é utilizado para formar a consulta. Assim que a consulta é criada, pede-se ao browser que a abra. Este passo irá fazer com que o browser chame o servlet do Eclipse, que irá processar a consultar, ligar ao sítio da web de actualizações do fornecedor (neste caso será "http://acme.com/updateSite/") e localizar a função com o ID e versão fornecidos. Se tudo correr bem, a janela do Eclipse será colocada no topo e irá abrir-se o familiar assistente da instalação. Nessa altura, estará de volta ao Eclipse e poderá terminar a instalação como habitualmente.
É importante salientar que ter o URL de chamada de retorno codificado é crucial para todo o mecanismo. Se a página que contém a ligação ou o botão 'transferir' se encontrar a vários níveis de profundidade no mapa do sítio da Web, a página da Web raiz (a que se lançou a partir do gestor de actualizações) deve assegurar-se de que o URL de chamada de retorno que se passou para todas as páginas será aberto a partir dessa página. Isto pode fazer-se de vários modos (codificação directa na página, guardar um cookie transitório, armazená-lo num servlet que sirva as página do sítio da web, etc.).