You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2009/05/15 23:11:35 UTC

svn commit: r775345 - /myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java

Author: lu4242
Date: Fri May 15 21:11:35 2009
New Revision: 775345

URL: http://svn.apache.org/viewvc?rev=775345&view=rev
Log:
MYFACES-2165 concurrent issue in initializing myfaces 1.1.6

Modified:
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java?rev=775345&r1=775344&r2=775345&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java Fri May 15 21:11:35 2009
@@ -43,8 +43,8 @@
     private Map _filters = new HashMap();
     private Map _filterMappings = new HashMap();
 
-    private List _facesServletMappings = null;
-    private List _facesExtensionsFilterMappings = null;
+    private volatile List _facesServletMappings = null;
+    private volatile List _facesExtensionsFilterMappings = null;
     
     private String _delegateFacesServlet = null;
 
@@ -108,7 +108,7 @@
     {
         if (_facesServletMappings != null) return _facesServletMappings;
 
-        _facesServletMappings = new ArrayList();
+        List tempFacesServletMappings = new ArrayList();
         for (Iterator it = _servlets.entrySet().iterator(); it.hasNext(); )
         {
             Map.Entry entry = (Map.Entry)it.next();
@@ -134,7 +134,7 @@
                     for (Iterator it2 = urlPatterns.iterator(); it2.hasNext(); )
                     {
                         String urlpattern = (String)it2.next();
-                        _facesServletMappings.add(new org.apache.myfaces.shared.webapp.webxml.ServletMapping(servletName,
+                        tempFacesServletMappings.add(new org.apache.myfaces.shared.webapp.webxml.ServletMapping(servletName,
                                                                                                              servletClass,
                                                                                                              urlpattern));
                         if (log.isTraceEnabled())
@@ -147,6 +147,10 @@
                 if (log.isTraceEnabled()) log.trace("ignoring servlet + " + servletName + " " + servletClass + " (no FacesServlet)");
             }
         }
+        
+        //Expose to all threads
+        _facesServletMappings = tempFacesServletMappings;
+        
         return _facesServletMappings;
     }
 
@@ -158,7 +162,7 @@
     {
         if (_facesExtensionsFilterMappings != null) return _facesExtensionsFilterMappings;
 
-        _facesExtensionsFilterMappings = new ArrayList();
+        List tempExtensionsFilterMappings = new ArrayList();
         for (Iterator it = _filters.entrySet().iterator(); it.hasNext(); )
         {
             Map.Entry entry = (Map.Entry)it.next();
@@ -179,13 +183,17 @@
                 for (Iterator it2 = urlPatterns.iterator(); it2.hasNext(); )
                 {
                     String urlpattern = (String)it2.next();
-                    _facesExtensionsFilterMappings.add(new org.apache.myfaces.shared.webapp.webxml.FilterMapping(
+                    tempExtensionsFilterMappings.add(new org.apache.myfaces.shared.webapp.webxml.FilterMapping(
                         filterName, filterClass, urlpattern));
                     if (log.isTraceEnabled())
                         log.trace("adding mapping for filter + " + filterName + " urlpattern = " + urlpattern);
                 }
             }
         }
+        
+        //Expose to all threads
+        _facesExtensionsFilterMappings = tempExtensionsFilterMappings;
+        
         return _facesExtensionsFilterMappings;
     }