use a bean class for request to ease future enhancements

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1443527 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Olivier Lamy 2013-02-07 14:57:55 +00:00
parent e0ecff38ea
commit cde16b4a26
6 changed files with 24 additions and 18 deletions

View File

@ -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 )

View 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 );

View 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()

View File

@ -57,8 +57,8 @@ public class TemporaryGroupIndexCleaner
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 );

View File

@ -991,6 +991,7 @@
<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>

View 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;
@ -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,