/* * $Id: IWWelcomeFilter.java,v 1.10 2005/02/23 19:19:25 tryggvil Exp $ * Created on 31.7.2004 by tryggvil * * 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 java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.idega.business.IBOLookup; import com.idega.core.builder.business.BuilderService; import com.idega.core.builder.data.ICPage; import com.idega.data.IDONoDatastoreError; import com.idega.idegaweb.IWMainApplication; import com.idega.presentation.IWContext; /** * <p> * This filter detects the incoming url and sends them to the appropriate one if the requestUri of the incoming request is coming to the root of the. * </p> * * Last modified: $Date: 2005/02/23 19:19:25 $ by $Author: tryggvil $ * * @author <a href="mailto:tryggvil@idega.com">tryggvil</a> * @version $Revision: 1.10 $ */ public class IWWelcomeFilter extends BaseFilter { private static final boolean DEFAULT_VALUE_IS_INIT = false; private static boolean isInit= DEFAULT_VALUE_IS_INIT; private static final boolean DEFAULT_VALUE_START_ON_WORKSPACE = true; private static boolean startOnWorkspace= DEFAULT_VALUE_START_ON_WORKSPACE; private static final boolean DEFAULT_VALUE_START_ON_PAGES = false; private static boolean startOnPages= DEFAULT_VALUE_START_ON_PAGES; public static void unload() { isInit = DEFAULT_VALUE_IS_INIT; startOnWorkspace = DEFAULT_VALUE_START_ON_WORKSPACE; startOnPages = DEFAULT_VALUE_START_ON_PAGES; } /* (non-Javadoc) * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } /* (non-Javadoc) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)srequest; HttpServletResponse response = (HttpServletResponse)sresponse; if(!isInit){ init(request,response); isInit=true; } IWMainApplication iwma = IWMainApplication.getIWMainApplication(request.getSession().getServletContext()); String appUri = iwma.getApplicationContextURI(); String requestUri = request.getRequestURI(); String SLASH = "/"; if(!appUri.endsWith(SLASH)){ appUri =appUri+SLASH; } if(requestUri.equals(appUri)){ if(startOnWorkspace){ //request.getRequestDispatcher("/workspace/").forward(request,response); response.sendRedirect(getNewWorkspaceUri(request)); } else if(startOnPages){ //request.getRequestDispatcher(PAGES_URI).forward(request,response); String pagesUri = getPagesUri(request); response.sendRedirect(pagesUri); } } else{ chain.doFilter(srequest,sresponse); } } /** * @param request * @param response */ private void init(HttpServletRequest request, HttpServletResponse response) { IWMainApplication iwma = IWMainApplication.getIWMainApplication(request.getSession().getServletContext()); try { BuilderService bService = (BuilderService)IBOLookup.getServiceInstance(iwma.getIWApplicationContext(),BuilderService.class); ICPage rootPage = bService.getRootPage(); if(rootPage.getChildCount()>0){ //set the filter to forward to /pages if there are any subpages startOnPages=true; startOnWorkspace=false; } /*String serverName = request.getServerName(); int port = request.getLocalPort(); if(port!=80){ serverName += ":"+port; } iwma.getIWApplicationContext().getDomain().setServerName(serverName);*/ IWContext iwc = new IWContext(request,response, request.getSession().getServletContext()); //This sets the domain by default: iwc.getDomain(); } catch (Exception e) { e.printStackTrace(); } catch (IDONoDatastoreError de) { if(!iwma.isInDatabaseLessMode()){ de.printStackTrace(); } } } /* (non-Javadoc) * @see javax.servlet.Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } }