Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* Copyright 2006 Sun Microsystems, Inc.  All rights reserved.  You may not modify, use, reproduce, or distribute this software except in compliance with the terms of the License at: 
   http://developer.sun.com/berkeley_license.html
   $Id: RssServlet.java,v 1.6 2007/02/10 04:16:21 gmurray71 Exp $ 
  */
  
  package com.sun.jmaki.rss;
  
  import java.io.*;
  import java.util.*;
 
 import  javax.servlet.*;
 import  javax.servlet.http.*;
 import  javax.xml.transform.*;
 import  javax.xml.transform.stream.*;
 
 
 
 public class RssServlet extends HttpServlet {
 	
     private static String CACHE = "jmaki-rss-cache";
     private static boolean rDebug = false;
     private Logger logger = null;
     private ServletContext ctx;
     private XmlHttpProxy xhp;
     private String encoding = null;
     private long lastLoaded = 0;
     // default to reload once every 3 hours
     private long reloadInterval = 180000;

    
    
Creates a new instance of RssServlet

Author(s):
Yutaka Yoshida
Greg Murray
 
     public RssServlet() {
         if () {
              = .getLogger("rssFeed");
         }
     }
     
     public void init(ServletConfig configthrows ServletException {
 	    super.init(config);
          = config.getServletContext();
         // if there is a proxyHost and proxyPort specified create an HttpClient with the proxy
         String proxyHost = .getInitParameter("proxyHost");
         String proxyPortString = .getInitParameter("proxyPort");
          = .getInitParameter("encoding");
         if (proxyHost != null && proxyPortString != null) {
             int proxyPort = 8080;
             try {
                 proxyPortnew Integer(proxyPortString).intValue();
                  = new XmlHttpProxy(proxyHostproxyPort);
             } catch (NumberFormatException nfe) {
                 getLogger().severe("RssServlet: intialization error. The proxyPort must be a number");
                 throw new ServletException("RssServlet: intialization error. The proxyPort must be a number");
             }
         } else {
              = new XmlHttpProxy();
         }
         String reloadIntervalString = .getInitParameter("reload-interval");
         if (reloadIntervalString != null) {
             try {
                 new Long(reloadIntervalString).longValue();
             } catch (NumberFormatException nfe) {
                getLogger().severe("RssServlet: intialization error. The reload interval must be a number"); 
             }
         }
 	}
     
     public Logger getLogger() {
         if ( == null) {
              = Logger.getLogger("com.sun.jmaki.Log");
         }
         return ;
     }
     private void logMessage(String message) {
         if () {
             getLogger().info(message);
         }
     }
    
     public void doGet(HttpServletRequest req, HttpServletResponse res) {		
 		try {
 			OutputStream out = res.getOutputStream();
 			String urlString = req.getParameter("url");
             if (urlString == null) {
                 out.write("RSS Servlet Error: 'url' parameter to RSS feed required".getBytes());
                 out.flush();
                 return;
             }
 			String itemNumber = req.getParameter("itemNumber");
 			String format = req.getParameter("format");
 			getRssFeed(urlStringformatitemNumberout);
 		} catch (java.io.IOException iox) {
 			getLogger().severe("RssServlet: caught " + iox);
 		}
 	}
    
    public void getRssFeed(String urlString,
    					   String style,
    					   String itemNumber,
    					   OutputStream out,
                           ServletContext contextthrows IOException {
                               
           // first check the cach for the 
           Hashtable cache = (Hashtable)context.getAttribute();
           if (cache == null) {
               cache = new Hashtable();
               context.setAttribute(cache);
           }
           boolean reloadNeeded = false;
           long currentTime = System.currentTimeMillis();
           if ((currentTime - ) > ) {
               reloadNeeded = true;
           }
           
           String entry = null;
           
           // if the reload interval has not been reached return from the cache
           if (cache.containsKey(urlString) && !reloadNeeded) {
               entry = (String)cache.get(urlString);
           } else {
               if (style == null) {
                   style = "html";
               }
               
               if (itemNumber == null) {
                   itemNumber = "0";
               }
               
               Map paramMap = new HashMap();
               if (style != null) {
                   paramMap.put("style"style);
               }
               if (itemNumber != null) {
                   paramMap.put("number"itemNumber);
               }
               InputStream xslIS = RssServlet.class.getClassLoader().getResourceAsStream("META-INF/resources/rss.xsl");
               ByteArrayOutputStream bos = new ByteArrayOutputStream();
               .doGet(urlStringbosxslISparamMap);
               if ( == null) {
                   entry = bos.toString();
               } else {
                   entry = bos.toString();
               }
               cache.put(urlStringentry);
                = System.currentTimeMillis();
           }
           if (entry != null) {
            out.write(entry.getBytes());
           } else {
              getLogger().severe("RssServlet: " + urlString + " could not be loaded.");
           }
    }
New to GrepCode? Check out our FAQ X