You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by pb...@apache.org on 2007/06/27 06:58:45 UTC

svn commit: r551041 - /struts/struts1/trunk/core/src/main/java/org/apache/struts/validator/ValidatorPlugIn.java

Author: pbenedict
Date: Tue Jun 26 21:58:43 2007
New Revision: 551041

URL: http://svn.apache.org/viewvc?view=rev&rev=551041
Log:
STR-2904: Verify only one instance of the plugin is loaded per module

Modified:
    struts/struts1/trunk/core/src/main/java/org/apache/struts/validator/ValidatorPlugIn.java

Modified: struts/struts1/trunk/core/src/main/java/org/apache/struts/validator/ValidatorPlugIn.java
URL: http://svn.apache.org/viewvc/struts/struts1/trunk/core/src/main/java/org/apache/struts/validator/ValidatorPlugIn.java?view=diff&rev=551041&r1=551040&r2=551041
==============================================================================
--- struts/struts1/trunk/core/src/main/java/org/apache/struts/validator/ValidatorPlugIn.java (original)
+++ struts/struts1/trunk/core/src/main/java/org/apache/struts/validator/ValidatorPlugIn.java Tue Jun 26 21:58:43 2007
@@ -28,6 +28,7 @@
 import org.apache.struts.config.ModuleConfig;
 import org.xml.sax.SAXException;
 
+import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.UnavailableException;
 
@@ -155,18 +156,24 @@
      */
     public void init(ActionServlet servlet, ModuleConfig config)
         throws ServletException {
+
         // Remember our associated configuration and servlet
         this.config = config;
         this.servlet = servlet;
+        
+        // Verify only one instance of the plugin is loaded per module
+        String validatorModuleKey = VALIDATOR_KEY + config.getPrefix();
+        ServletContext servletContext = servlet.getServletContext();
+        if (servletContext.getAttribute(validatorModuleKey) != null) {
+            throw new UnavailableException("ValidatorPlugIn cannot be " +
+                    "redefined for module '" + config.getPrefix() + "'");
+        }
 
         // Load our database from persistent storage
         try {
             this.initResources();
-
-            servlet.getServletContext().setAttribute(VALIDATOR_KEY
-                + config.getPrefix(), resources);
-
-            servlet.getServletContext().setAttribute(STOP_ON_ERROR_KEY + '.'
+            servletContext.setAttribute(validatorModuleKey, resources);
+            servletContext.setAttribute(STOP_ON_ERROR_KEY + '.'
                 + config.getPrefix(),
                 (this.stopOnFirstError ? Boolean.TRUE : Boolean.FALSE));
         } catch (Exception e) {