You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by cr...@apache.org on 2002/12/08 03:43:09 UTC
cvs commit: jakarta-struts/src/share/org/apache/struts/action ActionServlet.java
craigmcc 2002/12/07 18:43:09
Modified: src/share/org/apache/struts/action ActionServlet.java
Log:
Consistent with the way that validator and tiles initialization is done,
enhance the "config" and "config/${prefix}" servlet initialization parameters
to accept comma-delimited lists of resource paths to struts-config.xml files.
This allows you to divide up the configuration of a single module into
multiple files, if this is more convenient for your purposes.
PR: Bugzilla #13810
Submitted by: Ted Husted <husted at apache.org>
Revision Changes Path
1.134 +44 -24 jakarta-struts/src/share/org/apache/struts/action/ActionServlet.java
Index: ActionServlet.java
===================================================================
RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/action/ActionServlet.java,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -r1.133 -r1.134
--- ActionServlet.java 29 Nov 2002 19:49:50 -0000 1.133
+++ ActionServlet.java 8 Dec 2002 02:43:08 -0000 1.134
@@ -177,10 +177,12 @@
* deprecated between the 1.0 and 1.1 releases. The deprecated parameters
* are listed after the nominal parameters.</p>
* <ul>
- * <li><strong>config</strong> - Context-relative path to the XML resource
- * containing the configuration information for the default module.
+ * <li><strong>config</strong> - Comma-separated list of context-relative
+ * path(s) to the XML resource(s) containing the configuration information
+ * for the default module. (Multiple files support since Struts 1.1)
* [/WEB-INF/struts-config.xml].</li>
- * <li><strong>config/${module}</strong> - Context-relative path to the XML resource
+ * <li><strong>config/${module}</strong> - Comma-separated list of
+ * Context-relative path(s) to the XML resource(s)
* containing the configuration information for the module that
* will use the specified prefix (/${module}). This can be repeated as many
* times as required for multiple modules. (Since Struts 1.1)</li>
@@ -310,8 +312,8 @@
/**
- * The context-relative path to our configuration resource for the
- * default module.
+ * Comma-separated list of context-relative path(s) to our configuration
+ * resource(s) for the default module.
*/
protected String config = "/WEB-INF/struts-config.xml";
@@ -858,18 +860,18 @@
* specified module.</p>
*
* @param prefix Module prefix for this module
- * @param path Context-relative resource path for this application's
- * configuration resource
+ * @param paths Comma-separated list of context-relative resource path(s)
+ * for this application's configuration resource(s)
*
* @exception ServletException if initialization cannot be performed
* @since Struts 1.1
*/
protected ModuleConfig initModuleConfig
- (String prefix, String path) throws ServletException {
+ (String prefix, String paths) throws ServletException {
if (log.isDebugEnabled()) {
log.debug("Initializing module path '" + prefix +
- "' configuration from '" + path + "'");
+ "' configuration from '" + paths + "'");
}
// Parse the application configuration for this module
@@ -886,20 +888,38 @@
config.setActionMappingClass(mapping);
}
+ // Configure the Digester instance we will use
Digester digester = initConfigDigester();
- digester.push(config);
- URL url = getServletContext().getResource(path);
- InputSource is = new InputSource(url.toExternalForm());
- input = getServletContext().getResourceAsStream(path);
- is.setByteStream(input);
- digester.parse(is);
- getServletContext().setAttribute
- (Globals.MODULE_KEY + prefix, config);
-
+
+ // Process each specified resource path
+ while (paths.length() > 0) {
+ digester.push(config);
+ String path = null;
+ int comma = paths.indexOf(',');
+ if (comma >= 0) {
+ path = paths.substring(0, comma).trim();
+ paths = paths.substring(comma + 1);
+ } else {
+ path = paths.trim();
+ paths = "";
+ }
+ if (path.length() < 1) {
+ break;
+ }
+ URL url = getServletContext().getResource(path);
+ InputSource is = new InputSource(url.toExternalForm());
+ input = getServletContext().getResourceAsStream(path);
+ is.setByteStream(input);
+ digester.parse(is);
+ getServletContext().setAttribute
+ (Globals.MODULE_KEY + prefix, config);
+ input.close();
+ }
+
} catch (Throwable t) {
- log.error(internal.getMessage("configParse", path), t);
+ log.error(internal.getMessage("configParse", paths), t);
throw new UnavailableException
- (internal.getMessage("configParse", path));
+ (internal.getMessage("configParse", paths));
} finally {
if (input != null) {
try {
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>