/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.vfny.geoserver.action; 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.ActionForward; import org.apache.struts.action.ActionMapping; import org.vfny.geoserver.config.DataConfig; import org.vfny.geoserver.config.GlobalConfig; import org.vfny.geoserver.config.WCSConfig; import org.vfny.geoserver.config.WFSConfig; import org.vfny.geoserver.config.WMSConfig; import org.vfny.geoserver.config.validation.ValidationConfig; import org.vfny.geoserver.global.ApplicationState; import org.vfny.geoserver.global.Data; import org.vfny.geoserver.global.UserContainer; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * GeoConfigAction is a common super class used by STRUTS Actions. * * <p> * ConfigAction is used to store shared services, such as looking up the * Configuration Model. * </p> * Capabilities: * * <ul> * <li> * Config (Model) Access: Convience routines have been writen to allow access * to the Config Model from the Web Container. * </li> * <li>Since configuraiton should only be attempted when logged in, an effort has been made to smooth the * required login check required by most geoserver config actions. * </li> * </ul> * <p> * Most config actions require the follow check to be made: * <pre><code> * <b>class</b> MyConfigAction <b>extends</b> ConfigAction { * Redirect execute( HttpServletRequest request, ){ * <b>if</b>( !isLoggedIn( request )){ * return new Redirect(�Login Page�); * } * UserContainer user = getUserContainer( request ); * � * <b>return new</b> Redirect(�my.jsp�); * } * } * </code></pre> * </p> * <p> * To prevent the duplication of the above code in each and every config * action pleaes make use of the alternate execute method: * <pre><code> * <b>class</b> MyConfigAction <b>extends</b> ConfigAction { * Redirect execute( UserContainer user, HttpServletRequest request ){ * � * <b>return new</b> Redirect(�my.jsp�); * } * } * </code></pre> * </p> * Please remember that Actions (like servlets) should never make use of * instance variables in order to remain thread-safe. * </p> * * @author Jody Garnett, Refractions Research, Inc. * @author jive * @author $Author: Alessio Fabiani (alessio.fabiani@gmail.com) $ (last modification) * @author $Author: Simone Giannecchini (simboss1@gmail.com) $ (last modification) * @version $Id$ */ public class ConfigAction extends GeoServerAction { /** * Execute method that redirects user if not loggin in. * <p> * The UserContainer is gathered from the session context using the * GeoServerAction.getUserContainer( request method ). * </p> * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // if (!isLoggedIn(request)) { // ActionErrors errors = new ActionErrors(); // errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.login.required")); // request.setAttribute(Globals.ERROR_KEY, errors); // request.setAttribute("forward", mapping.getForward()); // // return mapping.findForward("login"); // } return execute(mapping, form, getUserContainer(request), request, response); } /** * A "safe" execute method, only called after the user has logged in. * <p> * You may still override the normal execute method if you do not require * this service. * </p> */ public ActionForward execute(ActionMapping mapping, ActionForm form, UserContainer user, HttpServletRequest request, HttpServletResponse response) throws Exception { return null; } /** * Access Web Map Server Configuration Model from the WebContainer. * * <p> * Note that this represents the Configuration and not the state of the Web * Feature Server. * </p> * * @return Configuration information for the Web Map Server */ protected WMSConfig getWMSConfig() { return (WMSConfig) getServlet().getServletContext().getAttribute(WMSConfig.CONFIG_KEY); } /** * Access Web Feature Server Configuration Model from the WebContainer. * * <p> * Note that this represents the Configuration and not the state of the Web * Feature Server. * </p> * * @return Configuration information for Web Feature Server */ protected WFSConfig getWFSConfig() { return (WFSConfig) getServlet().getServletContext().getAttribute(WFSConfig.CONFIG_KEY); } /** * Access Web Coverage Server Configuration Model from the WebContainer. * * <p> * Note that this represents the Configuration and not the state of the Web * Coverage Server. * </p> * * @return Configuration information for Web Coverage Server */ protected WCSConfig getWCSConfig() { return (WCSConfig) getServlet().getServletContext().getAttribute(WCSConfig.CONFIG_KEY); } /** * Access Web Map Server Configuration Model from the WebContainer. * * @return Configuration model for Global information. */ protected GlobalConfig getGlobalConfig() { return (GlobalConfig) getServlet().getServletContext().getAttribute(GlobalConfig.CONFIG_KEY); } /** * Access Catalog Configuration Model from the WebContainer. * * @return Configuration model for Catalog information. */ protected DataConfig getDataConfig() { return (DataConfig) getServlet().getServletContext().getAttribute(DataConfig.CONFIG_KEY); } /** * Access Catalog Model from the WebContainer. * * @return Configuration model for Catalog information. */ protected Data getData() { return (Data) getServlet().getServletContext().getAttribute(Data.WEB_CONTAINER_KEY); } /** * Access Catalog Configuration Model from the WebContainer. * * @return Configuration model for Catalog information. */ protected ValidationConfig getValidationConfig() { return (ValidationConfig) getServlet().getServletContext() .getAttribute(ValidationConfig.CONFIG_KEY); } /** * Access Catalog Configuration Model from the WebContainer. * * @return Configuration model for Catalog information. */ protected ApplicationState getApplicationState() { return (ApplicationState) getServlet().getServletContext() .getAttribute(ApplicationState.WEB_CONTAINER_KEY); } }