
J’ai présenté au BreizhCamp 2013, une approche possible pour la mise en place de la programmation fonctionnelle avec du java d’aujourd’hui, java 6 ou 7.
Le code source est disponible sur github :
https://github.com/dgouyette/breizhcamp2013
La présentation est disponible sur slideshare :
http://fr.slideshare.net/cestpasdur/breizh-camp2013-programmationfonctionellejava
Dans l’article précédent, je vous ai donné la définition suivante pour le type option :
Option : type polymorphique représentant l’encapsulation d’une valeur optionnelle. Ce type est utilisé en retour de méthode pour signifier que celle-ci retourne ou non une valeur significative.
Le type Either est l’encapsulation de l’appel à une méthode pouvant échouer.
Exemple de validation d’un mot de passe :
Ci-dessous l’exemple de code :
public void matchPassword(String pwd) {
if (pwd == null || "".equals(pwd))
throw new ValidationException("Invalid password");
//
// The password entered by the customer is not the same stored in database
if (!pwd.equals(password))
throw new ValidationException("Passwords don't match");
}
Le code de cette méthode indique que si le mot de passe est correct, ne rien faire. Si le mot de passe ne correspond pas, ou est vide, celle-ci va retourner une exception portant un message d’erreur.
Si l’on regarde la signature de la méthode, celle ci ne retourne rien, et pas de checked exception en signature.
Ce n’est pas “très expressif”, voyons comment Either peux nous aider à rendre cette méthode plus parlante.
Cet article va vous présenter le type option, et ses différents cas d’usage.
Il sera illustré d’exemples mis en place sur un fork du java petstore d’Antonio GONCALVES

J’ai développé il y a quelques années un système de réservation en ligne pour un hôtel en Guadeloupe
Cette version est basée sur les technologies classiques java / JEE :
La nouvelle version du système de réservation disponible ici
Si comme moi vous gérez la maintenance d’applications play 1.2 et play 2 vous devez régulièrement basculer d’une version à une autre du framework.
Il est possible de faire çà directement en modifiant la path afin qu’il pointe sur la bonne version de play.
Mais il existe une solution plus simple, homebrew peut venir à votre rescousse.
Cette oeuvre est mise à disposition selon les termes de la Licence Creative Commons Paternité -
Pas d'Utilisation Commerciale - Partage à l'Identique 3.0 non transcrit.
juin 2013 (1)