/*
* $Id: BaseFilter.java,v 1.10 2005/09/23 17:26:07 tryggvil Exp $
* Created on 7.1.2005
*
* Copyright (C) 2005 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.servlet.filter;
import javax.servlet.Filter;
import javax.servlet.http.HttpServletRequest;
import com.idega.idegaweb.IWMainApplication;
import com.idega.repository.data.MutableClass;
import com.idega.util.RequestUtil;
/**
* <p>
* Class that holds basic functionality used by many filters.<br>
* </p>
* Last modified: $Date: 2005/09/23 17:26:07 $ by $Author: tryggvil $
*
* @author <a href="mailto:tryggvil@idega.com">tryggvil</a>
* @version $Revision: 1.10 $
*/
public abstract class BaseFilter implements Filter, MutableClass {
private static final boolean DEFAULT_VALUE_CHECKED_CURRENT_APPCONTEXT = false;
private static boolean checkedCurrentApplicationContext = DEFAULT_VALUE_CHECKED_CURRENT_APPCONTEXT;
public static void unload() {
checkedCurrentApplicationContext = DEFAULT_VALUE_CHECKED_CURRENT_APPCONTEXT;
}
protected static final String OLD_BUILDER_SERVLET_URI = "/servlet/IBMainServlet";
protected static final String OLD_BUILDER_INDEX_JSP_URI = "/index.jsp";
protected static final String OLD_BUILDER_PAGE_PARAMETER = "ib_page";
protected static final String OLD_IDEGAWEB_LOGIN = "/idegaweb";
protected static final String OLD_IDEGAWEB_LOGIN_WITHSLASH = "/idegaweb/";
protected static final String NEW_IDEGAWEB_LOGIN = "/login/";
protected static final String NEW_IDEGAWEB_LOGIN_MINUSSLASH = "/login";
protected static final String NEW_WORKSPACE_URI="/workspace/";
protected static final String NEW_WORKSPACE_URI_MINUSSLASH="/workspace";
protected static final String SETUP_URI="/setup/";
protected static final String PAGES_URI="/pages/";
static final String SLASH = "/";
protected String getNewLoginUri(HttpServletRequest request){
IWMainApplication iwma = getIWMainApplication(request);
return iwma.getTranslatedURIWithContext(NEW_IDEGAWEB_LOGIN);
//return NEW_IDEGAWEB_LOGIN;
}
protected String getNewLoginUri(HttpServletRequest request,String uriToRedirectTo){
IWMainApplication iwma = getIWMainApplication(request);
String baseUri = iwma.getTranslatedURIWithContext(NEW_IDEGAWEB_LOGIN);
baseUri = baseUri+"?"+IWAuthenticator.PARAMETER_REDIRECT_URI_ONLOGON+"="+uriToRedirectTo;
return baseUri;
//return NEW_IDEGAWEB_LOGIN;
}
protected String getNewWorkspaceUri(HttpServletRequest request){
IWMainApplication iwma = getIWMainApplication(request);
return iwma.getTranslatedURIWithContext(NEW_WORKSPACE_URI);
//return NEW_WORKSPACE_URI;
}
protected String getSetupUri(HttpServletRequest request){
IWMainApplication iwma = getIWMainApplication(request);
return iwma.getTranslatedURIWithContext(SETUP_URI);
//return NEW_IDEGAWEB_LOGIN;
}
/**
* Gets the pages uri prefixed with context path
* @param request
* @return
*/
protected String getPagesUri(HttpServletRequest request){
IWMainApplication iwma = getIWMainApplication(request);
return iwma.getTranslatedURIWithContext(PAGES_URI);
}
protected String getURIMinusContextPath(HttpServletRequest request) {
return RequestUtil.getURIMinusContextPath(request);
}
/**
* This may be called from several filter subclasses. This should ideally be called by the first filter in the chain.
* @param iwc
*/
protected void setApplicationServletContextPath(HttpServletRequest request ){
if (!hasCheckedCurrentAppContext()) {
String contextPath = request.getContextPath();
getIWMainApplication(request).setApplicationContextURI(contextPath);
checkedCurrentApplicationContext=true;
}
}
private boolean hasCheckedCurrentAppContext(){
return checkedCurrentApplicationContext;
}
protected IWMainApplication getIWMainApplication(HttpServletRequest request) {
IWMainApplication iwma = IWMainApplication.getIWMainApplication(request.getSession().getServletContext());
return iwma;
}
}