001: /*
002: * $Id: ServletActionContext.java 471756 2006-11-06 15:01:43Z husted $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021: package org.apache.struts2;
022:
023: import java.util.Map;
024:
025: import javax.servlet.ServletContext;
026: import javax.servlet.http.HttpServletRequest;
027: import javax.servlet.http.HttpServletResponse;
028: import javax.servlet.jsp.PageContext;
029:
030: import org.apache.struts2.dispatcher.mapper.ActionMapping;
031:
032: import com.opensymphony.xwork2.ActionContext;
033: import com.opensymphony.xwork2.util.ValueStack;
034:
035: /**
036: * Web-specific context information for actions. This class subclasses <tt>ActionContext</tt> which
037: * provides access to things like the action name, value stack, etc. This class adds access to
038: * web objects like servlet parameters, request attributes and things like the HTTP session.
039: */
040: public class ServletActionContext extends ActionContext implements
041: StrutsStatics {
042:
043: private static final long serialVersionUID = -666854718275106687L;
044:
045: public static final String STRUTS_VALUESTACK_KEY = "struts.valueStack";
046: public static final String ACTION_MAPPING = "struts.actionMapping";
047:
048: @SuppressWarnings("unused")
049: private ServletActionContext(Map context) {
050: super (context);
051: }
052:
053: /**
054: * Gets the current action context
055: *
056: * @param req The request
057: * @return The current action context
058: */
059: public static ActionContext getActionContext(HttpServletRequest req) {
060: ValueStack vs = getValueStack(req);
061: if (vs != null) {
062: return new ActionContext(vs.getContext());
063: } else {
064: return null;
065: }
066: }
067:
068: /**
069: * Gets the current value stack for this request
070: *
071: * @param req The request
072: * @return The value stack
073: */
074: public static ValueStack getValueStack(HttpServletRequest req) {
075: return (ValueStack) req.getAttribute(STRUTS_VALUESTACK_KEY);
076: }
077:
078: /**
079: * Gets the action mapping for this context
080: *
081: * @return The action mapping
082: */
083: public static ActionMapping getActionMapping() {
084: return (ActionMapping) ActionContext.getContext().get(
085: ACTION_MAPPING);
086: }
087:
088: /**
089: * Returns the HTTP page context.
090: *
091: * @return the HTTP page context.
092: */
093: public static PageContext getPageContext() {
094: return (PageContext) ActionContext.getContext().get(
095: PAGE_CONTEXT);
096: }
097:
098: /**
099: * Sets the HTTP servlet request object.
100: *
101: * @param request the HTTP servlet request object.
102: */
103: public static void setRequest(HttpServletRequest request) {
104: ActionContext.getContext().put(HTTP_REQUEST, request);
105: }
106:
107: /**
108: * Gets the HTTP servlet request object.
109: *
110: * @return the HTTP servlet request object.
111: */
112: public static HttpServletRequest getRequest() {
113: return (HttpServletRequest) ActionContext.getContext().get(
114: HTTP_REQUEST);
115: }
116:
117: /**
118: * Sets the HTTP servlet response object.
119: *
120: * @param response the HTTP servlet response object.
121: */
122: public static void setResponse(HttpServletResponse response) {
123: ActionContext.getContext().put(HTTP_RESPONSE, response);
124: }
125:
126: /**
127: * Gets the HTTP servlet response object.
128: *
129: * @return the HTTP servlet response object.
130: */
131: public static HttpServletResponse getResponse() {
132: return (HttpServletResponse) ActionContext.getContext().get(
133: HTTP_RESPONSE);
134: }
135:
136: /**
137: * Gets the servlet context.
138: *
139: * @return the servlet context.
140: */
141: public static ServletContext getServletContext() {
142: return (ServletContext) ActionContext.getContext().get(
143: SERVLET_CONTEXT);
144: }
145:
146: /**
147: * Sets the current servlet context object
148: *
149: * @param servletContext The servlet context to use
150: */
151: public static void setServletContext(ServletContext servletContext) {
152: ActionContext.getContext().put(SERVLET_CONTEXT, servletContext);
153: }
154: }
|