]> source.dussan.org Git - archiva.git/commitdiff
fix possible NPE when restarting a tomcat with serialized session
authorOlivier Lamy <olamy@apache.org>
Thu, 7 Feb 2013 14:03:07 +0000 (14:03 +0000)
committerOlivier Lamy <olamy@apache.org>
Thu, 7 Feb 2013 14:03:07 +0000 (14:03 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1443484 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/util/TemporaryGroupIndexSessionCleaner.java

index 8dff3d13bd5380fd79a9de3e05bbdb8c37ce18d3..e0ffaad68f4ed37c76025a5cfb0debfc1a476fd8 100644 (file)
@@ -50,11 +50,18 @@ public class TemporaryGroupIndexSessionCleaner
     public void sessionCreated( HttpSessionEvent httpSessionEvent )
     {
         // ensure the map is here to avoid NPE
-        httpSessionEvent.getSession().setAttribute( TEMPORARY_INDEX_SESSION_KEY,
-                                                    new HashMap<String, TemporaryGroupIndex>() );
-        WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(
-            httpSessionEvent.getSession().getServletContext() );
-        indexMerger = webApplicationContext.getBean( IndexMerger.class );
+        if ( httpSessionEvent.getSession().getAttribute( TEMPORARY_INDEX_SESSION_KEY ) == null )
+        {
+            httpSessionEvent.getSession().setAttribute( TEMPORARY_INDEX_SESSION_KEY,
+                                                        new HashMap<String, TemporaryGroupIndex>() );
+        }
+
+        if ( indexMerger == null )
+        {
+            WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(
+                httpSessionEvent.getSession().getServletContext() );
+            indexMerger = webApplicationContext.getBean( IndexMerger.class );
+        }
     }
 
     public void sessionDestroyed( HttpSessionEvent httpSessionEvent )
@@ -67,8 +74,19 @@ public class TemporaryGroupIndexSessionCleaner
         {
             log.info( "cleanup temporaryGroupIndex {} directory {}", temporaryGroupIndex.getIndexId(),
                       temporaryGroupIndex.getDirectory().getAbsolutePath() );
-            indexMerger.cleanTemporaryGroupIndex( temporaryGroupIndex );
+            getIndexMerger( httpSessionEvent ).cleanTemporaryGroupIndex( temporaryGroupIndex );
+        }
+    }
+
+    private IndexMerger getIndexMerger( HttpSessionEvent httpSessionEvent )
+    {
+        if ( indexMerger == null )
+        {
+            WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(
+                httpSessionEvent.getSession().getServletContext() );
+            indexMerger = webApplicationContext.getBean( IndexMerger.class );
         }
+        return indexMerger;
     }
 }