package com.ibm.test.wcm.app.atom.servlet; import java.io.IOException; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionServlet; public class AuthServlet extends ActionServlet { public AuthServlet() { } protected void process(HttpServletRequest p_request, HttpServletResponse p_response) throws IOException, ServletException { try { if(authenticateSession(p_request)) { if(!p_request.getServletPath().endsWith(PROTECTED_SERVLET_PATH)) redirectToMyAtom(p_request, p_response); super.process(p_request, p_response); } else { super.process(p_request, p_response); } } catch (Exception e) { throw new ServletException("Exception in AuthServlet", e); } } private boolean authenticateSession(HttpServletRequest p_request) { return (p_request.getUserPrincipal() != null || !p_request.getUserPrincipal().equals(null)) ; } private void redirectToMyAtom(HttpServletRequest p_request, HttpServletResponse p_response) throws IOException { String url = p_request.getRequestURL().toString(); url = url.replaceFirst(PUBLIC_SERVLET_PATH, PROTECTED_SERVLET_PATH); if(p_request.getParameterMap().size() != 0) { StringBuffer sb = new StringBuffer(url); Enumeration en = p_request.getParameterNames(); char separator = '?'; while(en.hasMoreElements()) { String parmName = (String)en.nextElement(); String parmValues[] = p_request.getParameterValues(parmName); for(int i = 0; i < parmValues.length; i++) { sb.append(separator); separator = '&'; sb.append(parmName); sb.append('='); sb.append(parmValues[i]); } } url = sb.toString(); } p_response.sendRedirect(url); } public static final String PROTECTED_SERVLET_PATH = "/myatom"; public static final String PUBLIC_SERVLET_PATH = "/atom"; }