001 package com.khubla.pragmatach.examples.rssviewer; 002 003 import java.net.HttpURLConnection; 004 import java.net.URL; 005 006 import com.khubla.pragmatach.framework.annotation.Controller; 007 import com.khubla.pragmatach.framework.annotation.Route; 008 import com.khubla.pragmatach.framework.annotation.Route.HttpMethod; 009 import com.khubla.pragmatach.framework.annotation.View; 010 import com.khubla.pragmatach.framework.api.PragmatachException; 011 import com.khubla.pragmatach.framework.api.Response; 012 import com.khubla.pragmatach.plugin.freemarker.FreemarkerController; 013 import com.sun.syndication.feed.synd.SyndFeed; 014 import com.sun.syndication.io.SyndFeedInput; 015 import com.sun.syndication.io.XmlReader; 016 017 @Controller() 018 @View(view = "showfeed.html") 019 public class ShowFeedController extends FreemarkerController { 020 /** 021 * the URL 022 */ 023 private String feedURL; 024 /** 025 * the feed 026 */ 027 private SyndFeed syndFeed; 028 029 public String getFeedURL() { 030 return feedURL; 031 } 032 033 public SyndFeed getSyndFeed() { 034 return syndFeed; 035 } 036 037 public void setFeedURL(String feedURL) { 038 this.feedURL = feedURL; 039 } 040 041 public void setSyndFeed(SyndFeed syndFeed) { 042 this.syndFeed = syndFeed; 043 } 044 045 @Route(uri = "/showfeed", method = HttpMethod.post) 046 public Response showFeed() throws PragmatachException { 047 try { 048 if (null != feedURL) { 049 /* 050 * get feed 051 */ 052 final URL url = new URL(feedURL); 053 final HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 054 /* 055 * parse it 056 */ 057 final SyndFeedInput input = new SyndFeedInput(); 058 syndFeed = input.build(new XmlReader(httpURLConnection)); 059 } 060 /* 061 * render 062 */ 063 return super.render(); 064 } catch (final Exception e) { 065 throw new PragmatachException("Exception in showFeed", e); 066 } 067 } 068 }