001// Copyright 2006, 2007, 2008 The Apache Software Foundation
002//
003// Licensed under the Apache License, Version 2.0 (the "License");
004// you may not use this file except in compliance with the License.
005// You may obtain a copy of the License at
006//
007//     http://www.apache.org/licenses/LICENSE-2.0
008//
009// Unless required by applicable law or agreed to in writing, software
010// distributed under the License is distributed on an "AS IS" BASIS,
011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012// See the License for the specific language governing permissions and
013// limitations under the License.
014
015package org.apache.tapestry5.services;
016
017import org.apache.tapestry5.services.Request;
018import org.apache.tapestry5.services.Response;
019
020import javax.servlet.http.HttpServletRequest;
021import javax.servlet.http.HttpServletResponse;
022
023/**
024 * Service used to store the current request objects, both the Servlet API versions, and the
025 * Tapestry generic versions.
026 * The service has a per-thread scope.
027 */
028public interface RequestGlobals
029{
030    /**
031     * Stores the servlet API request and response objects, for access via the properties.
032     */
033    void storeServletRequestResponse(HttpServletRequest request, HttpServletResponse response);
034
035    /**
036     * The Servlet API Request. This is exposed as service HTTPServletRequest.
037     */
038    HttpServletRequest getHTTPServletRequest();
039
040    HttpServletResponse getHTTPServletResponse();
041
042    void storeRequestResponse(Request request, Response response);
043
044    /**
045     * The current request. This is exposed as service Request.
046     */
047    Request getRequest();
048
049    /**
050     * The current response. This is exposed as service Response.
051     */
052    Response getResponse();
053
054    /**
055     * Stores the {@linkplain ComponentClassResolver#canonicalizePageName(String) canonicalized}
056     * name of the active page for this request.
057     * 
058     * @param pageName
059     *            name of page (probably extracted from the URL)
060     * @since 5.2.0
061     */
062    void storeActivePageName(String pageName);
063
064    /**
065     * Returns the active page name previously stored.
066     * 
067     * @return canonicalized page name
068     * @since 5.2.0
069     */
070    String getActivePageName();
071}