Webbutlösta uppdateringar

Eclipse-uppdateringshanteraren kan användas till att återge och söka på Eclipse-uppdateringsplatser på ett förutsägbart sätt. En uppdateringsplats kan innehålla kategorier som visas i trädvyn och de kategorierna innehåller i sin tur funktioner. Funktioner kan granskas i förhandsgranskningsvyn i uppdateringshanteraren. Om en funktion är en giltig installationskandidat innehåller den knappen "Installera nu" som används till att starta installationsguiden för Eclipse. När installationen är klar är funktionen en del av produkten.

Det här är standardsättet att presentera funktioner för installation men det är inte det enda sättet. Providers kan ta över presentation, registrering, sökning och andra uppgifter från uppdateringshanteraren och inte överlåta kontrollen förrän det är dags att installera en funktion i en Eclipse-produkt.

Uppdateringshanteraren kan köra ett servletprogram som kan ta emot begäran från webbsidor. Den funktionaliteten är inte automatisk utan måste aktiveras på sidan Inställningar>Installera/uppdatera>Webbutlösta uppdateringar. När du trycker på OK aktiverar uppdateringshanteraren den tillämpningsserver som kan hantera inkommande begäran. Därefter kommer alla URL-adresser som öppnas från uppdateringshanteraren att kodas med information om återanrops-URL-adress. Om den ursprungliga URL-adressen är en vanlig webbsida får den kodade URL-adressen den frågedel som lägger till återanrops-URL-adressen som används till att anropa Eclipse:

http://acme.com/myApplication.html

blir

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

där 'localhost' är adressen till den Eclipse-server som körs på den lokala datorn, lokal port väljs dynamiskt när servern startas och frågan är namnet på Eclipse-webbtillämpningen och namnet på det servletprogram som hanterar begäran.

Om den ursprungliga URL-adressen redan är en fråga:

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

lägger kodningen helt enkelt till informationen som en till parameter:

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

Kodningen ignoreras av normala webbsidor och frågor och orsakar inga problem. Den påverkar heller inte presentationen. Den lägger helt enkelt till information som kan användas av en sida som känner till den.

Eftersom en webbsida måste startas från uppdateringshanteraren kan platsbokmärken i uppdateringsvyn skapas som webbokmärken. I uppdateringshanteraren hanteras de här bokmärkena på motsvarande sätt och när du dubbelklickar på ett bokmärke öppnas det i en webbläsare (om den inbäddade webbläsaren är tillgänglig för den aktuella versionen av operativ- och fönstersystem öppnas det direkt i uppdateringshanteraren och i annat fall öppnas det i webbläsarfönstret).

Uppgifter som kan utföras på en webbsida

Leverantörer kan konfigurera uppdateringswebbsidor som de vill. De kan använda komplicerade webbtillämpningar som backas upp av databaser eller enkel statisk HTML. Om en mer komplex arkitektur används kan leverantörer tillhandahålla mer värde till användare. Komplexa sökningar efter nya funktioner, uppdateringar och e-rättningar, avancerade visuella presentationer av valda funktioner, artiklar om funktionalitet för funktioner, olika praktiska länkar, resultat av popularitetsundersökningar för funktioner är bara några exempel på vilka möjligheter som finns. Dessutom kan leverantörer aktivera autentisering för att begränsa åtkomst till vissa funktioner, begära användarregistrering osv.

Anropa Eclipse från en webbsida

Kodad information kan extraheras på många olika sätt. Ett enkelt sätt är att använda Java-skriptfunktionen enligt följande:

<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>

Funktionen ovan tolkar URL-adressen till den aktuella sidan och returnerar frågeargument som en matris.

Rollen för återanrops-URL-adressen är att tillåta webbsidor att återlämna kontrollen till Eclipse. När en användare väljer en funktion att installera måste den återlämnas till Eclipse för att installationen ska slutföras. Rollen för en webbutlöst uppdatering är att göra uppdateringsplatser inaktuella. De behövs fortfarande men i det här scenariot används de bara som en plats för fysisk lagring av funktioner. Webbsidan måste vid något tillfälle göra ett återanrop till Eclipse och överföra URL-adressen för uppdateringsplatsen samt ID och version för den valda funktionen. Den här informationen kodas med hjälp av den ursprungliga återanrops-URL-adressen och genom att argumenten läggs till. På så sätt skapas en fråga.

Argumenten för återanropsfrågan är:

Återanrop till Eclipse bör göras när användare har avslutat alla inställningar på webbsidan och allt som återstår är att de ska trycka på något slag av hämtningsknapp eller hyperlänk. Ett exempel på en enkel implementering av den här funktionaliteten:

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

I koden ovan är funktions-ID:t och -versionerna hårdkodade i knappmärkordet.

Hämtningsfunktionen kan implementeras på följande sätt:

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;
   }
}

I JavaScript-funktionen ovan används den återanrops-URL-adress som kodades i sid-URL-adressen från början till att skapa frågan. När frågan har skapats uppmanas webbläsaren att öppna den. Med det här steget anger du att webbläsaren ska anropa Eclipse-servletprogrammet som kommer att bearbeta frågan, ansluta till leverantörens uppdateringsplats (i det här fallet "http://acme.com/updateSite/") och söka efter funktionen med det aktuella ID:t och versionen. Om allt går som det ska placeras Eclipse-fönstret överst och den välbekanta installationsguiden öppnas. Du är nu tillbaka i Eclipse och kan slutföra installationen på vanligt sätt.

Det bör påpekas att det är avgörande för hela mekanismen att en kodad återanrops-URL-adress används. Om den sida som innehåller hämtningslänken eller -knappen finns på flera nivåers djup i webbplatsavbildningen måste rotwebbsidan (den som startas från uppdateringshanteraren) ange att den återanrops-URL-adress som överförts till alla sidor öppnas från den sidan. Det kan göras på flera olika sätt (direkt kodning på sidan, spara en temporär cookie, lagra den i ett servletprogram som tillhandahåller sidorna från platsen osv.).