diff --git a/.classpath b/.classpath
index 53d7722..53930f2 100644
--- a/.classpath
+++ b/.classpath
@@ -7,8 +7,6 @@
-
-
diff --git a/lib/commons-fileupload-1.2.1.jar b/lib/commons-fileupload-1.2.1.jar
deleted file mode 100644
index aa209b3..0000000
Binary files a/lib/commons-fileupload-1.2.1.jar and /dev/null differ
diff --git a/lib/servlet-api.jar b/lib/servlet-api.jar
deleted file mode 100644
index dd326d3..0000000
Binary files a/lib/servlet-api.jar and /dev/null differ
diff --git a/src/fr/devinsy/kiss4web/CookieHelper.java b/src/fr/devinsy/kiss4web/CookieHelper.java
deleted file mode 100644
index 49328bb..0000000
--- a/src/fr/devinsy/kiss4web/CookieHelper.java
+++ /dev/null
@@ -1,176 +0,0 @@
-package fr.devinsy.kiss4web;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-
-/**
- *
- */
-public class CookieHelper
-{
- static protected org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger (CookieHelper.class);
-
- /**
- *
- */
- static public Cookie buildCookie (String name, String value, int duration, boolean isSecure)
- {
- Cookie result;
-
- result = new Cookie (name, value);
- result.setMaxAge (duration);
- result.setPath ("/");
- result.setSecure (isSecure);
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- static public Cookie buildCookie (String name, String value, int duration)
- {
- Cookie result;
-
- result = buildCookie(name, value, duration, false);
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- static public Cookie getCookie (Cookie[] cookies, String key)
- {
- Cookie result = null;
-
- if (cookies == null)
- {
- result = null;
- }
- else
- {
- boolean ended = false;
- int cookieCounter = 0;
- while (!ended)
- {
- if (cookieCounter < cookies.length)
- {
- if (key.equals (cookies[cookieCounter].getName ()))
- {
- ended = true;
- result = cookies[cookieCounter];
- }
- else
- {
- cookieCounter += 1;
- }
- }
- else
- {
- ended = true;
- result = null;
- }
- }
- }
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- static public Cookie getCookie (HttpServletRequest request, String key)
- {
- Cookie result = null;
-
- result = getCookie(request.getCookies (), key);
-
- //
- return(result);
- }
-
-
- /**
- *
- */
- static public Object getCookieValue (Cookie[] cookies, String key)
- {
- Object result;
-
- Cookie cookie = getCookie(cookies, key);
-
- if (cookie == null)
- {
- result = null;
- }
- else
- {
- result = cookie.getValue();
- }
-
- //
- return(result);
- }
-
-
- /**
- *
- */
- static public Object getCookieValue (HttpServletRequest request, String key)
- {
- Object result;
-
- result = getCookieValue (request.getCookies (), key);
-
- //
- return(result);
- }
-
-
- /**
- *
- */
- static public boolean exists(HttpServletRequest request, String key)
- {
- boolean result;
-
- if (getCookieValue(request, key) == null)
- {
- result = false;
- }
- else
- {
- result = true;
- }
-
- //
- return(result);
- }
-
-
- /**
- *
- */
- static public void set (HttpServletResponse response, String name, String value, int duration)
- {
- response.addCookie (buildCookie(name, value, duration));
- }
-
-
- /**
- *
- */
- static public void reset (HttpServletResponse response, String key)
- {
- response.addCookie(buildCookie(key, "", 0));
- }
-}
\ No newline at end of file
diff --git a/src/fr/devinsy/kiss4web/Page.java b/src/fr/devinsy/kiss4web/Page.java
deleted file mode 100644
index 528b1a8..0000000
--- a/src/fr/devinsy/kiss4web/Page.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package fr.devinsy.kiss4web;
-import java.io.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-
-
-
-/**
- *
- */
-public interface Page
-{
- /**
- *
- */
- public void doIt (HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException;
-}
diff --git a/src/fr/devinsy/kiss4web/PageManager.java b/src/fr/devinsy/kiss4web/PageManager.java
deleted file mode 100644
index 6824fd4..0000000
--- a/src/fr/devinsy/kiss4web/PageManager.java
+++ /dev/null
@@ -1,399 +0,0 @@
-package fr.devinsy.kiss4web;
-
-import java.io.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import fr.devinsy.kiss4web.security.*;
-
-/**
- *
- */
-public class PageManager extends HttpServlet
-{
- private static final long serialVersionUID = 1983715791417570578L;
- private static PageManager instance = null;
- protected SecurityAgent securityAgent;
-
- static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger (PageManager.class);
-
- /**
- *
- */
- public void init () throws ServletException
- {
- //
- instance = this;
-
- try
- {
- this.securityAgent = new SecurityAgent (getInitParameter ("securityDataPath"));
- }
- catch (Exception exception)
- {
- throw new ServletException("SecurityAgent initialization failed.", exception);
- }
- }
-
- /**
- *
- */
- public static PageManager instance ()
- {
- return instance;
- }
-
- /**
- *
- */
- static public String buildClassName (String pathInfo)
- {
- String result;
- result = null;
-
- if ( pathInfo.equals ("/"))
- {
- result = "Accueil";
- }
- else
- {
- String[] tokens = pathInfo.split ("/");
- StringBuffer name = new StringBuffer ();
-
- for (int tokenCounter = 1; tokenCounter < tokens.length - 1; tokenCounter++)
- {
- name.append (tokens[tokenCounter]);
- name.append ('.');
- }
-
- if (pathInfo.endsWith ("/"))
- {
- name.append (tokens[tokens.length - 1]);
- name.append ('.');
- }
-
- logger.info ("==>[" + tokens[tokens.length - 1] + "]");
- name.append (formatClassName (tokens[tokens.length - 1]));
-
- result = name.toString ();
- }
-
- //
- return (result);
- }
-
- /**
- *
- */
- static public String buildClassName2 (String pathInfo)
- {
- String result;
-
- if (pathInfo.endsWith (".xhtml"))
- {
- char[] source = pathInfo.toCharArray ();
-
- StringBuffer out = new StringBuffer ();
- for (char c : source)
- {
- out.append ("[" + c + "]");
- }
- logger.debug (out.toString ());
-
- char[] target = new char[source.length - 7];
- int lastStartToken = 0;
- for (int nChar = 1; nChar < source.length - 5; nChar++)
- {
- char charSource = source[nChar];
- switch (charSource)
- {
- case '/':
- target[nChar - 1] = '.';
- lastStartToken = nChar;
- break;
-
- case '.':
- target[lastStartToken] = Character.toUpperCase (target[lastStartToken]);
- break;
-
- default:
- target[nChar - 1] = source[nChar];
- }
- }
-
- out = new StringBuffer ();
- for (char c : target)
- {
- out.append ("[" + c + "]");
- }
- logger.debug (out.toString ());
-
- result = new String (target);
- }
- else if (pathInfo.equals ("/"))
- {
- result = "Accueil";
- }
- else if (pathInfo.endsWith ("/"))
- {
- char[] source = pathInfo.toCharArray ();
-
- StringBuffer out = new StringBuffer ();
- for (char c : source)
- {
- out.append ("[" + c + "]");
- }
- logger.debug (out.toString ());
-
- char[] target = new char[source.length - 2];
- int lastStartToken = 0;
- for (int nChar = 1; nChar < source.length - 1; nChar++)
- {
- char charSource = source[nChar];
- switch (charSource)
- {
- case '/':
- target[nChar - 1] = '.';
- lastStartToken = nChar + 1;
- break;
-
- default:
- target[nChar - 1] = source[nChar];
- }
- }
-
- char[] targetPlus = new char [source.length - lastStartToken];
- targetPlus[0] = '.';
- targetPlus[1] = Character.toUpperCase (source[lastStartToken]);
- int index = 2;
- for (int nChar = lastStartToken + 1; nChar < source.length - 1; nChar++)
- {
- targetPlus[index] = source[nChar];
- index += 1;
- }
-
- out = new StringBuffer ();
- for (char c : target)
- {
- out.append ("[" + c + "]");
- }
- logger.debug (out.toString ());
- out = new StringBuffer ();
- for (char c : targetPlus)
- {
- out.append ("[" + c + "]");
- }
- logger.debug (out.toString ());
-
- result = new String (target) + new String (targetPlus);
- }
- else
- {
- logger.debug ("unknow case");
- result = null;
- }
-
- //
- return (result);
- }
-
-
- /**
- */
- public Page instanciatePage (String className)
- {
- Page result;
-
- Class pageClass = null;
- try
- {
- pageClass = (Class) Class.forName (className);
- }
- catch (java.lang.ClassNotFoundException exception)
- {
- result = null;
- }
-
- logger.info ("class=" + pageClass);
-
- if (pageClass == null)
- {
- result = null;
- logger.error ("Unknow page: (" + className + ")");
- }
- else
- {
- try
- {
- result = pageClass.newInstance ();
- }
- catch (java.lang.InstantiationException exception)
- {
- logger.error ("Can't instanciate page (" + className + ")");
- result = null;
- }
- catch (java.lang.IllegalAccessException exception)
- {
- logger.error ("(2) Can't instanciate page (" + className + ")");
- result = null;
- }
- }
-
- //
- return (result);
- }
-
- /**
- *
- */
- public void doGet (HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException
- {
- logger.info ("==================================================");
- logger.info ("getContextPath=[" + request.getContextPath () + "]");
- logger.info ("getPathInfo=[" + request.getPathInfo () + "]");
- logger.info ("getPathTranslated=[" + request.getPathTranslated () + "]");
- logger.info ("getQueryString=[" + request.getQueryString () + "]");
- logger.info ("getRequestURI=[" + request.getRequestURI () + "]");
- logger.info ("getRequestURL=[" + request.getRequestURL () + "]");
- logger.info ("getServletPath=[" + request.getServletPath () + "]");
-
- String className = buildClassName (request.getPathInfo ());
- logger.info ("className=" + className);
-
- Page page = this.instanciatePage ("site." + className);
-
- if (page == null)
- {
- response.setContentType ("text/html");
- PrintWriter out = response.getWriter();
-
- out.println ("Unknow page.");
- }
- else
- {
- HttpSession session = request.getSession (false);
- String login;
- if (session == null)
- {
- login = null;
- }
- else
- {
- login = (String) session.getAttribute ("login");
- }
-
- if (this.securityAgent.checkPermission (request.getPathInfo (), login))
- {
- page.doIt (request, response);
- logger.info ("securityAgent say 'permission OK': (" + login + ", " + request.getPathInfo () + ")");
- }
- else
- {
- logger.info ("securityAgent say 'permission KO': (" + login + ", " + request.getPathInfo () + ")");
-
- if (login == null)
- {
- response.sendRedirect ("/gestion/login.xhtml");
- }
- else
- {
- response.setContentType ("text/html");
- PrintWriter out = response.getWriter();
-
- out.println ("");
- out.println ("Permission denied.");
- out.println ("");
- out.println ("");
- }
- }
- }
- }
-
-
- /**
- *
- */
- public void doPost (HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- doGet (request, response);
- }
-
-
- /**
- *
- */
- static public String formatClassName (String name)
- {
- String result;
-
- result = null;
-
- String[] splittedLastToken = name.split ("\\.");
- String last = splittedLastToken[0];
- //logger.info ("last=" + last);
-
- String[] tokens = last.split ("_");
- StringBuffer all = new StringBuffer ();
- for (String token : tokens)
- {
- //logger.info ("tok=" + token);
-
- all.append (Character.toUpperCase (token.charAt (0)));
- all.append (token.substring (1));
- }
-
- result = all.toString ();
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- public SecurityAgent securityAgent ()
- {
- SecurityAgent result;
-
- result = this.securityAgent;
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- static public User getUserFromSession (HttpServletRequest request)
- {
- User result;
-
- if (request == null)
- {
- result = null;
- }
- else
- {
- HttpSession session = request.getSession (false);
-
- String login;
- if (session == null)
- {
- result = null;
- }
- else
- {
- login = (String) session.getAttribute ("login");
- result = PageManager.instance ().securityAgent ().users ().getByLogin (login);
- }
- }
-
- //
- return (result);
- }
-}
diff --git a/src/fr/devinsy/kiss4web/ServletDispatcher.java b/src/fr/devinsy/kiss4web/ServletDispatcher.java
deleted file mode 100755
index 8bb54fa..0000000
--- a/src/fr/devinsy/kiss4web/ServletDispatcher.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * @author Christian Momon, June 2008.
- * This file is free software under the terms of the GNU Library General Public License
- * as published by the Free Software Foundation version 2 or any later version.
- */
-
-package fr.devinsy.kiss4web;
-
-import java.io.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-
-
-
-/**
- *
- */
-public class ServletDispatcher extends SimpleServletDispatcher
-{
- private static final long serialVersionUID = -3471226305721330069L;
- protected org.apache.log4j.Logger logger;
- //protected Servlets servlets;
-
-
- /**
- *
- */
- public void init () throws ServletException
- {
- super.init();
- this.logger = org.apache.log4j.Logger.getLogger (this.getClass());
- //this.servlets = new Servlets();
- }
-
-
- /**
- *
- */
- public void doIt (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
- {
- logger.info ("==================================================");
- logger.info ("getContextPath=[" + request.getContextPath () + "]");
- logger.info ("getPathInfo=[" + request.getPathInfo () + "]");
- logger.info ("getPathTranslated=[" + request.getPathTranslated () + "]");
- logger.info ("getQueryString=[" + request.getQueryString () + "]");
- logger.info ("getRequestURI=[" + request.getRequestURI () + "]");
- logger.info ("getRequestURL=[" + request.getRequestURL () + "]");
- logger.info ("getServletPath=[" + request.getServletPath () + "]");
-
- String className = pathInfoToClassName (request.getPathInfo ());
- logger.info ("className=" + className);
-
- HttpServlet servlet = instanciateServlet (className);
-
- if (servlet == null)
- {
- response.setContentType ("text/html");
- PrintWriter out = response.getWriter();
-
- out.println ("");
- out.println ("Unknow page.");
- out.println ("");
-
- out.close();
- }
- else
- {
- servlet.service(request, response);
- }
- }
-}
diff --git a/src/fr/devinsy/kiss4web/SimpleServletDispatcher.java b/src/fr/devinsy/kiss4web/SimpleServletDispatcher.java
deleted file mode 100755
index c32eb48..0000000
--- a/src/fr/devinsy/kiss4web/SimpleServletDispatcher.java
+++ /dev/null
@@ -1,666 +0,0 @@
-/**
- * @author Christian Momon, June 2008. This file is free software under the
- * terms of the GNU Library General Public License as published by the
- * Free Software Foundation version 2 or any later version.
- */
-
-package fr.devinsy.kiss4web;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import fr.devinsy.util.StringList;
-
-/**
- *
- */
-public class SimpleServletDispatcher extends HttpServlet
-{
- private static final long serialVersionUID = -3471226305721330069L;
- static protected org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(ServletDispatcher.class);
-
- static final protected Pattern SHORT_REWRITED_URL_CLASS = Pattern.compile("^([^-]+)-.+\\.xhtml$");
- static final protected Pattern SHORT_REWRITED_URL_PARAMETERS = Pattern.compile("^[^-]+-(.+)\\.xhtml$");
- static final protected Pattern LONG_REWRITED_URL_CLASS = Pattern.compile("^([^-]+)-/.*$");
- // static final protected Pattern LONG_REWRITED_URL_PARAMETERS =
- // Pattern.compile("^.+-/(.)+*$");
- static final protected Pattern REWRITE_PARAMETER = Pattern.compile("[^%\\w\\d]");
-
- protected String webclassesRootPath;
-
- /**
- * "Code can be shortest, speedest and memory smallest, but not the three in same time, only two"
- * , unknow citation.
- *
- * Note: characters array avalaible here
- * http://fr.wikipedia.org/wiki/Table_des_caract
- * %C3%A8res_Unicode_%280000-0FFF%29
- */
- static protected char NONE = (char) 0;
-
- static protected int[] rewritingParameterMapping = {
- /* 00 */NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
- /* 10 */NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
- /* 20 */'-', NONE, NONE, '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-',
- /* 30 */'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '-', '-', '-', '-', '-',
- /* 40 */'\u0040', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
- /* 50 */'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '-', '-', '-', '-', '-',
- /* 60 */'-', '\u0061', '\u0062', '\u0063', '\u0064', '\u0065', '\u0066', '\u0067', '\u0068', '\u0069', '\u006A', '\u006B', '\u006C', '\u006D', '\u006E',
- '\u006F',
- /* 70 */'\u0070', '\u0071', '\u0072', '\u0073', '\u0074', '\u0075', '\u0076', '\u0077', '\u0078', '\u0079', '\u007A', '\u007B', '\u007C', '\u007D',
- '-', '-',
- /* 80 */NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
- /* 90 */NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
- /* A0 */'\u00A0', '\u00A1', '\u00A2', '\u00A3', '\u00A4', '\u00A5', '\u00A6', '\u00A7', '\u00A8', '\u00A9', '\u00AA', '\u00AB', '\u00AC', '\u00AD',
- '\u00AE', '\u00AF',
- /* B0 */'-', '\u00B1', '\u00B2', '\u00B3', '\u00B4', '\u00B5', '\u00B6', '\u00B7', '\u00B8', '\u00B9', '\u00BA', '\u00BB', '\u00BC', '\u00BD',
- '\u00BE', '\u00BF',
- /* C0 */'a', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i',
- /* D0 */'\u00D0', '\u00D1', 'o', 'o', 'o', 'o', 'o', 'o', '\u00D8', 'u', 'u', 'u', 'u', 'y', '\u00DE', '\u00DF',
- /* E0 */'a', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i',
- /* F0 */'o', 'n', 'o', 'o', 'o', 'o', 'o', '\u00F7', '-', 'u', 'u', 'u', 'u', 'y', '-', 'y' };
-
- /**
- *
- */
- @Override
- public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws IOException, ServletException
- {
- doIt(request, response);
- }
-
- /**
- *
- *
- */
- public void doIt(final HttpServletRequest request, final HttpServletResponse response) throws IOException, ServletException
- {
- logger.info("==================================================");
- logger.info("getContextPath=[" + request.getContextPath() + "]");
- logger.info("getPathInfo=[" + request.getPathInfo() + "]");
- logger.info("getPathTranslated=[" + request.getPathTranslated() + "]");
- logger.info("getQueryString=[" + request.getQueryString() + "]");
- logger.info("getRequestURI=[" + request.getRequestURI() + "]");
- logger.info("getRequestURL=[" + request.getRequestURL() + "]");
- logger.info("getServletPath=[" + request.getServletPath() + "]");
-
- //
- /*
- * In past, possibility to use the servlet path was enable. It is too
- * complexe, not kiss mind. String path; if (request.getPathInfo() ==
- * null) { // web.xml url-pattern= *.xhtml path =
- * request.getServletPath(); } else { // web.xml url-pattern = /* path =
- * request.getPathInfo(); }
- */
- // String path = request.getRequestURI();
- String path = request.getPathInfo();
-
- if ((!path.endsWith("/")) && (!path.endsWith(".xhtml")) && (!path.contains("-/")))
- {
- // path = getServletContext().getRealPath("/") +
- // request.getRequestURI();
- path = getServletContext().getRealPath("/") + request.getPathInfo();
-
- returnInlineFile(response, new File(path), getServletContext().getMimeType(path));
- logger.info("File returned directly [" + path + "] with mimetype [" + getServletContext().getMimeType(path) + "].");
- }
- else
- {
- String className = pathInfoToClassName(path, this.webclassesRootPath);
- logger.info("className=[" + className + "]");
-
- HttpServlet servlet = instanciateServlet(className);
-
- // servlet.getServletContext().setAttribute(arg0, arg1);
-
- if (servlet == null)
- {
- response.setContentType("text/html");
- PrintWriter out = response.getWriter();
-
- out.println("");
- out.println("Unknow page.");
- out.println("");
-
- out.close();
- }
- else if (isAuthorized(request, response))
- {
- servlet.init(this.getServletConfig());
- servlet.service(request, response);
- }
- else
- {
- /*
- * TODO // response.setContentType ("text/html"); PrintWriter
- * out = response.getWriter();
- *
- * out.println (""); out.println
- * ("Not authorized page."); out.println ("");
- */
- }
- }
- }
-
- /**
- *
- */
- @Override
- public void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException
- {
- doIt(request, response);
- }
-
- /**
- *
- */
- @Override
- public void init() throws ServletException
- {
- super.init();
- this.webclassesRootPath = getInitParameter("webClassesRootPath");
-
- // Set logger.
- String logFilepathname = getInitParameter("log4j-init-file");
- if (logFilepathname != null)
- {
- try
- {
- System.out.println("Log configuration found (" + logFilepathname + "), will use it.");
- org.apache.log4j.PropertyConfigurator.configure(getServletContext().getRealPath("/") + logFilepathname);
- }
- catch (Exception exception)
- {
- System.out.println("Log configuration FILE NOT FOUND (" + logFilepathname + "), use of the basic configurator.");
- org.apache.log4j.BasicConfigurator.configure();
- }
-
- logger = org.apache.log4j.Logger.getLogger(this.getClass());
- logger.info("Log initialization done.");
- }
- }
-
- /**
- *
- */
- public boolean isAuthorized(final HttpServletRequest request, final HttpServletResponse response)
- {
- boolean result;
-
- result = true;
-
- //
- return (result);
- }
-
- /**
- *
- */
- static public HttpServlet instanciateServlet(final String className)
- {
- HttpServlet result;
-
- Class servletClass = null;
- try
- {
- servletClass = (Class) Class.forName(className);
- }
- catch (java.lang.ClassNotFoundException exception)
- {
- result = null;
- }
-
- logger.info("class=" + servletClass);
-
- if (servletClass == null)
- {
- result = null;
- logger.error("Unknow page: (" + className + ")");
- }
- else
- {
- try
- {
- result = servletClass.newInstance();
- }
- catch (java.lang.InstantiationException exception)
- {
- logger.error("Can't instanciate servlet (" + className + ")");
- result = null;
- }
- catch (java.lang.IllegalAccessException exception)
- {
- logger.error("(2) Can't instanciate servlet (" + className + ")");
- result = null;
- }
- }
-
- //
- return (result);
- }
-
- /**
- * Extract values from a path. Example: "/article-/123/doors/open.xhtml" =>
- * "123", "doors" and "open".
- */
- static public String[] longRewritedUrlParameters(final String path)
- {
- String[] result;
-
- result = path.substring(path.indexOf("-/") + 2).split("/");
-
- //
- return (result);
- }
-
- /**
- * Convert a path in a class name, using easy conventions.
- *
- * "/" => "Index_xhtml" "/good/" => "good.Good_xhtml" "/good/morning.xhtml"
- * => "good.Morning_xhtml" "/good/morning_girl.xhtml" =>
- * "good.Morning_girl_xhtml" "/good/morning-123.xhtml" =>
- * "good.Morning_xhtml" ('123' is detected as a parameter, it will be
- * decoded in the class called later). "/good/morning-/12/toto.jpg" =>
- * "good.Morning" ('12' and 'toto.jpg" are detected as a parameter, they
- * will be decoded in the class called later).
- */
- static public String pathInfoToClassName(final String pathInfo)
- {
- String result;
-
- if ((pathInfo == null) || (pathInfo.length() == 0))
- {
- result = null;
- }
- else
- {
- if (pathInfo.equals("/"))
- {
- result = "Index_xhtml";
- }
- else
- {
- int keywordIndex = pathInfo.lastIndexOf("-/");
-
- if (keywordIndex != -1)
- {
- // Long rewrited URL case.
- String[] tokens = pathInfo.substring(0, keywordIndex).split("/");
-
- StringList name = new StringList();
- // Note: as pathInfo starts always with a '/', the first
- // good token index is 1.
- for (int tokenCounter = 1; tokenCounter < (tokens.length - 1); tokenCounter++)
- {
- name.append(tokens[tokenCounter]);
- name.append('.');
- }
-
- String lastToken = tokens[tokens.length - 1];
- name.append(lastToken.substring(0, 1).toUpperCase()).append(lastToken.substring(1).replace('.', '_'));
- result = name.toString();
- }
- else
- {
- String[] tokens = pathInfo.split("/");
-
- StringList name = new StringList();
- // Note: as pathInfo starts always with a '/', the first
- // good token index is 1.
- for (int tokenCounter = 1; tokenCounter < (tokens.length - 1); tokenCounter++)
- {
- name.append(tokens[tokenCounter]);
- name.append('.');
- }
-
- String lastToken = tokens[tokens.length - 1];
- if (pathInfo.endsWith("/"))
- {
- name.append(lastToken).append(".").append(lastToken.substring(0, 1).toUpperCase()).append(lastToken.substring(1)).append("_xhtml");
- }
- else
- {
- Matcher matcher = SHORT_REWRITED_URL_CLASS.matcher(lastToken);
- if (matcher.matches())
- {
- // Short rewrited URL case.
- // logger.debug("group 1=[" + matcher.group(1) +
- // "]");
- lastToken = matcher.group(1) + ".xhtml";
- }
-
- name.append(lastToken.substring(0, 1).toUpperCase()).append(lastToken.substring(1).replace('.', '_'));
- }
-
- result = name.toString();
- logger.debug("==>[" + tokens[tokens.length - 1] + "]");
- }
- }
- }
-
- logger.info("[" + pathInfo + "] => [" + result + "]");
-
- //
- return (result);
- }
-
- /**
- *
- */
- static public String pathInfoToClassName(final String pathInfo, final String prefix)
- {
- String result;
-
- String className = pathInfoToClassName(pathInfo);
-
- if (prefix == null)
- {
- result = className;
- }
- else if (prefix.endsWith("."))
- {
- result = prefix + className;
- }
- else
- {
- result = prefix + "." + className;
- }
-
- //
- return (result);
- }
-
- /**
- *
- */
- static public void returnAttachmentFile(final HttpServletResponse response, final File file, final String mimeType) throws IOException
- {
- returnFile(response, file, mimeType, true);
- }
-
- /**
- *
- */
- static public void returnFile(final HttpServletResponse response, final File file, final String mimeType, final boolean isAttachment) throws IOException
- {
-
- if ((file == null) || (!file.exists()))
- {
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
- }
- else
- {
- /*
- * response.setContentType("application/" + extension);
- * response.setContentLength((int) data.length);
- * response.setHeader("Content-Disposition"
- * ,"attachment; filename=\"" + filename + "\"");
- * response.flushBuffer();
- */
- response.reset();
- response.setContentType(mimeType);
- response.setContentLength((int) file.length());
- response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
- response.flushBuffer();
-
- ServletOutputStream out = response.getOutputStream();
-
- FileInputStream in = null;
- try
- // Only for the in.
- {
- byte[] buffer = new byte[64 * 1024];
-
- in = new FileInputStream(file);
- boolean ended = false;
- while (!ended)
- {
- int count = in.read(buffer);
-
- if (count == -1)
- {
- ended = true;
- }
- else
- {
- out.write(buffer, 0, count);
- }
- }
- out.flush();
- out.close();
- }
- catch (IOException exception)
- {
- response.sendError(HttpServletResponse.SC_PARTIAL_CONTENT);
- }
- finally
- {
- if (in != null)
- {
- in.close();
- }
- }
- }
- }
-
- /**
- *
- */
- static public void returnInlineFile(final HttpServletResponse response, final File file, final String mimeType) throws IOException
- {
- returnFile(response, file, mimeType, false);
- }
-
- /**
- *
- */
- static public String[] rewritedUrlParameters(final HttpServletRequest request)
- {
- String[] result;
-
- result = longRewritedUrlParameters(request.getRequestURI());
-
- //
- return (result);
- }
-
- /**
- * This method gives a way for a long rewriting URL format. Long as in REST.
- *
- * Sometimes, URL has to be rewrited because we need to put parameter in the
- * page name.
- *
- * Example: "/good/give_file?id=123&filename=foo.jpg" =>
- * rewriteShorturl("/good/give_file", "123", "foo.jpg"); =>
- * "/good/give_file-/123/foo.jpg"
- *
- * Note: "-/" is used to indicate the start of parameters.
- *
- */
- static public String rewriteLongUrl(final String uri, final String... parameters)
- {
- String result;
-
- StringList string = new StringList();
-
- string.append(uri).append("-");
- if ((parameters == null) || (parameters.length == 0))
- {
- string.append("/");
- }
- else
- {
- for (String parameter : parameters)
- {
- string.append("/").append(parameter);
- }
- }
-
- result = string.toString();
-
- //
- return (result);
- }
-
- /**
- *
- *
- * @param parameter
- * @return
- */
- static String rewriteParameter(final String parameter)
- {
- String result;
-
- StringBuffer buffer = new StringBuffer(parameter.length());
-
- char previousCar = NONE;
- for (int charIndex = 0; charIndex < parameter.length(); charIndex++)
- {
- // logger.info("" + charIndex + " " + parameter.charAt(charIndex) +
- // " " + (char) tab[parameter.charAt(charIndex)]);
- char car = (char) rewritingParameterMapping[parameter.charAt(charIndex)];
- if (car != NONE)
- {
- if ((car != '-') || ((car == '-') && (previousCar != '-')))
- {
- buffer.append(car);
- previousCar = car;
- }
- }
- }
-
- if (buffer.charAt(buffer.length() - 1) == '-')
- {
- buffer.setLength(buffer.length() - 1);
- }
-
- result = buffer.toString();
- logger.info("[" + parameter + "] -> [" + result + "]");
- //
- return (result);
- }
-
- /**
- * This method gives a way for a short rewriting URL format.
- *
- * Sometimes, URL has to be rewrited because we need to put parameter in the
- * page name.
- *
- * Example: "/good/article.xhtm?id=123&class=today&title=story's about me"
- * => rewriteShorturl("/good/article", "xhtml", "123", "Story's aboute me");
- * => "/good/article-123-today-story-s-about-me.xhtml"
- */
- static public String rewriteShortUrl(final String uri, final String extension, final String... parameters)
- {
- String result;
-
- StringList string = new StringList();
-
- string.append(uri);
-
- for (String parameter : parameters)
- {
- // Not use of String.replaceAll() method in goal to optimize Pattern
- // compile action.
- // string.append("-").append(REWRITE_PARAMETER.matcher(parameter.toLowerCase()).replaceAll("-"));
- string.append("-").append(rewriteParameter(parameter));
- }
-
- if ((extension != null) && (extension.length() != 0))
- {
- string.append(".").append(extension);
- }
-
- result = string.toString();
-
- //
- return (result);
- }
-
- /**
- *
- */
- static public String shortRewritedUrlParameter(final HttpServletRequest request)
- {
- String result;
-
- result = shortRewritedUrlParameter(request.getRequestURI());
-
- //
- return (result);
- }
-
- /**
- * Return value of the first parameter.
- */
- static public String shortRewritedUrlParameter(final String path)
- {
- String result;
-
- String[] results = shortRewritedUrlParameters(path);
-
- if ((results == null) || (results.length == 0))
- {
- result = null;
- }
- else
- {
- result = results[0];
- }
-
- //
- return (result);
- }
-
- /**
- *
- */
- static public String[] shortRewritedUrlParameters(final HttpServletRequest request)
- {
- String[] result;
-
- result = shortRewritedUrlParameters(request.getRequestURI());
-
- //
- return (result);
- }
-
- /**
- * Extract value from a path. Example: "/article-123.xhtml" => "123".
- */
- static public String[] shortRewritedUrlParameters(final String path)
- {
- String[] result;
-
- Matcher matcher = SHORT_REWRITED_URL_PARAMETERS.matcher(path);
- if (matcher.matches())
- {
- if (matcher.groupCount() != 1)
- {
- result = null;
- }
- else
- {
- result = matcher.group(1).split("-");
- }
- }
- else
- {
- result = null;
- }
-
- //
- return (result);
- }
-}
diff --git a/src/fr/devinsy/kiss4web/security/Group.java b/src/fr/devinsy/kiss4web/security/Group.java
deleted file mode 100644
index 59749e0..0000000
--- a/src/fr/devinsy/kiss4web/security/Group.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package fr.devinsy.kiss4web.security;
-
-
-import java.util.*;
-
-/**
- *
- */
-public class Group
-{
- protected String name;
- protected Vector members;
-
-
- /**
- *
- */
- public Group ()
- {
- this.name = null;
- this.members = new Vector ();
- }
-
-
- /**
- *
- */
- public void addMember (String login)
- {
- if ((login != null) && (login.length () != 0))
- {
- this.members.add (login);
- }
- }
-
-
- /**
- *
- */
- public boolean contains (String name)
- {
- boolean result = false;
-
- result = this.members.contains (name);
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- public Vector members ()
- {
- Vector result;
-
- result = this.members;
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- public String name ()
- {
- String result;
-
- result = this.name;
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- public Group setName (String name)
- {
- this.name = name;
-
- //
- return (this);
- }
-
-
- /**
- *
- */
- public String toString ()
- {
- String result;
-
- result = "|" + this.name + "|" + this.members + "|";
-
- //
- return (result);
- }
-}
-
-// ////////////////////////////////////////////////////////////////////////
diff --git a/src/fr/devinsy/kiss4web/security/Groups.java b/src/fr/devinsy/kiss4web/security/Groups.java
deleted file mode 100644
index 1cfdfd1..0000000
--- a/src/fr/devinsy/kiss4web/security/Groups.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package fr.devinsy.kiss4web.security;
-
-
-import java.util.*;
-
-/**
- *
- */
-public class Groups extends Vector
-{
- private static final long serialVersionUID = 6238581648850758903L;
-
- /**
- *
- */
- public Groups ()
- {
- super ();
- }
-
-
- /**
- *
- */
- public Group get (String name)
- {
- Group result;
-
- if (name == null)
- {
- result = null;
- }
- else
- {
- result = null;
- boolean ended = false;
- Iterator iterator = this.iterator ();
- while (!ended)
- {
- if (iterator.hasNext ())
- {
- Group group = iterator.next ();
- if (group.name ().equals (name))
- {
- ended = true;
- result = group;
- }
- }
- else
- {
- ended = true;
- result = null;
- }
- }
- }
-
- //
- return (result);
- }
-
-
- /*
- *
- */
- public boolean contains (String name)
- {
- boolean result;
-
- if (get (name) == null)
- {
- result = false;
- }
- else
- {
- result = true;
- }
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- public Vector getLoginGroups (String login)
- {
- Vector result;
-
- result = new Vector ();
- Iterator iterator = this.iterator ();
-
- while (iterator.hasNext ())
- {
- Group group = iterator.next ();
-
- if (group.members ().contains (login))
- {
- result.add (group.name ());
- }
- }
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- public String getLoginGroupsString (String login)
- {
- String result;
-
- Vector groups = getLoginGroups (login);
-
- StringBuffer string = new StringBuffer ();
-
- for (String group : groups)
- {
- if (string.length () == 0)
- {
- string.append (group);
- }
- else
- {
- string.append (",");
- string.append (group);
- }
- }
-
- result = string.toString ();
-
- //
- return (result);
- }
-
-
- /**
- *
- */
- public String toString ()
- {
- String result;
-
- StringBuffer out;
- out = new StringBuffer ();
-
- Iterator iterator = this.iterator ();
-
- while (iterator.hasNext ())
- {
- out.append (iterator.next ().toString () + "\n");
- }
-
- result = out.toString ();
-
- //
- return (result);
- }
-}
-
-// ////////////////////////////////////////////////////////////////////////
diff --git a/src/fr/devinsy/kiss4web/security/GroupsFileReader.java b/src/fr/devinsy/kiss4web/security/GroupsFileReader.java
deleted file mode 100644
index ab44853..0000000
--- a/src/fr/devinsy/kiss4web/security/GroupsFileReader.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package fr.devinsy.kiss4web.security;
-
-import java.io.*;
-import java.util.*;
-
-
-/**
- *
- */
-public class GroupsFileReader
-{
- /**
- *
- */
- static public Groups load (String fileName) throws Exception
- {
- Groups result;
-
- result = new Groups ();
-
- Properties properties = new Properties();
- try
- {
- properties.load (new FileInputStream(fileName));
-
- Iterator