In questo ultimo tutorial creiamo i feed RSS per il nostro blog. L'obiettivo finale è il seguente.
 

Se non li hai già letti puoi leggere i precedenti articoli parte 1, parte 2, parte 3 and parte 4 della serie.

 

 
 

Passo 1. Creiamo gli RSS feed

Nella nostra ultima personalizzazione, creiamo i feed rss dei nostri articoli.
 
Creiamo un metodo, "rss",  all'interno dello script dei post che restituisca il file rss, come mostrato nel codice seguente. 
Per essere accessibile dal browser questo metodo deve restituire un oggetto Resolution.
 
Per accedere al file basta semplicemente dare il nome del metodo come parametro, ad esempio http://localhost:8080/post?rss.
class MyCrudAction extends CrudAction {

...
    //***************************************
    // RSS
    //***************************************
    public Resolution rss() {
        setupSearchForm();
        loadObjects();
        DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss +S");
        Date lastDate = objects.size()>0?objects.get(0).date:new Date();
        XmlBuffer buffer = new XmlBuffer();
        buffer.writeXmlHeader("UTF-8");
        buffer.openElement("rss");
        buffer.addAttribute("version", "2.0");
        buffer.openElement("channel");
        buffer.openElement("title");
        buffer.write("My Blog");
        buffer.closeElement("title");
        buffer.openElement("description");
        buffer.write("My first blog with Portofino 4");
        buffer.closeElement("description");
        buffer.openElement("lastBuildDate");
        buffer.write(df.format(lastDate));
        buffer.closeElement("lastBuildDate");
        buffer.openElement("pubDate");
        buffer.write(df.format(lastDate));
        buffer.closeElement("pubDate");
        for (HashMap blog : objects){
            buffer.openElement("item");
            buffer.openElement("title");
            buffer.write((String) blog.title);
            buffer.closeElement("title");
            buffer.openElement("description");
            buffer.write((String) blog.summary);
            buffer.closeElement("description");
            buffer.openElement("link");
            String serverName = context.getRequest().getServerName();
            serverName+= (80!=context.getRequest().getServerPort()?"
:"+context.getRequest().getServerPort():"");
            buffer.write(serverName+"/posts/"+blog.id);
            buffer.closeElement("link");
            buffer.openElement("guid");
            buffer.write((String) blog.id);
            buffer.closeElement("guid");
            buffer.openElement("pubDate");
            buffer.write(df.format(blog.date));
            buffer.closeElement("pubDate");
            buffer.closeElement("item");
        }
        buffer.closeElement("channel");
        buffer.closeElement("rss");
        return new StreamingResolution("application/rss+xml", 
         buffer.toString());
    }
…
}
 
Il metodo compone un file xml secondo il formato per i feed rss. Per creare il testo dell'RSS abbiamo utilizzato la libreria XMLBuffer di ManyDesigns, che facilita la creazione di documenti XML.
Il risultato ha un mime type di tipo application/rss+xml
 
return new StreamingResolution("application/rss+xml",
 buffer.toString());
 
La Resolution finale non reindirizza ad una pagina jsp come nei tutorial precedenti, ma restituisce uno Stream con il documento xml.
Collegandoci all'indirizzo http://localhost:8080/post?rss possiamo vedere il file rss.
 

comments powered by Disqus