📄 moduleconfigimpl.java
字号:
/*
* $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/config/impl/ModuleConfigImpl.java,v 1.14 2004/04/14 23:46:15 husted Exp $
* $Revision: 1.14 $
* $Date: 2004/04/14 23:46:15 $
*
* 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;
/**
* <p>The collection of static configuration information that describes a
* Struts-based module. Multiple modules are identified by
* a <em>prefix</em> 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.</p>
*
* @version $Revision: 1.14 $ $Date: 2004/04/14 23:46:15 $
* @since Struts 1.1
*/
public class ModuleConfigImpl implements Serializable, ModuleConfig {
/**
* 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 <code>ActionConfig</code> 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 <code>DataSourceConfig</code> 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 <code>ExceptionConfig</code> 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 <code>FormBeanConfig</code> 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 <code>ForwardConfig</code> 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 <code>MessageResourcesConfig</code> 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 <code>null</code>.
*
* @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 <code>null</code>.
*
* @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() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -