Author: olamy
Date: Wed Nov  2 23:19:46 2011
New Revision: 1196856

URL: http://svn.apache.org/viewvc?rev=1196856&view=rev
Log:
correctly close index on shutdown

Modified:
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java?rev=1196856&r1=1196855&r2=1196856&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
 Wed Nov  2 23:19:46 2011
@@ -55,6 +55,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import javax.inject.Named;
 import java.io.File;
@@ -104,10 +105,24 @@ public class DefaultManagedRepositoryAdm
     @Inject
     protected RoleManager roleManager;
 
+    // fields
+    List<? extends IndexCreator> indexCreators;
+
+    NexusIndexer indexer;
+
     @PostConstruct
     private void initialize()
         throws RepositoryAdminException
     {
+        try
+        {
+            indexCreators = mavenIndexerUtils.getAllIndexCreators();
+            indexer = plexusSisuBridge.lookup( NexusIndexer.class );
+        }
+        catch ( PlexusSisuBridgeException e )
+        {
+            throw new RepositoryAdminException( e.getMessage(), e );
+        }
         // initialize index context on start
         for ( ManagedRepository managedRepository : getManagedRepositories() )
         {
@@ -115,6 +130,28 @@ public class DefaultManagedRepositoryAdm
         }
     }
 
+    @PreDestroy
+    private void shutdown()
+        throws RepositoryAdminException
+    {
+        try
+        {
+            // close index on shutdown
+            for ( ManagedRepository managedRepository : 
getManagedRepositories() )
+            {
+                IndexingContext context = indexer.getIndexingContexts().get( 
managedRepository.getId() );
+                if ( context != null )
+                {
+                    indexer.removeIndexingContext( context, false );
+                }
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new RepositoryAdminException( e.getMessage(), e );
+        }
+    }
+
     public List<ManagedRepository> getManagedRepositories()
         throws RepositoryAdminException
     {
@@ -523,8 +560,6 @@ public class DefaultManagedRepositoryAdm
     {
         try
         {
-            List<? extends IndexCreator> indexCreators = 
mavenIndexerUtils.getAllIndexCreators();
-            NexusIndexer indexer = plexusSisuBridge.lookup( NexusIndexer.class 
);
 
             IndexingContext context = indexer.getIndexingContexts().get( 
repository.getId() );
 
@@ -567,10 +602,6 @@ public class DefaultManagedRepositoryAdm
         {
             throw new RepositoryAdminException( e.getMessage(), e );
         }
-        catch ( PlexusSisuBridgeException e )
-        {
-            throw new RepositoryAdminException( e.getMessage(), e );
-        }
         catch ( UnsupportedExistingLuceneIndexException e )
         {
             throw new RepositoryAdminException( e.getMessage(), e );

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java?rev=1196856&r1=1196855&r2=1196856&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
 Wed Nov  2 23:19:46 2011
@@ -38,6 +38,7 @@ import org.apache.maven.index.context.Un
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import java.io.File;
 import java.io.IOException;
@@ -63,16 +64,52 @@ public class DefaultRemoteRepositoryAdmi
     @Inject
     private MavenIndexerUtils mavenIndexerUtils;
 
+    // fields
+    List<? extends IndexCreator> indexCreators;
+
+    NexusIndexer indexer;
+
     @PostConstruct
     private void initialize()
         throws RepositoryAdminException
     {
+        try
+        {
+            indexCreators = mavenIndexerUtils.getAllIndexCreators();
+            indexer = plexusSisuBridge.lookup( NexusIndexer.class );
+        }
+        catch ( PlexusSisuBridgeException e )
+        {
+            throw new RepositoryAdminException( e.getMessage(), e );
+        }
         for ( RemoteRepository remoteRepository : getRemoteRepositories() )
         {
             createIndexContext( remoteRepository );
         }
     }
 
+    @PreDestroy
+    private void shutdown()
+        throws RepositoryAdminException
+    {
+        try
+        {
+            // close index on shutdown
+            for ( RemoteRepository remoteRepository : getRemoteRepositories() )
+            {
+                IndexingContext context = indexer.getIndexingContexts().get( 
remoteRepository.getId() );
+                if ( context != null )
+                {
+                    indexer.removeIndexingContext( context, false );
+                }
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new RepositoryAdminException( e.getMessage(), e );
+        }
+    }
+
 
     public List<RemoteRepository> getRemoteRepositories()
         throws RepositoryAdminException
@@ -220,11 +257,8 @@ public class DefaultRemoteRepositoryAdmi
             // FIXME get this from ArchivaAdministration
             String appServerBase = System.getProperty( "appserver.base" );
 
-            List<? extends IndexCreator> indexCreators = 
mavenIndexerUtils.getAllIndexCreators();
-            NexusIndexer nexusIndexer = plexusSisuBridge.lookup( 
NexusIndexer.class );
-
             String contextKey = "remote-" + remoteRepository.getId();
-            IndexingContext indexingContext = 
nexusIndexer.getIndexingContexts().get( contextKey );
+            IndexingContext indexingContext = 
indexer.getIndexingContexts().get( contextKey );
             if ( indexingContext != null )
             {
                 return indexingContext;
@@ -240,10 +274,9 @@ public class DefaultRemoteRepositoryAdmi
             {
                 indexDirectory.mkdirs();
             }
-            return nexusIndexer.addIndexingContext( contextKey, 
remoteRepository.getId(), repoDir, indexDirectory,
-                                                    remoteRepository.getUrl(),
-                                                    calculateIndexRemoteUrl( 
remoteRepository ),
-                                                    
mavenIndexerUtils.getAllIndexCreators() );
+            return indexer.addIndexingContext( contextKey, 
remoteRepository.getId(), repoDir, indexDirectory,
+                                               remoteRepository.getUrl(), 
calculateIndexRemoteUrl( remoteRepository ),
+                                               
mavenIndexerUtils.getAllIndexCreators() );
         }
         catch ( MalformedURLException e )
         {
@@ -253,10 +286,6 @@ public class DefaultRemoteRepositoryAdmi
         {
             throw new RepositoryAdminException( e.getMessage(), e );
         }
-        catch ( PlexusSisuBridgeException e )
-        {
-            throw new RepositoryAdminException( e.getMessage(), e );
-        }
         catch ( UnsupportedExistingLuceneIndexException e )
         {
             throw new RepositoryAdminException( e.getMessage(), e );


Reply via email to