/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/rwiki/trunk/rwiki-tool/tool/src/java/uk/ac/cam/caret/sakai/rwiki/tool/RequestHelper.java $
* $Id: RequestHelper.java 58932 2009-03-20 22:09:18Z s.swinsburg@lancaster.ac.uk $
***********************************************************************************
*
* Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation.
*
* Licensed under the Educational Community License, Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ecl1.php
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package uk.ac.cam.caret.sakai.rwiki.tool;
import javax.servlet.http.HttpServletRequest;
import org.sakaiproject.component.cover.ServerConfigurationService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import uk.ac.cam.caret.sakai.rwiki.tool.api.CommandService;
import uk.ac.cam.caret.sakai.rwiki.tool.api.HttpCommand;
public class RequestHelper
{
private static Log log = LogFactory.getLog(RequestHelper.class);
public static final String PANEL = "panel";
public static final String ACTION = "action";
public static final String TITLE_PANEL = "Title";
public static final String HELPER_PATH = "helper";
public static final String WIKI_PATH = "wiki";
private String defaultAction = "view";
private CommandService commandService;
public void init()
{
}
public HttpCommand getCommandForRequest(HttpServletRequest request)
{
String panel = request.getParameter(PANEL);
String action = request.getParameter(ACTION);
// Cope with Sakai panel behaviour
if (TITLE_PANEL.equals(panel))
{
action = panel;
}
// Cope with helper call:
String requestPath = request.getRequestURI().substring(
request.getContextPath().length()
+ request.getServletPath().length());
// SAK-13408 - Tomcat and WAS have different URL structures; Attempting to add a
// link or image would lead to site unavailable errors in websphere if the tomcat
// URL structure is used.
if("websphere".equals(ServerConfigurationService.getString("servlet.container"))) {
String[] parts = requestPath.split("/");
if ((parts.length >= 4) && (parts[3].equals(HELPER_PATH)))
{
action = HELPER_PATH;
}
}
else if (requestPath != null
&& requestPath.startsWith("/" + HELPER_PATH + "/"))
action = HELPER_PATH;
if (action == null)
{
action = defaultAction;
}
return commandService.getCommand(action);
}
public CommandService getCommandService()
{
return commandService;
}
public void setCommandService(CommandService commandService)
{
this.commandService = commandService;
}
public String getDefaultAction()
{
return defaultAction;
}
public void setDefaultAction(String defaultAction)
{
this.defaultAction = defaultAction;
}
}