KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openi > web > RssFeedGeneratorServlet


1 /*********************************************************************************
2  * The contents of this file are subject to the OpenI Public License Version 1.0
3  * ("License"); You may not use this file except in compliance with the
4  * License. You may obtain a copy of the License at
5  * http://www.openi.org/docs/LICENSE.txt
6  *
7  * Software distributed under the License is distributed on an "AS IS" basis,
8  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
9  * the specific language governing rights and limitations under the License.
10  *
11  * The Original Code is: OpenI Open Source
12  *
13  * The Initial Developer of the Original Code is Loyalty Matrix, Inc.
14  * Portions created by Loyalty Matrix, Inc. are
15  * Copyright (C) 2005 Loyalty Matrix, Inc.; All Rights Reserved.
16  *
17  * Contributor(s): ______________________________________.
18  *
19  ********************************************************************************/

20 package org.openi.web;
21
22 import org.apache.log4j.Logger;
23
24 import org.openi.menu.Menu;
25 import org.openi.project.ProjectContext;
26 import org.openi.util.Util;
27 import org.openi.xml.BeanStorage;
28 import org.openi.xml.RssFeedGenerator;
29 import org.openi.xml.XMLTransformer;
30
31 import java.io.FileInputStream JavaDoc;
32 import java.io.IOException JavaDoc;
33 import java.io.InputStream JavaDoc;
34 import java.io.StringBufferInputStream JavaDoc;
35
36 import javax.servlet.http.HttpServletRequest JavaDoc;
37 import javax.servlet.http.HttpServletResponse JavaDoc;
38 import javax.xml.transform.TransformerException JavaDoc;
39
40
41 /**
42  * The idea is to enable rss feeds from OpenI content. This improves
43  * interoperability with any of the various rss feed clients out there.
44  *
45  * TODO: generate an rss feed based on a user's menu.
46  *
47  * Only issue right now is how handle authentication, particularly from an rss client.
48  *
49  * @author paul
50  *
51  */

52 public class RssFeedGeneratorServlet extends javax.servlet.http.HttpServlet JavaDoc {
53     private static Logger logger = Logger.getLogger(RssFeedGeneratorServlet.class);
54
55     public void service(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) {
56         try {
57             String JavaDoc encoding = request.getParameter("encoding");
58
59             if (request.getParameter("static") != null) {
60                 RssFeedGenerator.exportFeed(response.getWriter(),
61                     RssFeedGenerator.createStaticChannel(), encoding);
62             }else{
63                     String JavaDoc xml = null;
64                     String JavaDoc menu = request.getParameter("menu");
65                     ProjectContext context = (ProjectContext)request.getSession().getAttribute("projectContext");
66                     if(menu == null){
67                         xml = new BeanStorage().toXmlString(context.buildMenu());
68                     }else{
69                         xml = new BeanStorage().toXmlString(context.buildMenu().getSubMenu(menu));
70                     }
71                     
72                     String JavaDoc xsl = Util.getFileContents(this.getServletContext()
73                             .getRealPath("WEB-INF/openi/menu2rss.xsl"));
74                     
75                     String JavaDoc rss = XMLTransformer.transform(xsl, xml);
76                     response.getWriter().write(rss);
77             }
78         } catch (IOException JavaDoc e) {
79             logger.error(e);
80         } catch (TransformerException JavaDoc e) {
81             logger.error(e);
82         }
83     }
84     
85
86 }
87
Popular Tags