blob: 3b6cef10a30ffe008783b88c031759151d7accb5 [file] [log] [blame]
/*
* Copyright 2003,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
*
* 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 org.apache.pluto.driver.core;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
import org.apache.pluto.driver.url.PortalURL;
import org.apache.pluto.driver.url.PortalURLParser;
import org.apache.pluto.driver.AttributeKeys;
import org.apache.pluto.driver.config.DriverConfiguration;
/**
* Defines the context of the currentl portal request.
* Allows for the retrieval of the original request
* and response throughout the lifetime of the request.
*
* Provides a consistent interface for parsing/creating
* PortalURLs to the outside world.
*
* @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @author <a href="mailto:zheng@apache.org">ZHENG Zhong</a>
*/
public class PortalRequestContext {
/**
* The attribute key to bind the portal environment instance to servlet
* request.
*/
public final static String REQUEST_KEY =
PortalRequestContext.class.getName();
/** The servletContext of execution. **/
private ServletContext servletContext = null;
/** The incoming servlet request. */
private HttpServletRequest request = null;
/** The incoming servlet response. */
private HttpServletResponse response = null;
/** The requested portal URL. */
private PortalURL requestedPortalURL = null;
// Constructor -------------------------------------------------------------
/**
* Creates a PortalRequestContext instance.
* @param request the incoming servlet request.
* @param response the incoming servlet response.
*/
public PortalRequestContext(ServletContext servletContext,
HttpServletRequest request,
HttpServletResponse response) {
this.servletContext = servletContext;
this.request = request;
this.response = response;
// Bind the instance to servlet request for later use.
request.setAttribute(REQUEST_KEY, this);
}
/**
* Returns the portal environment from the servlet request. The portal
* envirionment instance is saved in the request scope.
* @param request the servlet request.
* @return the portal environment.
*/
public static PortalRequestContext getContext(
HttpServletRequest request) {
return (PortalRequestContext) request.getAttribute(REQUEST_KEY);
}
/**
* Returns the servlet request.
* @return the servlet request.
*/
public HttpServletRequest getRequest() {
return request;
}
/**
* Returns the servlet response.
* @return the servlet response.
*/
public HttpServletResponse getResponse() {
return response;
}
/**
* Returns the requested portal URL.
* @return the requested portal URL.
*/
public PortalURL getRequestedPortalURL() {
if(requestedPortalURL == null) {
DriverConfiguration config = (DriverConfiguration)
servletContext.getAttribute(AttributeKeys.DRIVER_CONFIG);
PortalURLParser parser = config.getPortalUrlParser();
requestedPortalURL = parser.parse(request);
}
return requestedPortalURL;
}
public PortalURL createPortalURL() {
return (PortalURL)getRequestedPortalURL().clone();
}
}