romelogo-small

Je suis en phase d’apprentissage du génialissime framework Play! de Guillaume Bort, et j’ai voulu faire un peu comme un blog WordPress, et avoir un flux RSS disponible pour permettre aux utilisateurs de s’abonner et être au courant des nouveautées sur le site.

Je n’ai pas l’habitude de faire des sites web en Java, puisque jusqu’à maintenant, pour moi, faire un site web en java était plutôt une expérience maso. Pourquoi me prendre la tête avec des frameworks complexe, inadapté au web grand publique, lourd, et avec peu de solution d’hébergement à bas coût pour les application Java? En effet quel hébergeur a envie de maintenir un stack java JEE complet très consommateur en ressources (mémoire entre autre…) et complexe à géré?

Bref, pour moi, le framework Play! a changé tout çà! :-)

Le Play! Framework

Play! me permet de créer une application web facilement, que je peux héberger gratuitement chez Google via l’utilisation du module « GAE » (Google App Engine).

Plutôt facile d’utilisation, le framework play! me permet en quelques minute de créer une application web de cette façon :

marcus@MacBook:~/tmp > play new monappli
~        _            _
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/
~
~ play! 1.0.2, http://www.playframework.org
~
~ The new application will be created in /Users/marcus/tmp/monappli
~ What is the application name? monappli
~
~ OK, the application is created.
~ Start it with : play run monappli
~ Have fun!
~
marcus@MacBook:~/tmp >

Maintenant, je n’ai qu’à réaliser mon application web qui va révolutionner le monde :-)

RSS : Tous les chemins mènent à ROME

Pour créer mon flux RSS j’ai utilisé la librairie ROME qui semble être la plus complète. Je n’en suis pas certain, mais cette librairie semble être supporté par SUN, puisque les packages commencent tous par com.sun.syndication.

Info : ROME nécessite la librairie JDOM

Voici comment se découpe les phases de création d’un flux avec ROME :

  1. Créer le flux et le configurer
  2. Ajouter les items au flux
  3. Sérialiser le flux

Créer le flux et le configurer

SyndFeed feed = new SyndFeedImpl();
feed.setAuthor("Marc Deschamps");
// Quelques types de flux supporté : rss_1.0, atom_1.0 (voir https://rome.dev.java.net/ pour tous les types)
feed.setFeedType("rss_2.0");
feed.setCopyright("Flex IT All right reserved 2010");
feed.setDescription("RSS Feed of Hosted Projects on organzr.com");
// Dans play, request.getBase() retourne l'addresse web du site jusqu'à la racine
// par exemple : http://localhost:9000/
feed.setLink(request.getBase() + "/projects/index");
feed.setTitle("Organzr Projects Feed");
feed.setLanguage("en");
feed.setPublishedDate(new Date());

Ajouter des items au flux

// Récupération de données depuis votre Base de données...
List projects = Project.findAll();
List entries = new ArrayList();
for (Project project : projects) {
	SyndEntry item = new SyndEntryImpl();
	item.setPublishedDate(project.creationDate);
	item.setTitle(project.name);
	SyndContent content = new SyndContentImpl();
	content.setType("text/plain");
	content.setValue(project.description);
	item.setDescription(content);
	item.setLink(request.getBase() + "/projects/view/" + project.id);
	entries.add(item);
}
feed.setEntries(entries);

Sérialiser le flux

StringWriter writer = new StringWriter();
SyndFeedOutput out = new SyndFeedOutput();
try {
	out.output(feed, writer);
} catch (IOException e) {
	flash("error", "Erreur d'entré/sortie (StringWriter) lors de la sérialisation du flux : " + e.getMessage());
} catch (FeedException e) {
	flash("error", "Erreur lors de la sérialisation du flux : " + e.getMessage());
}
// Nécessaire pour certains lecteurs de fluxs...
response.contentType = "application/rss+xml";
// retourne un statut http 200 en plus du contenu xml en paramètre
renderXml(writer.toString());

Conclusion

L’exemple donné est simple et facile, maintenant, je ne décris pas comment intégrer tout çà dans le framework play, mais bon, ce n’est pas le but de ce billet.

Psst, ajouter une ligne dans le fichier route :

GET /rss MonControlleur.rss

;-)

Une réponse à to “Play! Framework et le RSS | Comment produire un flux RSS”

Laisser un commentaire

Catégories