mirror of https://github.com/apache/archiva.git
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:
parent
e0ecff38ea
commit
cde16b4a26
|
@ -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 )
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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 );
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue