[Lutinweb-commits] r35 - trunk/lutinrss/src/main/java/org/codelutin/rss
Author: tchemit Date: 2008-05-15 22:11:24 +0000 (Thu, 15 May 2008) New Revision: 35 Modified: trunk/lutinrss/src/main/java/org/codelutin/rss/RSSServlet.java Log: mutualisation du code javascript avec la methode getJs amelioration du script : * forceReload est aussi un attribut * permettre ?\195?\160 l'url de contenir un ? * utilisation function anonyme pour le window.load Modified: trunk/lutinrss/src/main/java/org/codelutin/rss/RSSServlet.java =================================================================== --- trunk/lutinrss/src/main/java/org/codelutin/rss/RSSServlet.java 2008-05-15 08:20:56 UTC (rev 34) +++ trunk/lutinrss/src/main/java/org/codelutin/rss/RSSServlet.java 2008-05-15 22:11:24 UTC (rev 35) @@ -34,90 +34,83 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ private static final Log log = LogFactory.getLog(RSSServlet.class); - /** * L'objet permettant de recupérer la representation HTML d'un feed */ protected transient RSSHelper rss; /** * Le code JavaScript a utilise dans les pages clientes - * - * Provient du fichier rssinclude.js - * cat rssinclude.js |sed 's/"/\\"/g' |sed -re 's/^(.*)$/"\1\\n" +/' + * + * Provient du fichier rssinclude.js + * cat rssinclude.js |sed 's/"/\\"/g' |sed -re 's/^(.*)$/"\1\\n" +/' */ - protected String js = - "function rssincludeUpdateDiv(div, background, forceReload) {\n" + - " // mettre background a false est utile lorsque l'on appelle la methode\n" + - " // depuis une fenetre que l'on ferme ensuite\n" + - "\n" + - " var serlvetUrl = \"%1$s\";\n" + - "\n" + - " var win = window;\n" + - "\n" + - " var xhr = null;\n" + - " if(win.XMLHttpRequest) // Firefox\n" + - " xhr = new win.XMLHttpRequest();\n" + - " else if(win.ActiveXObject) // Internet Explorer\n" + - " xhr = new win.ActiveXObject(\"Microsoft.XMLHTTP\");\n" + - " else { // XMLHttpRequest non supporté par le navigateur\n" + - " var error = \"<span class='feed-error'>Votre navigateur ne supporte pas les objets XMLHTTPRequest...</span>\";\n" + - " }\n" + - "\n" + - " if (error) {\n" + - " div.innerHTML = error;\n" + - " } else {\n" + - " div.innerHTML = \"Loading \" + feedName;\n" + - "\n" + - " var feedName = div.getAttribute(\"feedName\");\n" + - " var url = serlvetUrl + \"?feedName=\" + escape(feedName);\n" + - "\n" + - " var nbItem = div.getAttribute(\"nbItem\");\n" + - " if (!!nbItem) {url += '&nbItem=' + escape(nbItem);}\n" + - "\n" + - " var feedRepr = div.getAttribute(\"feedRepr\");\n" + - " if (!!feedRepr) {url += '&feedRepr=' + escape(feedRepr);}\n" + - "\n" + - " if (forceReload) {\n" + - " forceReload = 'true';\n" + - " } else {\n" + - " forceReload = 'false';\n" + - " }\n" + - "\n" + - " xhr.open(\"GET\", url, !!background);\n" + - " xhr.onreadystatechange = function() {\n" + - " if(xhr.readyState == 4) {\n" + - " div.innerHTML = xhr.responseText;\n" + - " }\n" + - " }\n" + - " xhr.send(null);\n" + - " }\n" + - "}\n" + - "\n" + - "function rssinclude() {\n" + - " var divs = document.getElementsByName(\"rssinclude\");\n" + - " var i = 0;\n" + - " while (i < divs.length) {\n" + - " var div = divs[i++];\n" + - " rssincludeUpdateDiv(div, true);\n" + - " }\n" + - "}\n" + - "\n" + - "window.addEventListener( 'load', rssinclude, true );\n"; - + protected static String js = + "function rssincludeUpdateDiv(div, background) {\n" + + " // mettre background a false est utile lorsque l'on appelle la methode\n" + + " // depuis une fenetre que l'on ferme ensuite\n" + + " var serlvetUrl = \"%1$s\"; \n" + + " win = window;\n" + + " var xhr = null;\n" + + " var error=null;\n" + + " var feedName = div.getAttribute(\"feedName\");\n" + + " if (!feedName) // pas de feed name, fatal error\n" + + " error = \"<span class='feed-error'>Aucun feed name detecte...</span>\"; \n" + + " else if(win.XMLHttpRequest) // Firefox, Opera detected\n" + + " xhr = new win.XMLHttpRequest();\n" + + " else if(win.ActiveXObject) // Internet Explorer detected\n" + + " xhr = new win.ActiveXObject(\"Microsoft.XMLHTTP\");\n" + + " else // XMLHttpRequest non supporte par le navigateur\n" + + " error = \"<span class='feed-error'>Votre navigateur ne supporte pas les objets XMLHTTPRequest...</span>\"; \n" + + " if (!!error) { div.innerHTML = error; return; } \n" + + " \n" + + " var nbItem = div.getAttribute(\"nbItem\");\n" + + " var feedRepr = div.getAttribute(\"feedRepr\"); \n" + + " var forceReload = div.getAttribute(\"forceReload\"); \n" + + " var url = serlvetUrl+(serlvetUrl.indexOf('?')>-1?'&':'?')+\"feedName=\" + escape(feedName); \n" + + " if (!!nbItem) {url += '&nbItem=' + escape(nbItem);} \n" + + " if (!!feedRepr) {url += '&feedRepr=' + escape(feedRepr);}\n" + + " if (!!forceReload) {url += '&forceReload=true';}\n" + + "\n" + + " xhr.container=div;\n" + + " xhr.open(\"GET\", url, !!background);\n" + + " xhr.onreadystatechange = function() {\n" + + " if(this.readyState == 1) this.container.innerHTML = \"Chargement du flux '\"+this.container.getAttribute(\"feedName\")+\"'\";\n" + + " if(this.readyState == 4) this.container.innerHTML = this.responseText;\n" + + " }\n" + + " xhr.send(null);\n" + + "}\n" + + "window.addEventListener( 'load', function () {\n" + + " var divs = document.getElementsByName(\"rssinclude\");\n" + + " var i = 0;var max=divs.length;\n" + + " while (i < max) {\n" + + " var div = divs[i++];\n" + + " rssincludeUpdateDiv(div, true);\n" + + " }\n" + + "},true);\n"; + private static final long serialVersionUID = 1L; + /** + * @param url current url to add in script + * @return the rssinclude script, patched with url + */ + public static String getJs(String url) { + String code = String.format(js, url); + return code; + } @Override public void init(ServletConfig config) throws ServletException { - init(config,true); + init(config, true); } - public void init(ServletConfig config,boolean initRssConfig) throws ServletException { + public void init(ServletConfig config, boolean initRssConfig) throws ServletException { try { super.init(config); if (initRssConfig) { // init depuis la config de servlet new RSSConfig.RSSConfigInitializer<ServletConfig>() { + @Override protected String getConfigValue(ServletConfig config, String fullConfigName) { return config.getInitParameter(fullConfigName); @@ -130,28 +123,28 @@ } catch (Exception eee) { log.warn("Can't configure Servlet", eee); if (eee instanceof ServletException) { - throw (ServletException)eee; + throw (ServletException) eee; } throw new ServletException("Can't configure Servlet", eee); } } /** - * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. - * @param request servlet request - * @param response servlet response + * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. + * @param request servlet request + * @param response servlet response * @throws java.io.IOException TODO * @throws ServletException TODO - */ + */ public void processRequest(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + throws ServletException, IOException { String feedName = request.getParameter("feedName"); if (feedName == null || "".equals(feedName)) { // on renvoie le code js response.setContentType("text/plain;charset=UTF-8"); PrintWriter out = response.getWriter(); try { - String code = String.format(js, request.getRequestURL().toString()); + String code = getJs(request.getRequestURL().toString()); out.println(code); } finally { out.close(); @@ -174,38 +167,38 @@ Integer result = null; try { result = Integer.parseInt(parameter); - } catch(Exception eee) { - log.debug("Can't convert to int: '" + parameter + "'" , eee); + } catch (Exception eee) { + log.debug("Can't convert to int: '" + parameter + "'", eee); } return result; } - // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> + /** - * Handles the HTTP <code>GET</code> method. - * @param request servlet request - * @param response servlet response - */ + * Handles the HTTP <code>GET</code> method. + * @param request servlet request + * @param response servlet response + */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + throws ServletException, IOException { processRequest(request, response); } /** - * Handles the HTTP <code>POST</code> method. - * @param request servlet request - * @param response servlet response - */ + * Handles the HTTP <code>POST</code> method. + * @param request servlet request + * @param response servlet response + */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + throws ServletException, IOException { processRequest(request, response); } /** - * Returns a short description of the servlet. - */ + * Returns a short description of the servlet. + */ @Override public String getServletInfo() { return "RSS Servlet";
participants (1)
-
tchemit@users.labs.libre-entreprise.org