/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
* Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*
* $Id: FakeServletContext.java,v 1.2 2006/03/06 16:54:41 mattias Exp $
*/
package org.infoglue.cms.util;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Set;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletException;
import org.infoglue.cms.security.InfoGlueAuthenticationFilter;
/**
* Allows us to initialize the CmsContextListener outside of a servlet environment. Only the critical methods
* are implemented, the rest are no-ops.
* @author Frank Febbraro (frank@phase2technology.com)
*/
public class FakeServletContext implements ServletContext
{
private static final FakeServletContext context = new FakeServletContext();
private boolean initialized;
private FakeServletContext() {}
/**
* Factory method to return a reference to the context
* @return a reference to a FakeServletContext
*/
public static FakeServletContext getContext()
{
return context;
}
/**
* Initializes the InfoGlue ServletContextListener and the InfoglueAuthenticationFilter
*/
public void init()
{
if (!initialized)
{
initializeContextListener();
initializeAuthenticationFilter();
initialized = true;
}
}
/**
* Initializes the InfoGlue ServletContextListener with a new ServletContextEvent created from this
*/
private void initializeContextListener()
{
new CmsContextListener().contextInitialized(new ServletContextEvent(this));
}
/**
* Initializes the InfoGlueAuthentocationFilter with a fake filter config. Relies on the fact that
* InfoGlueAuthenticationFilter stores the init params statically.
*/
private void initializeAuthenticationFilter()
{
try
{
new InfoGlueAuthenticationFilter().init(new FakeFilterConfig());
}
catch (ServletException e)
{
throw new RuntimeException(e);
}
}
/**
* Implement this method to provide a path to the CmsContextListener.
* This value is passed in via the ant task <code><junit></code> as a <code><sysproperty></code>
*/
public String getRealPath(String s)
{
return System.getProperty("webapp.dir") + s;
}
public ServletContext getContext(String s) { return null; }
public int getMajorVersion() { return 0; }
public int getMinorVersion() { return 1; }
public String getMimeType(String s) { return null; }
public Set getResourcePaths(String s) { return null; }
public URL getResource(String s) throws MalformedURLException { return null; }
public InputStream getResourceAsStream(String s) { return null; }
public RequestDispatcher getRequestDispatcher(String s) { return null; }
public RequestDispatcher getNamedDispatcher(String s) { return null; }
public Servlet getServlet(String s) throws ServletException { return null; }
public Enumeration getServlets() { return null; }
public Enumeration getServletNames() { return null; }
public void log(String s) {}
public void log(Exception e, String s) {}
public void log(String s, Throwable throwable) {}
public String getServerInfo() { return null; }
public String getInitParameter(String s) { return null; }
public Enumeration getInitParameterNames() { return null; }
public Object getAttribute(String s) { return null; }
public Enumeration getAttributeNames() { return null; }
public void setAttribute(String s, Object o) {}
public void removeAttribute(String s) {}
public String getServletContextName() { return null; }
public String getContextPath() {
return System.getProperty("webapp.dir");
}
}