Atualizações Acionadas pela Web

O gerenciador de atualização do Eclipse pode ser utilizado para processar e procurar sites de atualização do Eclipse de maneira previsível. Um site de atualização pode conter categorias mostradas em uma exibição em árvore e essas categorias, por sua vez, contêm recursos. Os recursos podem ser inspecionados na exibição Visualizar dentro do gerenciador de atualização. Se um recurso for um candidato de instalação válido, ele conterá um botão "Instalar Agora" que ativará o assistente de instalação do Eclipse. Na conclusão da tarefa de instalação, o recurso fará parte do produto.

Essa maneira padrão de apresentar recursos para instalação não é a única. Os provedores podem assumir a apresentação, o registro, a pesquisa e outras tarefas do gerenciador de atualização e retornar o controle apenas quando for realmente o momento de instalar um recurso em um produto Eclipse.

O gerenciador de atualização é capaz de executar um servlet que pode aceitar pedidos oriundos de páginas da Web. Essa capacidade não é automática: ela deve ser ativada na página Preferências>Instalar/Atualizar>Atualizações acionadas pela Web. Quando OK for pressionado, o gerenciador de atualização ativará o servidor de aplicativos que pode tratar os pedidos de entrada. Após isso, todos os URLs abertos a partir do Gerenciador de Atualização serão codificados com as informações do URL de retorno de chamada. Se o URL inicial for uma página comum da Web, o URL codificado terá a parte de consulta que adiciona o URL de retorno de chamada utilizado para chamar o Eclipse:

http://acme.com/myApplication.html

torna-se

http://acme.com/myApplication.html?updateURL=<localhost>:<localport>?org.eclipse.update/install

em que 'localhost' é o endereço do servidor Eclipse que está sendo executado em sua máquina local; a porta local é selecionada dinamicamente quando o servidor for iniciado e a consulta é o nome do aplicativo Web do Eclipse e o nome do servlet que trata o pedido.

Se o URL original já for uma consulta:

http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2

a codificação simplesmente adicionará nossas informações como outro parâmetro:

http://acme.com/myApplication/myServlet?arg1=value1&arg2=value2&updateURL=<localhost>:<localport>?org.eclipse.update/install

A codificação é ignorada por páginas e consultas normais da Web e não causa qualquer problema e nem afeta a apresentação. Ela simplesmente adiciona informações que podem ser utilizadas por uma página que as conheçam.

Como uma página da Web deve ser ativada a partir do gerenciador de atualização, favoritos de sites na exibição Atualizações podem ser criados como favoritos da Web. O gerenciador de atualização trata esses favoritos de modo adequado e quando você der um clique duplo em um deles, o URL será aberto em um navegador (se um navegador incorporado estiver disponível na versão do sistema operacional e de janelas, ele será aberto diretamente dentro do gerenciador de atualização; caso contrário, será aberto na janela residente do navegador).

Tarefas que podem ser executadas em uma página da Web

Os provedores podem configurar suas páginas da Web de Atualização da maneira desejada: eles podem utilizar aplicativos elaborados da Web apoiados por bancos de dados, ou utilizar HTML simples e estático. A utilização de uma arquitetura mais complexa permite aos provedores oferecer mais valor aos usuários. As pesquisas complexas por novos recursos, atualizações e e-fixes, apresentações visualmente ricas de recursos selecionados, artigos sobre sua funcionalidade, vários links úteis e votações de 'recursos mais populares' são apenas algumas das possibilidades. Além disso, os provedores podem ativar a autenticação para restringir o acesso a alguns dos recursos, solicitar registro do usuário, etc.

Chamando o Eclipse a partir de uma página da Web

Há várias maneiras diferentes de extrair as informações codificadas. Uma bem simples é utilizar a função Java Script como mostrado 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 acima analisa o URL da página atual e retorna argumentos de consulta como uma matriz.

A função do URL de retorno de chamada é permitir que as páginas da Web retornem o controle para o Eclipse. Quando o usuário selecionar um recurso para instalar, ele deve retornar para que o Eclipse o conclua. A função da atualização acionada pela Web não é tornar os sites de atualização obsoletos: eles ainda são necessários, mas neste cenário eles são utilizados simplesmente como uma localização onde os recursos estão fisicamente armazenados. A página da Web deve, em algum ponto, retornar a chamada para o Eclipse e transmitir o URL do site de atualização, bem como o ID e a versão do recurso selecionado. Essas informações são codificadas utilizando o URL de retorno de chamada original e adicionando os argumentos, formando dessa forma uma consulta.

Os argumentos para a consulta de retorno de chamada são:

O retorno da chamada ao Eclipse deve ser feito quando os usuários terminarem de fazer todas as suas seleções na página da Web e tudo o que faltar é pressionar algum tipo de botão de 'Download' ou hyperlink. Uma implementação simples dessa capacidade poderia ser:

<input type="button" 	name="Download" value="Download" 
			onClick="javascript:download('com.example.root', '1.0.0')">

No código acima, o ID e versões do recurso estão embutidos em código na marcação do botão.

A função de download pode ser implementada da seguinte forma:

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 JavaScript acima, o URL de retorno de chamada que foi codificado no URL da página no início será utilizada para formar a consulta. Quando a consulta for criada, o navegador é solicitado a abri-la. Essa etapa fará com que o navegador chame o servlet do Eclipse, que processará a consulta, conectará ao site de atualização do provedor (nesse caso, "http://acme.com/updateSite/") e localizará o recurso com o ID e versão fornecidos. Se tudo correr bem, a janela do Eclipse será colocada em evidência e o familiar assistente para instalação será aberto. Nesse ponto, você estará de volta ao Eclipse e poderá concluir a instalação como usual.

É importante salientar que a codificação do URL de retorno de chamada é crucial para o mecanismo como um todo. Se a página que contém o link ou botão de 'download' estiver vários níveis para dentro do mapa do site da Web, a página raiz da Web (aquela ativada a partir do gerenciador de atualização) precisa garantir que o URL de retorno de chamada seja transmitido de volta para todas as páginas abertas a partir daquela página. Isso pode ser feito de várias maneiras (codificando diretamente na página, salvando um cookie temporário, armazenando-o em um servlet que serve as páginas no site, etc.).

 

Copyright IBM Corporation e outros 2000, 2003.