📄 confighelper.java
字号:
/*
* $Header: /sfroot/cvs/esimple/src/core/org/apache/struts/config/ConfigHelper.java,v 1.1.1.1 2004/09/08 06:38:32 lava Exp $
* $Revision: 1.1.1.1 $
* $Date: 2004/09/08 06:38:32 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.struts.config;
import java.util.Iterator;
import java.util.Locale;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
import org.apache.struts.Globals;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionFormBean;
import org.apache.struts.action.ActionFormBeans;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionForwards;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMappings;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.upload.MultipartRequestWrapper;
import org.apache.struts.util.MessageResources;
/**
* NOTE: THIS CLASS IS UNDER ACTIVE DEVELOPMENT.
* THE CURRENT CODE IS WRITTEN FOR CLARITY NOT EFFICIENCY.
* NOT EVERY API FUNCTION HAS BEEN IMPLEMENTED YET.
*
* A helper object to expose the Struts shared resources,
* which are be stored in the application, session, or
* request contexts, as appropriate.
*
* An instance should be created for each request
* processed. The methods which return resources from
* the request or session contexts are not thread-safe.
*
* Provided for use by other servlets in the application
* so they can easily access the Struts shared resources.
*
* The resources are stored under attributes in the
* application, session, or request contexts.
*
* The ActionConfig methods simply return the resources
* from under the context and key used by the Struts
* ActionServlet when the resources are created.
*
* @since 1.1
* @author Ted Husted
* @author Luis Arias <luis@elysia.com>
* @version $Revision: 1.1.1.1 $ $Date: 2004/09/08 06:38:32 $
*/
public class ConfigHelper implements ConfigHelperInterface {
// -------------------------------------------------------- Properites
/**
* The application associated with this instance.
*/
private ServletContext application = null;
/**
* Set the application associated with this instance.
* [servlet.getServletContext()]
*/
public void setApplication(ServletContext application) {
this.application = application;
}
/**
* The session associated with this instance.
*/
private HttpSession session = null;
/**
* Set the session associated with this instance.
*/
public void setSession(HttpSession session) {
this.session = session;
}
/**
* The request associated with this instance.
*/
private HttpServletRequest request = null;
/**
* Set the request associated with this object.
* Session object is also set or cleared.
*/
public void setRequest(HttpServletRequest request) {
this.request = request;
if (this.request == null)
setSession(null);
else
setSession(this.request.getSession());
}
/**
* The response associated with this instance.
*/
private HttpServletResponse response = null;
/**
* Set the response associated with this isntance.
* Session object is also set or cleared.
*/
public void setResponse(HttpServletResponse response) {
this.response = response;
}
/**
* The forward associated with this instance.
*/
private ActionForward forward = null;
/**
* Set the forward associated with this instance.
*/
public void setForward(ActionForward forward) {
this.forward = forward;
}
/**
* Set the application and request for this object instance.
* The ServletContext can be set by any servlet in the application.
* The request should be the instant request.
* Most of the other methods retrieve their own objects
* by reference to the application, request, or session
* attributes.
* Do not call other methods without setting these first!
* This is also called by the convenience constructor.
*
* @param application - The associated ServletContext.
* @param request - The associated HTTP request.
* @param response - The associated HTTP response.
*/
public void setResources(
ServletContext application,
HttpServletRequest request,
HttpServletResponse response) {
setApplication(application);
setRequest(request);
setResponse(response);
}
// ------------------------------------------------ Application Context
/**
* The strong>default</strong>
* configured data source (which must implement
* <code>javax.sql.DataSource</code>),
* if one is configured for this application.
*/
public DataSource getDataSource() {
if (this.application == null)
return null;
return (DataSource) this.application.getAttribute(Globals.DATA_SOURCE_KEY);
}
public ActionMessages getActionMessages() {
if (this.application == null)
return null;
return (ActionMessages) this.application.getAttribute(Globals.MESSAGE_KEY);
}
/**
* The <code>org.apache.struts.action.ActionFormBeans</code> collection
* for this application.
*/
public ActionFormBeans getActionFormBeans() {
if (this.application == null) {
return null;
}
return (ActionFormBeans) this.application.getAttribute(Globals.FORM_BEANS_KEY);
}
/**
* The <code>org.apache.struts.action.ActionForwards</code> collection
* for this application.
*/
public ActionForwards getActionForwards() {
if (this.application == null) {
return null;
}
return (ActionForwards) this.application.getAttribute(Globals.FORWARDS_KEY);
}
/**
* The context attributes key under which our
* <code>org.apache.struts.action.ActionMappings</code> collection
* is normally stored, unless overridden when initializing our
* ActionServlet.
*/
public ActionMappings getActionMappings() {
if (this.application == null) {
return null;
}
return (ActionMappings) this.application.getAttribute(Globals.MAPPINGS_KEY);
}
/**
* The application resources for this application.
*/
public MessageResources getMessageResources() {
if (this.application == null) {
return null;
}
return (MessageResources) this.application.getAttribute(Globals.MESSAGES_KEY);
}
/**
* The path-mapped pattern (<code>/action/*</code>) or
* extension mapped pattern ((<code>*.do</code>)
* used to determine our Action URIs in this application.
*/
public String getServletMapping() {
if (this.application == null) {
return null;
}
return (String) this.application.getAttribute(Globals.SERVLET_KEY);
}
// ---------------------------------------------------- Session Context
/**
* The <code>java.util.Locale</code> for the user, if any.
* If a default locale object is not in the user's session,
* the system default locale is returned.
* If used, the user locale is typically set during login
* processing under the key <code>Globals.LOCALE_KEY</code>.
*/
public Locale getLocale() {
Locale locale = null;
if (session != null) {
locale = (Locale) session.getAttribute(Globals.LOCALE_KEY);
}
if ((locale == null) && (request != null)) {
locale = request.getLocale();
}
return locale;
}
/**
* The transaction token stored in this session, if it is used.
*/
public String getToken() {
if (this.session == null) {
return null;
}
return (String) session.getAttribute(Globals.TRANSACTION_TOKEN_KEY);
}
// ---------------------------------------------------- Request Context
/**
* The <code>org.apache.struts.action.ActionErrors</code> object,
* for this request.
*/
public ActionErrors getActionErrors() {
if (this.request == null) {
return null;
}
return (ActionErrors) this.request.getAttribute(Globals.ERROR_KEY);
}
/**
* The runtime JspException that may be been thrown by a Struts tag
* extension, or compatible presentation extension, and placed
* in the request.
*/
public Throwable getException() {
if (this.request == null) {
return null;
}
return (Throwable) this.request.getAttribute(Globals.EXCEPTION_KEY);
}
/**
* The multipart object for this request.
*/
public MultipartRequestWrapper getMultipartRequestWrapper() {
if (this.request == null) {
return null;
}
return (MultipartRequestWrapper) this.request.getAttribute(Globals.MULTIPART_KEY);
}
/**
* The <code>org.apache.struts.ActionMapping</code>
* instance for this request.
*/
public ActionMapping getMapping() {
if (this.request == null) {
return null;
}
return (ActionMapping) this.request.getAttribute(Globals.MAPPING_KEY);
}
// ---------------------------------------------------- Utility Methods
/**
* Return true if a message string for the specified message key
* is present for the user's Locale.
*
* @param key Message key
*/
public boolean isMessage(String key) {
// Look up the requested MessageResources
MessageResources resources = getMessageResources();
if (resources == null) {
return false;
}
// Return the requested message presence indicator
return (resources.isPresent(getLocale(), key));
}
/*
* Retrieve and return the <code>ActionForm</code> bean associated with
* this mapping, creating and stashing one if necessary. If there is no
* form bean associated with this mapping, return <code>null</code>.
*
*/
public ActionForm getActionForm() {
// Is there a mapping associated with this request?
ActionMapping mapping = getMapping();
if (mapping == null)
return (null);
// Is there a form bean associated with this mapping?
String attribute = mapping.getAttribute();
if (attribute == null)
return (null);
// Look up the existing form bean, if any
ActionForm instance = null;
if ("request".equals(mapping.getScope())) {
instance = (ActionForm) this.request.getAttribute(attribute);
} else {
instance = (ActionForm) this.session.getAttribute(attribute);
}
return instance;
}
/**
* Return the form bean definition associated with the specified
* logical name, if any; otherwise return <code>null</code>.
*
* @param name Logical name of the requested form bean definition
*/
public ActionFormBean getFormBean(String name) {
ActionFormBeans formBeans = getActionFormBeans();
if (formBeans == null)
return null;
return formBeans.findFormBean(name);
}
/**
* Return the forwarding associated with the specified logical name,
* if any; otherwise return <code>null</code>.
*
* @param name Logical name of the requested forwarding
*/
public ActionForward getActionForward(String name) {
ActionForwards forwards = getActionForwards();
if (forwards == null)
return null;
return forwards.findForward(name);
}
/**
* Return the mapping associated with the specified request path, if any;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -