All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.struts.config.impl.ModuleConfigImpl Maven / Gradle / Ivy

Go to download

Base project: http://central.maven.org/maven2/struts/struts/1.2.9/ This version of Struts doesn't throw java.io.NotSerializableException when the application server wants to persist sessions and makes renderFocusJavascript return valid xml

The newest version!
/*
 * $Id: ModuleConfigImpl.java 170858 2005-05-19 02:58:27Z jmitchell $ 
 *
 * Copyright 1999-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.struts.config.impl;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;

import org.apache.struts.config.ActionConfig;
import org.apache.struts.config.ActionConfigMatcher;
import org.apache.struts.config.ControllerConfig;
import org.apache.struts.config.DataSourceConfig;
import org.apache.struts.config.ExceptionConfig;
import org.apache.struts.config.FormBeanConfig;
import org.apache.struts.config.ForwardConfig;
import org.apache.struts.config.MessageResourcesConfig;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.config.PlugInConfig;

/**
 * 

The collection of static configuration information that describes a * Struts-based module. Multiple modules are identified by * a prefix at the beginning of the context * relative portion of the request URI. If no module prefix can be * matched, the default configuration (with a prefix equal to a zero-length * string) is selected, which is elegantly backwards compatible with the * previous Struts behavior that only supported one module.

* * @version $Rev: 170858 $ $Date: 2005-05-19 03:58:27 +0100 (Thu, 19 May 2005) $ * @since Struts 1.1 */ public class ModuleConfigImpl implements Serializable, ModuleConfig { /** * Constructor for ModuleConfigImpl. Assumes default configuration. * * @since Struts 1.2.8 */ public ModuleConfigImpl() { this("/"); } /** * Construct an ModuleConfigImpl object according to the specified * parameter values. * * @param prefix Context-relative URI prefix for this module */ public ModuleConfigImpl(String prefix) { super(); this.prefix = prefix; this.actionConfigs = new HashMap(); this.actionConfigList = new ArrayList(); this.actionFormBeanClass = "org.apache.struts.action.ActionFormBean"; this.actionMappingClass = "org.apache.struts.action.ActionMapping"; this.actionForwardClass = "org.apache.struts.action.ActionForward"; this.configured = false; this.controllerConfig = null; this.dataSources = new HashMap(); this.exceptions = new HashMap(); this.formBeans = new HashMap(); this.forwards = new HashMap(); this.messageResources = new HashMap(); this.plugIns = new ArrayList(); } // --------------------------------------------------------- Public Methods /** * Has this module been completely configured yet. Once this flag * has been set, any attempt to modify the configuration will return an * IllegalStateException. */ public boolean getConfigured() { return (this.configured); } /** * The controller configuration object for this module. */ public ControllerConfig getControllerConfig() { if (this.controllerConfig == null) { this.controllerConfig = new ControllerConfig(); } return (this.controllerConfig); } /** * The controller configuration object for this module. * @param cc The controller configuration object for this module. */ public void setControllerConfig(ControllerConfig cc) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } this.controllerConfig = cc; } /** * The prefix of the context-relative portion of the request URI, used to * select this configuration versus others supported by the controller * servlet. A configuration with a prefix of a zero-length String is the * default configuration for this web module. */ public String getPrefix() { return (this.prefix); } /** * The prefix of the context-relative portion of the request URI, used to * select this configuration versus others supported by the controller * servlet. A configuration with a prefix of a zero-length String is the * default configuration for this web module. */ public void setPrefix(String prefix) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } this.prefix = prefix; } /** * The default class name to be used when creating action form bean * instances. */ public String getActionFormBeanClass() { return this.actionFormBeanClass; } /** * The default class name to be used when creating action form bean * instances. * * @param actionFormBeanClass default class name to be used when creating * action form bean instances. */ public void setActionFormBeanClass(String actionFormBeanClass) { this.actionFormBeanClass = actionFormBeanClass; } /** * The default class name to be used when creating action mapping instances. */ public String getActionMappingClass() { return this.actionMappingClass; } /** * The default class name to be used when creating action mapping instances. * * @param actionMappingClass default class name to be used when creating * action mapping instances. */ public void setActionMappingClass(String actionMappingClass) { this.actionMappingClass = actionMappingClass; } /** * Add a new ActionConfig instance to the set associated * with this module. * * @param config The new configuration instance to be added * * @exception java.lang.IllegalStateException if this module configuration * has been frozen */ public void addActionConfig(ActionConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } config.setModuleConfig(this); actionConfigs.put(config.getPath(), config); actionConfigList.add(config); } /** * Add a new DataSourceConfig instance to the set associated * with this module. * * @param config The new configuration instance to be added * * @exception java.lang.IllegalStateException if this module configuration * has been frozen */ public void addDataSourceConfig(DataSourceConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } dataSources.put(config.getKey(), config); } /** * Add a new ExceptionConfig instance to the set associated * with this module. * * @param config The new configuration instance to be added * * @exception java.lang.IllegalStateException if this module configuration * has been frozen */ public void addExceptionConfig(ExceptionConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } exceptions.put(config.getType(), config); } /** * Add a new FormBeanConfig instance to the set associated * with this module. * * @param config The new configuration instance to be added * * @exception java.lang.IllegalStateException if this module configuration * has been frozen */ public void addFormBeanConfig(FormBeanConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } formBeans.put(config.getName(), config); } /** * The default class name to be used when creating action forward instances. */ public String getActionForwardClass() { return this.actionForwardClass; } /** * The default class name to be used when creating action forward instances. * * @param actionForwardClass default class name to be used when creating * action forward instances. */ public void setActionForwardClass(String actionForwardClass) { this.actionForwardClass= actionForwardClass; } /** * Add a new ForwardConfig instance to the set of global * forwards associated with this module. * * @param config The new configuration instance to be added * * @exception java.lang.IllegalStateException if this module configuration * has been frozen */ public void addForwardConfig(ForwardConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } forwards.put(config.getName(), config); } /** * Add a new MessageResourcesConfig instance to the set * associated with this module. * * @param config The new configuration instance to be added * * @exception java.lang.IllegalStateException if this module configuration * has been frozen */ public void addMessageResourcesConfig(MessageResourcesConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } messageResources.put(config.getKey(), config); } /** * Add a newly configured {@link org.apache.struts.config.PlugInConfig} instance to the set of * plug-in Actions for this module. * * @param plugInConfig The new configuration instance to be added */ public void addPlugInConfig(PlugInConfig plugInConfig) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } plugIns.add(plugInConfig); } /** * Return the action configuration for the specified path, first looking * a direct match, then if none found, a wildcard pattern match; * otherwise return null. * * @param path Path of the action configuration to return */ public ActionConfig findActionConfig(String path) { ActionConfig config = (ActionConfig) actionConfigs.get(path); // If a direct match cannot be found, try to match action configs // containing wildcard patterns if (config == null) { config = matcher.match(path); } return config; } /** * Return the action configurations for this module. If there are * none, a zero-length array is returned. */ public ActionConfig[] findActionConfigs() { ActionConfig results[] = new ActionConfig[actionConfigList.size()]; return ((ActionConfig[]) actionConfigList.toArray(results)); } /** * Return the data source configuration for the specified key, if any; * otherwise return null. * * @param key Key of the data source configuration to return */ public DataSourceConfig findDataSourceConfig(String key) { return ((DataSourceConfig) dataSources.get(key)); } /** * Return the data source configurations for this module. If there * are none, a zero-length array is returned. */ public DataSourceConfig[] findDataSourceConfigs() { DataSourceConfig results[] = new DataSourceConfig[dataSources.size()]; return ((DataSourceConfig[]) dataSources.values().toArray(results)); } /** * Return the exception configuration for the specified type, if any; * otherwise return null. * * @param type Exception class name to find a configuration for */ public ExceptionConfig findExceptionConfig(String type) { return ((ExceptionConfig) exceptions.get(type)); } /** * Return the exception configurations for this module. If there * are none, a zero-length array is returned. */ public ExceptionConfig[] findExceptionConfigs() { ExceptionConfig results[] = new ExceptionConfig[exceptions.size()]; return ((ExceptionConfig[]) exceptions.values().toArray(results)); } /** * Return the form bean configuration for the specified key, if any; * otherwise return null. * * @param name Name of the form bean configuration to return */ public FormBeanConfig findFormBeanConfig(String name) { return ((FormBeanConfig) formBeans.get(name)); } /** * Return the form bean configurations for this module. If there * are none, a zero-length array is returned. */ public FormBeanConfig[] findFormBeanConfigs() { FormBeanConfig results[] = new FormBeanConfig[formBeans.size()]; return ((FormBeanConfig[]) formBeans.values().toArray(results)); } /** * Return the forward configuration for the specified key, if any; * otherwise return null. * * @param name Name of the forward configuration to return */ public ForwardConfig findForwardConfig(String name) { return ((ForwardConfig) forwards.get(name)); } /** * Return the form bean configurations for this module. If there * are none, a zero-length array is returned. */ public ForwardConfig[] findForwardConfigs() { ForwardConfig results[] = new ForwardConfig[forwards.size()]; return ((ForwardConfig[]) forwards.values().toArray(results)); } /** * Return the message resources configuration for the specified key, * if any; otherwise return null. * * @param key Key of the data source configuration to return */ public MessageResourcesConfig findMessageResourcesConfig(String key) { return ((MessageResourcesConfig) messageResources.get(key)); } /** * Return the message resources configurations for this module. * If there are none, a zero-length array is returned. */ public MessageResourcesConfig[] findMessageResourcesConfigs() { MessageResourcesConfig results[] = new MessageResourcesConfig[messageResources.size()]; return ((MessageResourcesConfig[]) messageResources.values().toArray(results)); } /** * Return the configured plug-in actions for this module. If there * are none, a zero-length array is returned. */ public PlugInConfig[] findPlugInConfigs() { PlugInConfig results[] = new PlugInConfig[plugIns.size()]; return ((PlugInConfig[]) plugIns.toArray(results)); } /** * Freeze the configuration of this module. After this method * returns, any attempt to modify the configuration will return * an IllegalStateException. */ public void freeze() { this.configured = true; ActionConfig[] aconfigs = findActionConfigs(); for (int i = 0; i < aconfigs.length; i++) { aconfigs[i].freeze(); } matcher = new ActionConfigMatcher(aconfigs); getControllerConfig().freeze(); DataSourceConfig[] dsconfigs = findDataSourceConfigs(); for (int i = 0; i < dsconfigs.length; i++) { dsconfigs[i].freeze(); } ExceptionConfig[] econfigs = findExceptionConfigs(); for (int i = 0; i < econfigs.length; i++) { econfigs[i].freeze(); } FormBeanConfig[] fbconfigs = findFormBeanConfigs(); for (int i = 0; i < fbconfigs.length; i++) { fbconfigs[i].freeze(); } ForwardConfig[] fconfigs = findForwardConfigs(); for (int i = 0; i < fconfigs.length; i++) { fconfigs[i].freeze(); } MessageResourcesConfig[] mrconfigs = findMessageResourcesConfigs(); for (int i = 0; i < mrconfigs.length; i++) { mrconfigs[i].freeze(); } PlugInConfig[] piconfigs = findPlugInConfigs(); for (int i = 0; i < piconfigs.length; i++) { piconfigs[i].freeze(); } } /** * Remove the specified action configuration instance. * * @param config ActionConfig instance to be removed * * @exception IllegalStateException if this module configuration * has been frozen */ public void removeActionConfig(ActionConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } config.setModuleConfig(null); actionConfigs.remove(config.getPath()); actionConfigList.remove(config); } /** * Remove the specified exception configuration instance. * * @param config ActionConfig instance to be removed * * @exception IllegalStateException if this module configuration * has been frozen */ public void removeExceptionConfig(ExceptionConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } exceptions.remove(config.getType()); } /** * Remove the specified data source configuration instance. * * @param config DataSourceConfig instance to be removed * * @exception IllegalStateException if this module configuration * has been frozen */ public void removeDataSourceConfig(DataSourceConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } dataSources.remove(config.getKey()); } /** * Remove the specified form bean configuration instance. * * @param config FormBeanConfig instance to be removed * * @exception IllegalStateException if this module configuration * has been frozen */ public void removeFormBeanConfig(FormBeanConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } formBeans.remove(config.getName()); } /** * Remove the specified forward configuration instance. * * @param config ForwardConfig instance to be removed * * @exception IllegalStateException if this module configuration * has been frozen */ public void removeForwardConfig(ForwardConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } forwards.remove(config.getName()); } /** * Remove the specified message resources configuration instance. * * @param config MessageResourcesConfig instance to be removed * * @exception IllegalStateException if this module configuration * has been frozen */ public void removeMessageResourcesConfig(MessageResourcesConfig config) { if (configured) { throw new IllegalStateException("Configuration is frozen"); } messageResources.remove(config.getKey()); } // ----------------------------------------------------- Instance Variables // Instance Variables at end to make comparing Interface and implementation easier. /** * The set of action configurations for this module, if any, * keyed by the path property. */ protected HashMap actionConfigs = null; /** * The set of action configurations for this module, if any, * listed in the order in which they are added. */ protected List actionConfigList = null; /** * The set of JDBC data source configurations for this * module, if any, keyed by the key property. */ protected HashMap dataSources = null; /** * The set of exception handling configurations for this * module, if any, keyed by the type property. */ protected HashMap exceptions = null; /** * The set of form bean configurations for this module, if any, * keyed by the name property. */ protected HashMap formBeans = null; /** * The set of global forward configurations for this module, if any, * keyed by the name property. */ protected HashMap forwards = null; /** * The set of message resources configurations for this * module, if any, keyed by the key property. */ protected HashMap messageResources = null; /** * The set of configured plug-in Actions for this module, * if any, in the order they were declared and configured. */ protected ArrayList plugIns = null; /** * Has this module been completely configured yet. Once this flag * has been set, any attempt to modify the configuration will return an * IllegalStateException. */ protected boolean configured = false; /** * The controller configuration object for this module. */ protected ControllerConfig controllerConfig = null; /** * The prefix of the context-relative portion of the request URI, used to * select this configuration versus others supported by the controller * servlet. A configuration with a prefix of a zero-length String is the * default configuration for this web module. */ protected String prefix = null; /** * The default class name to be used when creating action form bean * instances. */ protected String actionFormBeanClass = "org.apache.struts.action.ActionFormBean"; /** * The default class name to be used when creating action mapping instances. */ protected String actionMappingClass = "org.apache.struts.action.ActionMapping"; /** * The default class name to be used when creating action forward instances. */ protected String actionForwardClass = "org.apache.struts.action.ActionForward"; /** * Matches action config paths against compiled wildcard patterns */ protected ActionConfigMatcher matcher = null; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy