/*
* $Id: ModuleConfig.java 471754 2006-11-06 14:55:09Z husted $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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;
/**
* <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 $Rev: 471754 $ $Date: 2005-08-06 04:12:10 -0400 (Sat, 06 Aug 2005)
* $
* @since Struts 1.1
*/
public interface ModuleConfig {
/**
* <p> Has this module been completely configured yet. Once this flag has
* been set, any attempt to modify the configuration will return an
* IllegalStateException. </p>
*/
boolean getConfigured();
/**
* <p> The controller configuration object for this module. </p>
*/
ControllerConfig getControllerConfig();
/**
* <p> The controller configuration object for this module. </p>
*
* @param cc The controller configuration object for this module.
*/
void setControllerConfig(ControllerConfig cc);
/**
* <p> 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. </p>
*/
String getPrefix();
/**
* <p> 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. </p>
*
* @param prefix The prefix of the context-relative portion of the request
* URI.
*/
public void setPrefix(String prefix);
/**
* <p> The default class name to be used when creating action form bean
* instances. </p>
*/
String getActionFormBeanClass();
/**
* <p> The default class name to be used when creating action form bean
* instances. </p>
*
* @param actionFormBeanClass default class name to be used when creating
* action form bean instances.
*/
void setActionFormBeanClass(String actionFormBeanClass);
/**
* <p> The default class name to be used when creating action mapping
* instances. </p>
*/
String getActionMappingClass();
/**
* <p> The default class name to be used when creating action mapping
* instances. </p>
*
* @param actionMappingClass default class name to be used when creating
* action mapping instances.
*/
void setActionMappingClass(String actionMappingClass);
/**
* <p> Add a new <code>ActionConfig</code> instance to the set associated
* with this module. </p>
*
* @param config The new configuration instance to be added
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void addActionConfig(ActionConfig config);
/**
* <p> Add a new <code>ExceptionConfig</code> instance to the set
* associated with this module. </p>
*
* @param config The new configuration instance to be added
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void addExceptionConfig(ExceptionConfig config);
/**
* <p> Add a new <code>FormBeanConfig</code> instance to the set
* associated with this module. </p>
*
* @param config The new configuration instance to be added
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void addFormBeanConfig(FormBeanConfig config);
/**
* <p> The default class name to be used when creating action forward
* instances. </p>
*/
String getActionForwardClass();
/**
* <p> The default class name to be used when creating action forward
* instances. </p>
*
* @param actionForwardClass default class name to be used when creating
* action forward instances.
*/
void setActionForwardClass(String actionForwardClass);
/**
* <p> Add a new <code>ForwardConfig</code> instance to the set of global
* forwards associated with this module. </p>
*
* @param config The new configuration instance to be added
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void addForwardConfig(ForwardConfig config);
/**
* <p> Add a new <code>MessageResourcesConfig</code> instance to the set
* associated with this module. </p>
*
* @param config The new configuration instance to be added
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void addMessageResourcesConfig(MessageResourcesConfig config);
/**
* <p> Add a newly configured {@link PlugInConfig} instance to the set of
* plug-in Actions for this module. </p>
*
* @param plugInConfig The new configuration instance to be added
*/
void addPlugInConfig(PlugInConfig plugInConfig);
/**
* <p> Return the action configuration for the specified path, if any;
* otherwise return <code>null</code>. </p>
*
* @param path Path of the action configuration to return
*/
ActionConfig findActionConfig(String path);
/**
* <p> Return the action configurations for this module. If there are
* none, a zero-length array is returned. </p>
*/
ActionConfig[] findActionConfigs();
/**
* <p>Returns the action configuration for the specifed action
* action identifier.</p>
*
* @param actionId the action identifier
* @return the action config if found; otherwise <code>null</code>
* @see ActionConfig#getActionId()
* @since Struts 1.3.6
*/
ActionConfig findActionConfigId(String actionId);
/**
* <p> Return the exception configuration for the specified type, if any;
* otherwise return <code>null</code>. </p>
*
* @param type Exception class name to find a configuration for
*/
ExceptionConfig findExceptionConfig(String type);
/**
* <p> Perform a recursive search for an ExceptionConfig registered for
* this class, or for any superclass. This should only be used in the
* case when an <code>ActionConfig</code> is not available; otherwise, use
* <code>ActionConfig.findException(Class)</code> to preserve the search
* order. </p>
*
* @param type Exception class name to find a configuration for
* @see ActionConfig findException(Class)
*/
ExceptionConfig findException(Class type);
/**
* <p> Return the exception configurations for this module. If there are
* none, a zero-length array is returned. </p>
*/
ExceptionConfig[] findExceptionConfigs();
/**
* <p> Return the form bean configuration for the specified key, if any;
* otherwise return <code>null</code>.
*
* @param name Name of the form bean configuration to return
*/
FormBeanConfig findFormBeanConfig(String name);
/**
* <p> Return the form bean configurations for this module. If there are
* none, a zero-length array is returned. </p>
*/
FormBeanConfig[] findFormBeanConfigs();
/**
* <p> Return the forward configuration for the specified key, if any;
* otherwise return <code>null</code>. </p>
*
* @param name Name of the forward configuration to return
*/
ForwardConfig findForwardConfig(String name);
/**
* <p> Return the form bean configurations for this module. If there are
* none, a zero-length array is returned. </p>
*/
ForwardConfig[] findForwardConfigs();
/**
* <p> Return the message resources configuration for the specified key,
* if any; otherwise return <code>null</code>. </p>
*
* @param key Key of the data source configuration to return
*/
MessageResourcesConfig findMessageResourcesConfig(String key);
/**
* <p> Return the message resources configurations for this module. If
* there are none, a zero-length array is returned. </p>
*/
MessageResourcesConfig[] findMessageResourcesConfigs();
/**
* <p> Return the configured plug-in actions for this module. If there
* are none, a zero-length array is returned. </p>
*/
PlugInConfig[] findPlugInConfigs();
/**
* <p> Freeze the configuration of this module. After this method
* returns, any attempt to modify the configuration will return an
* IllegalStateException. </p>
*/
void freeze();
/**
* <p> Remove the specified action configuration instance. </p>
*
* @param config ActionConfig instance to be removed
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void removeActionConfig(ActionConfig config);
/**
* <p> Remove the specified exception configuration instance. </p>
*
* @param config ActionConfig instance to be removed
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void removeExceptionConfig(ExceptionConfig config);
/**
* <p> Remove the specified form bean configuration instance. </p>
*
* @param config FormBeanConfig instance to be removed
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void removeFormBeanConfig(FormBeanConfig config);
/**
* <p> Remove the specified forward configuration instance. </p>
*
* @param config ForwardConfig instance to be removed
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void removeForwardConfig(ForwardConfig config);
/**
* <p> Remove the specified message resources configuration instance.
* </p>
*
* @param config MessageResourcesConfig instance to be removed
* @throws IllegalStateException if this module configuration has been
* frozen
*/
void removeMessageResourcesConfig(MessageResourcesConfig config);
}