User: Gabnap (Gabriele Napoli)




Info personali

Nome: Gabriele Napoli

Email: nap.gab@gmail.com – g.napoli38@studenti.unisa.it

Lavoro di tesi

Il mio lavoro di tesi attualmente mi vede impegnato nello studiare fattibilità e metodologie per l’integrazione di sistemi software tramite la tecnologia Eclipse/RAP.

I miei studi sono quotidianamente accompagnati dal mio amico e collega Gianluca Landi.

Diario di bordo

Capitolo 1: Inizia l’avventura

Ok, sono in ISISLab. Dopo aver ottenuto le mie credenziali per accedere ai pc del laboratorio, il primo passo è stato quello di scaricare il software di sviluppo per Eclipse/RAP.

Oltre a poter scaricare i "RAP Tools" seperatamente e installarli all’interno di una IDE preesistente, Eclipse consente anche il download di una versione dell’IDE completa del software aggiuntivo: "Eclipse for RCP and RAP Developers". L’installazione è banale, niente di più difficile dell’installazione di un classico plugin.

L’unica operazione "straordinaria" è l’impostazione della target platform, per questo vi rimando alla pagina dedicata della Developer’s Guide di Eclipse/RAP.

Capitolo 2: Il protocollo di comunicazione

Dopo qualche HelloWorld e aver smanettato un pò con i widget di RWT, è giunto il momento di concentrarsi sull’obiettivo della tesi.

Tra le varie caratteristiche di RAP, la prima prima che mi è saltata all’occhio come candidata tecnologia di integrazione è stato il protocollo di comunicazione tra client e server.

L’idea è quella che registrare tutti i messaggi JSON scambiati tra client e server rap equivale a loggare tutte le interazioni che l’utente ha con il sistema. Ora si tratta soltanto di capire se è possibile intercettare questi messaggi, ma soprattutto se possono essere eseguiti in un secondo momento, in un altro sistema, replicandone gli effetti, in particolar modo il look & feel dei widget, dando l’effetto di una "fusione" tra i due sistemi.

Capitolo 3: I primi test

Arrivano le prime difficoltà. Eclipse/RAP è una tecnologia giovane e ancora non affermata, fare ricerche su internet non si è rivelata un impresa semplice.

Inoltre, RAP è in piena evoluzione e le interfacce pubbliche delle sue classi vengono stravolte ad ogni rilascio (oltre ad esserci delle release nightly, nel prossimo periodo sono previste circa una release stable al mese), e talvolta anche le informazioni presenti nella guida ufficiale sul sito eclipse si sono rivelate non aggiornate e fuorvianti. Codice vecchio di 6 mesi trovato su internet, non funzionerebbe sulle versioni odierne di RAP, se non apportando notevoli modifiche, basta pensare che il protocollo di comunicazione in esame è stato aggiunto a RAP da poco più di un anno e oggi tutta l’architettura è basata su esso.

Alla fine, dopo aver ipotizzato e testato alcune probabili soluzioni, sono riuscito ad intercettare i messaggi del protocollo di RAP tramite una ServletFilter, che si occupa di intercettare tutto il traffico HTTP, in particolare i messaggi con Content-type: application/json.

Nel frattempo, scavando in rap-client.js (il lato client di rap), abbiamo trovato la funzione che si occupa del processing dei messaggi in arrivo e del rendering dei widget.

Abbiamo tutto il necessario per prendere il controllo di un applicazione RAP e replicarla in un altra.

Capitolo 4: Eclipse/RAP <-> Wikimedia

Work in progress…

API di MediaWiki