Staxで今度こそRSSフィードを纏め上げる(後は文字コード問題)

TarotarorgFeedPage

  1. package org.tarotaro.java.wicket.feed;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.net.MalformedURLException;
  6. import java.net.URL;
  7.  
  8. import org.apache.wicket.PageParameters;
  9. import org.apache.wicket.Response;
  10. import org.apache.wicket.markup.MarkupStream;
  11. import org.apache.wicket.markup.html.WebPage;
  12.  
  13. import com.sun.syndication.feed.synd.SyndFeed;
  14. import com.sun.syndication.io.FeedException;
  15. import com.sun.syndication.io.SyndFeedOutput;
  16.  
  17. public class TarotarorgFeedPage extends WebPage {
  18.  
  19.     private FeedManager feedManager;
  20.  
  21.     /**
  22.      * @param parameters
  23.      */
  24.     public TarotarorgFeedPage(PageParameters parameters) {
  25.         this.feedManager = new FeedManager();
  26.         for(TarotarorgFeeds f:TarotarorgFeeds.values()) {
  27.             try {
  28.                 this.feedManager.addFeed(new URL(f.getUri()));
  29.             } catch (MalformedURLException e) {
  30.                
  31.             }
  32.         }
  33.     }
  34.  
  35.     @Override
  36.     protected void onRender(MarkupStream markupStream) {
  37.         Response resp = this.getResponse();
  38.         resp.setContentType("application/xml; charset=UTF-8");
  39.         PrintWriter pw = new PrintWriter(resp.getOutputStream());
  40.  
  41.         SyndFeedOutput sfo = new SyndFeedOutput();
  42.         try {
  43.             sfo.output(this.getFeed(), pw);
  44.         } catch (IOException e) {
  45.             throw new RuntimeException("Error Streaming Feed",e);
  46.         } catch (FeedException e) {
  47.             throw new RuntimeException("Error Streaming Feed",e);
  48.         }
  49.     }
  50.  
  51.     private SyndFeed getFeed() {
  52.         SyndFeed sf = this.feedManager.getFeed();
  53.         sf.setFeedType("rss_2.0");
  54.         sf.setLanguage("japanese");
  55.         sf.setTitle("tarotarorg feeds");
  56.         sf.setLink("http://tfeed.tarotarorg.staxapps.net");
  57.         sf.setDescription("all feeds of tarotarog");
  58.  
  59.         return sf;
  60.     }
  61.  
  62.     @Override
  63.     public String getMarkupType() {
  64.         return "xml";
  65.     }    
  66. }
タイトルとURLをコピーしました