Adding type for repository group config

This commit is contained in:
Martin Stockhammer 2019-06-06 21:36:46 +02:00
parent 6c0afa8b8f
commit c2bbd80b1b
14 changed files with 48 additions and 21 deletions

View File

@ -47,6 +47,15 @@ public class RepositoryGroupConfiguration
*/
private String name;
/**
*
* The repository type. Currently only MAVEN type
* is known.
*
*/
private String type = "MAVEN";
/**
* The path of the merged index.
*/
@ -211,4 +220,12 @@ public class RepositoryGroupConfiguration
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}

View File

@ -731,6 +731,7 @@ public class ConfigurationRegistryReader {
value.setId(id);
value.setName(registry.getString(prefix + "name"));
value.setType(registry.getString(prefix + "type"));
//String mergedIndexPath = registry.getString( prefix + "mergedIndexPath", value.getMergedIndexPath() );

View File

@ -422,6 +422,9 @@ public class ConfigurationRegistryWriter {
if (value.getName() != null) {
registry.setString(prefix + "name", value.getName());
}
if (value.getType() != null) {
registry.setString(prefix + "type", value.getType());
}
if (value.getMergedIndexPath() != null && !value.getMergedIndexPath().equals(".indexer")
) {
String mergedIndexPath = "mergedIndexPath";

View File

@ -18,7 +18,7 @@ package org.apache.archiva.indexer.merger;
* under the License.
*/
import org.apache.maven.index.context.IndexingContext;
import org.apache.archiva.indexer.ArchivaIndexingContext;
import java.util.Collection;
@ -33,7 +33,7 @@ public interface IndexMerger
* @return a temporary directory with a merge index (directory marked deleteOnExit)
* @throws IndexMergerException
*/
IndexingContext buildMergedIndex( IndexMergerRequest indexMergerRequest )
ArchivaIndexingContext buildMergedIndex(IndexMergerRequest indexMergerRequest )
throws IndexMergerException;
void cleanTemporaryGroupIndex( TemporaryGroupIndex temporaryGroupIndex );

View File

@ -19,7 +19,8 @@ package org.apache.archiva.scheduler;
* under the License.
*/
import org.apache.archiva.admin.model.beans.RepositoryGroup;
import org.apache.archiva.repository.RepositoryGroup;
import java.nio.file.Path;
@ -35,7 +36,7 @@ public interface MergedRemoteIndexesScheduler
* remote indexes
* @param repositoryGroup
*/
void schedule( RepositoryGroup repositoryGroup, Path directory );
void schedule(RepositoryGroup repositoryGroup, Path directory );
void unschedule( RepositoryGroup repositoryGroup );

View File

@ -19,7 +19,8 @@ package org.apache.archiva.indexer.merger;
* under the License.
*/
import org.apache.archiva.admin.model.beans.RepositoryGroup;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.RepositoryGroup;
import org.apache.archiva.scheduler.MergedRemoteIndexesScheduler;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
@ -35,6 +36,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledFuture;
import java.util.stream.Collectors;
/**
* @author Olivier Lamy
@ -57,25 +59,26 @@ public class DefaultMergedRemoteIndexesScheduler
private Map<String, ScheduledFuture> scheduledFutureMap = new ConcurrentHashMap<>();
@Override
public void schedule( RepositoryGroup repositoryGroup, Path directory )
public void schedule(RepositoryGroup repositoryGroup, Path directory )
{
if ( StringUtils.isEmpty( repositoryGroup.getCronExpression() ) )
if ( StringUtils.isEmpty( repositoryGroup.getSchedulingDefinition() ) )
{
return;
}
CronTrigger cronTrigger = new CronTrigger( repositoryGroup.getCronExpression() );
CronTrigger cronTrigger = new CronTrigger( repositoryGroup.getSchedulingDefinition() );
List<String> repositories = repositoryGroup.getRepositories();
List<ManagedRepository> repositories = repositoryGroup.getRepositories();
IndexMergerRequest indexMergerRequest =
new IndexMergerRequest( repositories, true, repositoryGroup.getId(), repositoryGroup.getMergedIndexPath(),
repositoryGroup.getMergedIndexTtl() ).mergedIndexDirectory( directory );
new IndexMergerRequest( repositories.stream().map(r -> r.getId()).collect(Collectors.toList()), true, repositoryGroup.getId(),
repositoryGroup.getMergedIndexPath().getFilePath().toString(),
repositoryGroup.getMergedIndexTTL() ).mergedIndexDirectory( directory );
MergedRemoteIndexesTaskRequest taskRequest =
new MergedRemoteIndexesTaskRequest( indexMergerRequest, indexMerger );
logger.info( "schedule merge remote index for group {} with cron {}", repositoryGroup.getId(),
repositoryGroup.getCronExpression() );
repositoryGroup.getSchedulingDefinition() );
ScheduledFuture scheduledFuture =
taskScheduler.schedule( new MergedRemoteIndexesTask( taskRequest ), cronTrigger );

View File

@ -19,7 +19,7 @@ package org.apache.archiva.indexer.merger;
* under the License.
*/
import org.apache.maven.index.context.IndexingContext;
import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -58,7 +58,7 @@ public class MergedRemoteIndexesTask
{
IndexMerger indexMerger = mergedRemoteIndexesTaskRequest.getIndexMerger();
IndexingContext indexingContext =
ArchivaIndexingContext indexingContext =
indexMerger.buildMergedIndex( mergedRemoteIndexesTaskRequest.getIndexMergerRequest() );
return new MergedRemoteIndexesTaskResult( indexingContext );

View File

@ -19,7 +19,7 @@ package org.apache.archiva.indexer.merger;
* under the License.
*/
import org.apache.maven.index.context.IndexingContext;
import org.apache.archiva.indexer.ArchivaIndexingContext;
/**
* @author Olivier Lamy
@ -27,19 +27,19 @@ import org.apache.maven.index.context.IndexingContext;
*/
public class MergedRemoteIndexesTaskResult
{
private IndexingContext indexingContext;
private ArchivaIndexingContext indexingContext;
public MergedRemoteIndexesTaskResult( IndexingContext indexingContext )
public MergedRemoteIndexesTaskResult( ArchivaIndexingContext indexingContext )
{
this.indexingContext = indexingContext;
}
public IndexingContext getIndexingContext()
public ArchivaIndexingContext getIndexingContext()
{
return indexingContext;
}
public void setIndexingContext( IndexingContext indexingContext )
public void setIndexingContext( ArchivaIndexingContext indexingContext )
{
this.indexingContext = indexingContext;
}

View File

@ -19,7 +19,9 @@ package org.apache.archiva.indexer.maven.merger;
*/
import org.apache.archiva.common.utils.FileUtils;
import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.indexer.UnsupportedBaseContextException;
import org.apache.archiva.indexer.maven.MavenIndexContext;
import org.apache.archiva.indexer.merger.IndexMerger;
import org.apache.archiva.indexer.merger.IndexMergerException;
import org.apache.archiva.indexer.merger.IndexMergerRequest;
@ -86,7 +88,7 @@ public class DefaultIndexMerger
}
@Override
public IndexingContext buildMergedIndex( IndexMergerRequest indexMergerRequest )
public ArchivaIndexingContext buildMergedIndex(IndexMergerRequest indexMergerRequest )
throws IndexMergerException
{
String groupId = indexMergerRequest.getGroupId();
@ -146,7 +148,7 @@ public class DefaultIndexMerger
stopWatch.stop();
log.info( "merged index for repos {} in {} s", indexMergerRequest.getRepositoriesIds(),
stopWatch.getTime() );
return mergedCtx;
return new MavenIndexContext(repositoryRegistry.getRepositoryGroup(groupId), mergedCtx);
}
catch ( IOException e)
{