]> source.dussan.org Git - archiva.git/commitdiff
use a bean class for request to ease future enhancements
authorOlivier Lamy <olamy@apache.org>
Thu, 7 Feb 2013 14:57:55 +0000 (14:57 +0000)
committerOlivier Lamy <olamy@apache.org>
Thu, 7 Feb 2013 14:57:55 +0000 (14:57 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1443527 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/DefaultIndexMerger.java
archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/IndexMerger.java
archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/TemporaryGroupIndex.java
archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/TemporaryGroupIndexCleaner.java
archiva-modules/archiva-web/archiva-webapp/pom.xml
archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java

index e4b69a97f188e2e4cde4ae8430028eb3a15b1612..aaee1e576ee09a1feb167396a87a19005c8f66e5 100644 (file)
@@ -47,7 +47,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
  * @author Olivier Lamy
  * @since 1.4-M2
  */
-@Service("indexMerger#default")
+@Service( "indexMerger#default" )
 public class DefaultIndexMerger
     implements IndexMerger
 {
@@ -87,7 +87,7 @@ public class DefaultIndexMerger
         this.groupMergedIndexTtl = Integer.getInteger( IndexMerger.TMP_GROUP_INDEX_SYS_KEY, DEFAULT_GROUP_INDEX_TTL );
     }
 
-    public IndexingContext buildMergedIndex( Collection<String> repositoriesIds, boolean packIndex )
+    public IndexingContext buildMergedIndex( IndexMergerRequest indexMergerRequest )
         throws IndexMergerException
     {
         File tempRepoFile = Files.createTempDir();
@@ -102,7 +102,7 @@ public class DefaultIndexMerger
                 indexer.addIndexingContext( tempRepoId, tempRepoId, tempRepoFile, indexLocation, null, null,
                                             mavenIndexerUtils.getAllIndexCreators() );
 
-            for ( String repoId : repositoriesIds )
+            for ( String repoId : indexMergerRequest.getRepositoriesIds() )
             {
                 IndexingContext idxToMerge = indexer.getIndexingContexts().get( repoId );
                 if ( idxToMerge != null )
@@ -113,12 +113,13 @@ public class DefaultIndexMerger
 
             indexingContext.optimize();
 
-            if ( packIndex )
+            if ( indexMergerRequest.isPackIndex() )
             {
                 IndexPackingRequest request = new IndexPackingRequest( indexingContext, indexLocation );
                 indexPacker.packIndex( request );
             }
-            temporaryGroupIndexes.add( new TemporaryGroupIndex( tempRepoFile, tempRepoId ) );
+            temporaryGroupIndexes.add(
+                new TemporaryGroupIndex( tempRepoFile, tempRepoId, indexMergerRequest.getGroupId() ) );
             return indexingContext;
         }
         catch ( IOException e )
index be0fb10e18f378b959f84b45d112deb99cfaeef8..b7d6fd4872e76a0a550ba12a9b98df0ec32e65a0 100644 (file)
@@ -35,12 +35,11 @@ public interface IndexMerger
     static final String TMP_GROUP_INDEX_SYS_KEY = "archiva.tmp.group.index.ttl";
 
     /**
-     * @param repositoriesIds repositories Ids to merge content
-     * @param packIndex       will generate a downloadable index
+     * @param indexMergerRequest
      * @return a temporary directory with a merge index (directory marked deleteOnExit)
      * @throws IndexMergerException
      */
-    IndexingContext buildMergedIndex( Collection<String> repositoriesIds, boolean packIndex )
+    IndexingContext buildMergedIndex( IndexMergerRequest indexMergerRequest )
         throws IndexMergerException;
 
     void cleanTemporaryGroupIndex( TemporaryGroupIndex temporaryGroupIndex );
index 489ac159449e058d97bd3580779387bb8d80f47c..06bb69e689ecbcb751798a01c3bbfbe777244055 100644 (file)
@@ -34,10 +34,13 @@ public class TemporaryGroupIndex
 
     private String indexId;
 
-    public TemporaryGroupIndex( File directory, String indexId )
+    private String groupId;
+
+    public TemporaryGroupIndex( File directory, String indexId, String groupId )
     {
         this.directory = directory;
         this.indexId = indexId;
+        this.groupId = groupId;
     }
 
     public long getCreationTime()
index edfec5a77fb7a3c1bbf932c50960a40e98305e8f..8d0cedaeb7f2ac0afff391715f1aa2eff10b6606 100644 (file)
@@ -51,14 +51,14 @@ public class TemporaryGroupIndexCleaner
     }
 
     // 900000
-    @Scheduled( fixedDelay = 900000 )
+    @Scheduled(fixedDelay = 900000)
     public void cleanTemporaryIndex()
     {
         log.info( "cleanTemporaryIndex" );
         for ( TemporaryGroupIndex temporaryGroupIndex : indexMerger.getTemporaryGroupIndexes() )
         {
-            // cleanup files older than 60 minutes 3600000
-            if ( new Date().getTime() - temporaryGroupIndex.getCreationTime() > 3600000 )
+            // cleanup files older than the ttl
+            if ( new Date().getTime() - temporaryGroupIndex.getCreationTime() > indexMerger.getGroupMergedIndexTtl() )
             {
                 indexMerger.cleanTemporaryGroupIndex( temporaryGroupIndex );
 
index d76d5fa524c4deebae81463c2ae109c73f2ee95a..8c8bceba6e132cbcf858596eba6745fca30f6332 100644 (file)
             <archiva.devMode>${archiva.devMode}</archiva.devMode>
             <archiva.javascriptLog>${archiva.javascriptLog}</archiva.javascriptLog>
             <archiva.logMissingI18n>${archiva.logMissingI18n}</archiva.logMissingI18n>
+            <archiva.tmp.group.index.ttl>0</archiva.tmp.group.index.ttl>
           </systemProperties>
           <additionalClasspathDirs>
             <additionalClasspathDir>${basedir}/src/test/tomcat</additionalClasspathDir>
index a2b7efec0addb634e5bba6dc84a885a88247d269..7078cadca046802c6ff4bd9dbe296b7aacb87d04 100644 (file)
@@ -33,6 +33,7 @@ import org.apache.archiva.configuration.ArchivaConfiguration;
 import org.apache.archiva.configuration.RepositoryGroupConfiguration;
 import org.apache.archiva.indexer.merger.IndexMerger;
 import org.apache.archiva.indexer.merger.IndexMergerException;
+import org.apache.archiva.indexer.merger.IndexMergerRequest;
 import org.apache.archiva.indexer.merger.TemporaryGroupIndex;
 import org.apache.archiva.indexer.search.RepositorySearch;
 import org.apache.archiva.maven2.metadata.MavenMetadataReader;
@@ -109,7 +110,7 @@ import java.util.Set;
 /**
  *
  */
-@Service("davResourceFactory#archiva")
+@Service( "davResourceFactory#archiva" )
 public class ArchivaDavResourceFactory
     implements DavResourceFactory, Auditable
 {
@@ -140,7 +141,7 @@ public class ArchivaDavResourceFactory
      *
      */
     @Inject
-    @Named(value = "repositoryProxyConnectors#default")
+    @Named( value = "repositoryProxyConnectors#default" )
     private RepositoryProxyConnectors connectors;
 
     /**
@@ -170,7 +171,7 @@ public class ArchivaDavResourceFactory
      *
      */
     @Inject
-    @Named(value = "httpAuthenticator#basic")
+    @Named( value = "httpAuthenticator#basic" )
     private HttpAuthenticator httpAuth;
 
     @Inject
@@ -206,7 +207,7 @@ public class ArchivaDavResourceFactory
      *
      */
     @Inject
-    @Named(value = "archivaTaskScheduler#repository")
+    @Named( value = "archivaTaskScheduler#repository" )
     private RepositoryArchivaTaskScheduler scheduler;
 
     private ApplicationContext applicationContext;
@@ -1216,10 +1217,11 @@ public class ArchivaDavResourceFactory
             }
             log.info( "generate temporary merged index for repository group '{}' for repositories '{}'", groupId,
                       authzRepos );
-            IndexingContext indexingContext = indexMerger.buildMergedIndex( authzRepos, true );
+            IndexingContext indexingContext =
+                indexMerger.buildMergedIndex( new IndexMergerRequest( authzRepos, true, groupId ) );
             File mergedRepoDir = indexingContext.getIndexDirectoryFile();
             TemporaryGroupIndex temporaryGroupIndex =
-                new TemporaryGroupIndex( mergedRepoDir, indexingContext.getId() ).setCreationTime(
+                new TemporaryGroupIndex( mergedRepoDir, indexingContext.getId(), groupId ).setCreationTime(
                     new Date().getTime() );
             temporaryGroupIndexMap.put( groupId, temporaryGroupIndex );
             session.setAttribute( TemporaryGroupIndexSessionCleaner.TEMPORARY_INDEX_SESSION_KEY,