Affichage des articles dont le libellé est gwt. Afficher tous les articles
Affichage des articles dont le libellé est gwt. Afficher tous les articles

samedi 28 mars 2009

I am an Eclipse committer !

Depuis très peu de temps, je participe à un projet qui me semble avoir un intérêt particulier: UFaceKit

Le but premier de ce projet est d'abstraire la couche graphique des applications et donc de permettre de passer d'une interface graphique de type client riche SWING à GWT ou d'Eclipse RCP à Q4 etc...
Le background de ce projet entre dans le cadre des projets actuels qui visent à radicalement revoir l'approche de la réalisation des projets.
Alors il est vrai que rien ne prouve que cette façon d'appréhender la refonte de la conception des projets IT est la bonne façon de faire qui va percer dans les prochaines années.
Mais plusieurs points m'ont poussés à prendre en charge certains besoins du projet:
  • Le leader du projet n'est autre que le fabuleux Tom Schindl de bestsolution.at et j'ai la conviction qu'en travaillant aux côtés des meilleurs on apprend énormément
  • Un des besoins de l'équipe projet est un coup de main sur la partie GWT, réalisation de l'équivalent des viewers JFace et des layout pour GWT natif et smartGWT
  • Le projet est un projet Eclipse et il entre dans le cadre du projet Eclipse e4, le futur de la plateforme Eclipse qui est géré par les plus grands de l'écosystème, tout simplement.
Après avoir échangé avec les membres de l'équipe et plus particulièrement avec Tom Schindl par mail, chat et bugzilla, j'ai réalisé les premiers développements.

Ma première tache et non des moindre a été de créer un environnement de travail pour développer sur ce projet.
Pas si simple de comprendre le fonctionnement d'un projet qui existe déjà depuis plusieurs mois.
Puis il a fallu commencer à travailler et coder l'équivalent des viewers JFace pour GWT natif puis pour smartGWT (=librairie GWT de composant graphiques et de facilitant pour le développement)
Dans le même temps, les exemples permettant de tester ces développements ont été mis à disposition.

N'ayant pas les accès pour committer le travail sur SVN, j'envoyais le tout par pièces jointes sur bugzilla et par mail.
Je bataillais donc pour commencer au plus tôt le process d'élection afin de devenir committer et ainsi pouvoir plus simplement mettre à disposition le travail réalisé.

Mais pour devenir committer il ne suffit pas de demander, il faut évidemment faire ses preuves et être crédible quand aux compétences que l'on prétend mettre à disposition.
Le contrat était simple, une fois les exemples mis à disposition et validés, le process d'élection commencerait.
J'ai donc ajouté à mes projets des vidéos interactive réalisées avec wink afin d'aider les membres de l'équipe à tester ces exemples.

Le process d'élection a démarré au démarrage d'EclipseCon2009. Je ne sais pas si cela est lié au fait que j'en avais touché 2 mots à un ami, Olivier Moises, qui se rendait à l'événement et qui connaissait Tom, mais dans tous les cas, maintenant j'ai le statut d'Eclipse Committer sur le projet UFaceKit qui est au stade d'incubation.

Une fois élu, ce n'est pas du tout cuit ! En effet, c'est un engagement sur la réalisation de diverses taches liées au projet.

Pour valider le process il faut remplir un accord individuel ainsi qu'un accord avec son employeur si vous êtes dans le même cas que moi. Le but de cet accord est de protéger la communauté Eclipse en prévenant tout conflit juridique.

J'en suis à ce stade ci, j'ai en ma possession l'accord signé de mon employeur ainsi que l'accord individuel, reste à envoyer le tout à la fondation Eclipse.

La suite au prochain épisode...

samedi 7 février 2009

GWT 1.6 M1 Release

Hi every GWT fans !

Just a post to relay the GWT 1.6 M1 release yesterday !

Here is the original announce on the GWT group:

http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/3e7e6cc3b35ad98a

You can download it on the GWT download page:

http://code.google.com/p/google-web-toolkit/downloads/list?can=1&q=1.6.0

Or here directly if you can wait to get it :

http://google-web-toolkit.googlecode.com/files/gwt-windows-1.6.0.zip

To remember you, here is the GWT 1.6 roadmap from the google web site here:

http://code.google.com/intl/fr/webtoolkit/makinggwtbetter.html#roadmap

Release 1.6

Anticipated Time Frame - Q1 2009

  • New compiled file deployment structure
    • Easily compile into a WAR file, making it easy to deploy your compiled GWT application into standard servlet containers
  • Migration from Tomcat to Jetty hosted mode server
    • A more pluggable architecture for the hosted mode server will enable developers to use servlet containers other than Tomcat with the Hosted Mode browser
  • Uniform event handlers
    • Event handlers will be implemented in a uniform fashion across all widgets, with listeners deprecated
  • DatePicker, LazyPanel migrated in from incubator
    • New widgets from the incubator
  • String performance improvements
    • StringBuilder uses deferred binding to optimize string appends per-browser
  • Compiler performance improvements
    • 1.6 will introduce parallel permutation compilations and other performance tweaks for faster compiles
Hope that helps !

dimanche 16 novembre 2008

GWT && ( ACEGI || Spring Security )

Il y a quelques temps, j'ai eu pour mission d'ACEGIfier une application Web en GWT.
Le but premier était de sécuriser l'accès aux ressources concernant l'affichage ! Alors pour ce qui est de sécuriser les services exposés etc. ce n'est pas l'objet de ce billet !

Etape 1/
Après quelques recherches sur mon ami google, j'ai pu rapidement me rendre compte qu'il était plutôt préconisé d'utiliser une page html/jsp autonome pour s'authentifier. Soit, n'étant pas un fervent défenseur du tuning applicatif, je n'ai pas perdu de temps avec ça, j'avais bien assez à faire avec ACEGI lui même.
cf:http://www.dotnetguru2.org/bmarchesson/index.php?c=1&more=1&pb=1&tb=1&title=technical_tip_using_acegi_with_gwt
Voici le résultat, pas folichon, n'est ce pas ?! Mais c'est rapide et fonctionnel !

Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>My Login Page</title>
</head>
<body>
<h2>Please log in</h2><br>
<form method="POST" action="j_acegi_security_check">
Username: <input type="text" name="j_username"><br>
Password: <input type="password" name="j_password"><br>
<input type="submit" value="Log in >>">
</form>
</body>
</html>

Image:

Etape 2/
Après coup, je me suis aperçu que ma page HTML de login était quelque peu en décalage avec l'application, feuille de style, internationalisation des libellés... J'ai donc réalisé un écran GWT d'authentification d'après le HOWTO d'Instantiations.com ! J'ai ensuite affiché cet écran dans firefox et avec firebug j'ai pu récupérer le code HTML correspondant... Mais ce n'est pas terminé, après quoi, il a fallut ACEGIfier le code HTML.

Je vous passe le code... c'est du GWT et c'est plutôt verbeux !

Image (lors d'une authentification erronée) :





Etape 3/
L'application et l'écran de login étaient donc en phase ! Enfin, jusqu'à ce que je me rende compte que l'écran de login s'affichait différent en fonction des navigateurs... En effet, dans ie6, la fenêtre était déformée ! Normal, GWT ne sert donc pas a rien, il adapte le code HTML en fonction du navigateur... et ayant copier coller le code HTML depuis firefox... bref, il me fallait trouver une autre solution: un module GWT d'authentification !

En ajoutant un module d'authentification dans mon projet GWT, je suis certain de ne plus avoir de problèmes d'affichage ! Et je peux lui appliquer le même style que l'application principale ! Et je peux internationaliser l'authentification de la même façon ! Par contre, je dois modifier ma configuration ACEGI pour authoriser l'accès au fichiers GWT du module de login mais pas au reste de l'application !

J'utilise un FormPanel classique de GWT (pas GWT-EXT) et je le configure pour ACEGI (j_username, j_password, j_acegi_security_check, POST) rien de plus !

Voici le résultat, pas tellement différent qu'à l'étape 2 me direz vous, mais le gain se situe au niveau de la maintenabilité et l'homogénéitéde l'application !

Code :
A venir
Rapidement:
Il faut utiliser un FormPanel de GWT natif.

FormPanel form = new FormPanel();
form.setAction("j_acegi_security_check");

on le configure pour la méthode POST

on ajoute les 2 composants de saisi du login / pass en leur donnant des noms particuliers : j_username et j_password

un bouton de validation avec un listener qui submit : form.submit();

et voila...

Image :

Etape 4/
Il faut maintenant modifier le tout pour créer un module d'authentification autonome et non embarquer dans mon application... Histoire de le réutiliser de la même façon dans d'autres applications avec du SSO par exemple. La suite au prochain épisode !