Attached is the patch for multiple config file support
for Struts 1.1.  Any consensus/decision on whether or
not we should log "duplicates"?

James Holmes
[EMAIL PROTECTED]
http://www.ejcenter.com/struts/


__________________________________________________
Do You Yahoo!?
Make a great connection at Yahoo! Personals.
http://personals.yahoo.com
Index: jakarta-struts/src/share/org/apache/struts/action/ActionServlet.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-struts/src/share/org/apache/struts/action/ActionServlet.java,v
retrieving revision 1.76
diff -u -r1.76 ActionServlet.java
--- jakarta-struts/src/share/org/apache/struts/action/ActionServlet.java        
2001/10/07 04:48:08     1.76
+++ jakarta-struts/src/share/org/apache/struts/action/ActionServlet.java        
+2001/10/22 13:24:47
@@ -72,6 +72,7 @@
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.MissingResourceException;
+import java.util.StringTokenizer;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletException;
 import javax.servlet.UnavailableException;
@@ -159,9 +160,9 @@
  *     resources bundle base class.  [NONE]</li>
  * <li><strong>bufferSize</strong> - The size of the input buffer used when
  *     processing file uploads.  [4096]</li>
- * <li><strong>config</strong> - Context-relative path to the XML resource
- *     containing our configuration information.
- *     [/WEB-INF/struts-config.xml]</li>
+ * <li><strong>config</strong> - Comma seperated list of context-relative paths
+ *     to the XML resources containing our configuration information.
+ *     [/WEB-INF/struts-config.xml,/WEB-INF/struts-config2.xml]</li>
  * <li><strong>content</strong> - Default content type and character encoding
  *     to be set on each response; may be overridden by a forwarded-to
  *     servlet or JSP page.  [text/html]</li>
@@ -1257,30 +1258,40 @@
        if (debug >= 1)
            log(internal.getMessage("configInit", config));
 
-       // Acquire an input stream to our configuration resource
-       InputStream input = getServletContext().getResourceAsStream(config);
-       if (input == null)
-           throw new UnavailableException
-               (internal.getMessage("configMissing", config));
-
-       // Build a digester to process our configuration resource
-       Digester digester = initDigester(detail);
-
-       // Parse the input stream to configure our mappings
-       try {
-            formBeans.setFast(false);
-            forwards.setFast(false);
-            mappings.setFast(false);
-           digester.parse(input);
-            mappings.setFast(true);
-            forwards.setFast(true);
-            formBeans.setFast(true);
-       } catch (SAXException e) {
-           throw new ServletException
-               (internal.getMessage("configParse", config), e);
-        } finally {
-           input.close();
+       // don't use fast
+       formBeans.setFast(false);
+       forwards.setFast(false);
+       mappings.setFast(false);
+
+       // Process each config file
+       StringTokenizer st = new StringTokenizer(config, ",");
+       while (st.hasMoreTokens()) {
+           String configToken = st.nextToken().trim();
+
+           // Acquire an input stream to our configuration resource
+           InputStream input = getServletContext().getResourceAsStream(configToken);
+           if (input == null)
+               throw new UnavailableException
+                  (internal.getMessage("configMissing", configToken));
+
+           // Build a digester to process our configuration resource
+           Digester digester = initDigester(detail);
+
+           // Parse the input stream to configure our mappings
+           try {
+               digester.parse(input);
+           } catch (SAXException e) {
+               throw new ServletException
+                   (internal.getMessage("configParse", configToken), e);
+           } finally {
+               input.close();
+           }
        }
+
+       // use fast
+       mappings.setFast(true);
+       forwards.setFast(true);
+       formBeans.setFast(true);
 
     }
 

Reply via email to