/* * JDynamiTe - Dynamic Template in Java * Copyright (C) 2001, 2002, 2014, Christophe Bouleau * * This file is part of JDynamiTe. * * JDynamiTe is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * JDynamiTe is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with JDynamiTe. If not, see . * */ package cb.jdynamite.examples; import java.io.IOException; import java.io.PrintWriter; import java.util.Hashtable; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cb.jdynamite.JDynamiTe; import cb.jdynamite.tool.JDynTool; public class RSSReaderServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final String INPUT_TEMPLATE = "RSSReader/input/templ_RSS_Feed_param.html"; private static final String INPUT_URI_PROPOSAL = "RSSReader/input/RSS_feed_URI_list.xml"; private static final String CSS = "jDyn_example.css"; private static final String CSS_PATH_VAR_TAG = "__CSS__"; private static final String FEED_URI_CHOICE = "feedURIChoice"; private static final String FEED_URI_PROPOSAL = "feedURIProposal"; private static final String FEED_URI_CHOICE_TAG = "FEED_URI_CHOICE"; private static final String INPUT_URI_PROPOSAL_PATH_TAG = "INPUT_URI_PROPOSAL_PATH"; private static final String DEFAULT_FEED_URI = "http://feeds.bbci.co.uk/news/science_and_environment/rss.xml"; private static final String CLEAR_CACHE_CHECK = "clearCache"; private String selectedURI; private String xmlInputProposalPath; private Hashtable keyValuesList; private boolean verbose = true; private JDynTool jDynTool; private JDynamiTe jDyn; private String clearCacheCheck; public RSSReaderServlet() { super(); if (verbose) System.out.println("RSSReaderServlet.RSSReaderServlet()"); jDynTool = new JDynTool(); keyValuesList = new Hashtable(); keyValuesList.put(RSSReaderServlet.CSS_PATH_VAR_TAG, RSSReaderServlet.CSS); keyValuesList.put(JDynTool.INPUT_TEMPLATE_PATH_VAR_TAG, RSSReaderServlet.INPUT_TEMPLATE); keyValuesList.put("THE_TITLE", "JDynamiTe RSSReaderServlet Example"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { if (verbose) System.out.println("RSSReaderServlet.doGet()"); selectedURI = request.getParameter(RSSReaderServlet.FEED_URI_PROPOSAL); if (selectedURI == null) selectedURI = request.getParameter(RSSReaderServlet.FEED_URI_CHOICE); if (selectedURI == null) { selectedURI = RSSReaderServlet.DEFAULT_FEED_URI; } keyValuesList.put(RSSReaderServlet.FEED_URI_CHOICE_TAG, selectedURI); if (xmlInputProposalPath == null) { xmlInputProposalPath = request.getSession().getServletContext().getRealPath(RSSReaderServlet.INPUT_URI_PROPOSAL); keyValuesList.put(RSSReaderServlet.INPUT_URI_PROPOSAL_PATH_TAG, xmlInputProposalPath); } if (jDyn == null) { String inputTemplateFile = request.getSession().getServletContext().getRealPath(RSSReaderServlet.INPUT_TEMPLATE); jDyn = jDynTool.run(inputTemplateFile, null, keyValuesList, verbose); } else { clearCacheCheck = request.getParameter(RSSReaderServlet.CLEAR_CACHE_CHECK); System.err.println("clearCacheCheck=" + clearCacheCheck); if (clearCacheCheck != null) { jDyn.resetExternalXMLDocuments(); // clear cache XML doc. list } jDyn = jDynTool.run(null, keyValuesList, verbose); } PrintWriter out = response.getWriter(); if (jDyn != null) { // Check if an error occurred. /* Note that the special variable tag "{__LAST_JDYN_ERROR__}" is automatically populated by JDynamiTe, after parsing Dynamic Elements. * So if this tag is included in your template, it will automatically contain the error message (if any, else it is empty). * Errors can typically happen when an external XML input document can not be open. */ String error = jDyn.getLastError(); if (error != null) System.err.println("Error JDyn: " + error); // Send final document out.println(jDyn.toString()); } else { System.err.println("Error: can not run JDynamiTe RSSReaderServlet example: invalid input template file !!!"); response.sendError(HttpServletResponse.SC_NOT_FOUND, "JDynamiTe RSSReaderServlet error: can not find template: " + RSSReaderServlet.INPUT_TEMPLATE); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { if (verbose) System.out.println("RSSReaderServlet.doPost()"); doGet(request, response); } }