Search in sources :

Example 6 with ArchivaIndexingContext

use of org.apache.archiva.indexer.ArchivaIndexingContext in project archiva by apache.

the class MavenIndexManager method executeUpdateFunction.

/*
     * This method is used to do some actions around the update execution code. And to make sure, that no other
     * method is running on the same index.
     */
private void executeUpdateFunction(ArchivaIndexingContext context, IndexUpdateConsumer function) throws IndexUpdateFailedException {
    IndexingContext indexingContext = null;
    try {
        indexingContext = getMvnContext(context);
    } catch (UnsupportedBaseContextException e) {
        throw new IndexUpdateFailedException("Maven index is not supported by this context", e);
    }
    final Path ctxPath = getIndexPath(context);
    int loop = MAX_WAIT;
    boolean active = false;
    while (loop-- > 0 && !active) {
        active = activeContexts.add(ctxPath);
        try {
            Thread.currentThread().sleep(WAIT_TIME);
        } catch (InterruptedException e) {
        // Ignore this
        }
    }
    if (active) {
        try {
            function.accept(indexingContext);
        } finally {
            activeContexts.remove(ctxPath);
        }
    } else {
        throw new IndexUpdateFailedException("Timeout while waiting for index release on context " + context.getId());
    }
}
Also used : Path(java.nio.file.Path) UnsupportedBaseContextException(org.apache.archiva.indexer.UnsupportedBaseContextException) ArchivaIndexingContext(org.apache.archiva.indexer.ArchivaIndexingContext) IndexingContext(org.apache.maven.index.context.IndexingContext) IndexUpdateFailedException(org.apache.archiva.indexer.IndexUpdateFailedException)

Example 7 with ArchivaIndexingContext

use of org.apache.archiva.indexer.ArchivaIndexingContext in project archiva by apache.

the class MavenIndexManager method removeArtifactsFromIndex.

@Override
public void removeArtifactsFromIndex(ArchivaIndexingContext context, Collection<URI> artifactReference) throws IndexUpdateFailedException {
    final URI ctxUri = context.getPath();
    executeUpdateFunction(context, indexingContext -> {
        Collection<ArtifactContext> artifacts = artifactReference.stream().map(r -> artifactContextProducer.getArtifactContext(indexingContext, Paths.get(ctxUri.resolve(r)).toFile())).collect(Collectors.toList());
        try {
            indexer.deleteArtifactsFromIndex(artifacts, indexingContext);
        } catch (IOException e) {
            log.error("IOException while removing artifact {}", e.getMessage(), e);
            throw new IndexUpdateFailedException("Error occured while removing artifact from index of " + context.getId() + (StringUtils.isNotEmpty(e.getMessage()) ? ": " + e.getMessage() : ""));
        }
    });
}
Also used : AuthenticationException(org.apache.maven.wagon.authentication.AuthenticationException) ArtifactContext(org.apache.maven.index.ArtifactContext) StringUtils(org.apache.commons.lang.StringUtils) PathUtil(org.apache.archiva.common.utils.PathUtil) UnsupportedBaseContextException(org.apache.archiva.indexer.UnsupportedBaseContextException) LoggerFactory(org.slf4j.LoggerFactory) IndexCreator(org.apache.maven.index.context.IndexCreator) ArchivaIndexManager(org.apache.archiva.indexer.ArchivaIndexManager) ArchivaConfiguration(org.apache.archiva.configuration.ArchivaConfiguration) WagonFactoryException(org.apache.archiva.proxy.common.WagonFactoryException) NetworkProxyAdmin(org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin) PasswordCredentials(org.apache.archiva.repository.PasswordCredentials) Map(java.util.Map) FileUtils(org.apache.archiva.common.utils.FileUtils) IndexCreationFailedException(org.apache.archiva.indexer.IndexCreationFailedException) UnsupportedRepositoryTypeException(org.apache.archiva.repository.UnsupportedRepositoryTypeException) RemoteIndexFeature(org.apache.archiva.repository.features.RemoteIndexFeature) URI(java.net.URI) TransferFailedException(org.apache.maven.wagon.TransferFailedException) Path(java.nio.file.Path) ArchivaIndexingContext(org.apache.archiva.indexer.ArchivaIndexingContext) AbstractHttpClientWagon(org.apache.maven.wagon.shared.http.AbstractHttpClientWagon) TransferEvent(org.apache.maven.wagon.events.TransferEvent) RepositoryAdminException(org.apache.archiva.admin.model.RepositoryAdminException) IndexCreationFeature(org.apache.archiva.repository.features.IndexCreationFeature) HttpMethodConfiguration(org.apache.maven.wagon.shared.http.HttpMethodConfiguration) ProxyInfo(org.apache.maven.wagon.proxy.ProxyInfo) Collection(java.util.Collection) ConnectionException(org.apache.maven.wagon.ConnectionException) AuthorizationException(org.apache.maven.wagon.authorization.AuthorizationException) Collectors(java.util.stream.Collectors) Indexer(org.apache.maven.index.Indexer) FileNotFoundException(java.io.FileNotFoundException) ManagedRepository(org.apache.archiva.repository.ManagedRepository) IndexUpdateRequest(org.apache.maven.index.updater.IndexUpdateRequest) IndexUpdateFailedException(org.apache.archiva.indexer.IndexUpdateFailedException) List(java.util.List) HttpConfiguration(org.apache.maven.wagon.shared.http.HttpConfiguration) IndexFormatTooOldException(org.apache.maven.index_shaded.lucene.index.IndexFormatTooOldException) IndexerEngine(org.apache.maven.index.IndexerEngine) EditableRepository(org.apache.archiva.repository.EditableRepository) WagonFactoryRequest(org.apache.archiva.proxy.common.WagonFactoryRequest) Scanner(org.apache.maven.index.Scanner) NetworkProxy(org.apache.archiva.admin.model.beans.NetworkProxy) ArtifactContextProducer(org.apache.maven.index.ArtifactContextProducer) WagonFactory(org.apache.archiva.proxy.common.WagonFactory) IndexUpdater(org.apache.maven.index.updater.IndexUpdater) Inject(javax.inject.Inject) Repository(org.apache.archiva.repository.Repository) RemoteRepository(org.apache.archiva.repository.RemoteRepository) Service(org.springframework.stereotype.Service) IndexPackingRequest(org.apache.maven.index.packer.IndexPackingRequest) ResourceFetcher(org.apache.maven.index.updater.ResourceFetcher) StreamWagon(org.apache.maven.wagon.StreamWagon) Logger(org.slf4j.Logger) IndexPacker(org.apache.maven.index.packer.IndexPacker) MalformedURLException(java.net.MalformedURLException) Files(java.nio.file.Files) DefaultScannerListener(org.apache.maven.index.DefaultScannerListener) ScanningRequest(org.apache.maven.index.ScanningRequest) AuthenticationInfo(org.apache.maven.wagon.authentication.AuthenticationInfo) IOException(java.io.IOException) RepositoryType(org.apache.archiva.repository.RepositoryType) IndexingContext(org.apache.maven.index.context.IndexingContext) ConcurrentSkipListSet(java.util.concurrent.ConcurrentSkipListSet) ResourceDoesNotExistException(org.apache.maven.wagon.ResourceDoesNotExistException) Paths(java.nio.file.Paths) TransferListener(org.apache.maven.wagon.events.TransferListener) Wagon(org.apache.maven.wagon.Wagon) ScanningResult(org.apache.maven.index.ScanningResult) InputStream(java.io.InputStream) ArtifactContext(org.apache.maven.index.ArtifactContext) IOException(java.io.IOException) IndexUpdateFailedException(org.apache.archiva.indexer.IndexUpdateFailedException) URI(java.net.URI)

Example 8 with ArchivaIndexingContext

use of org.apache.archiva.indexer.ArchivaIndexingContext in project archiva by apache.

the class MavenIndexManager method addArtifactsToIndex.

@Override
public void addArtifactsToIndex(final ArchivaIndexingContext context, final Collection<URI> artifactReference) throws IndexUpdateFailedException {
    final URI ctxUri = context.getPath();
    executeUpdateFunction(context, indexingContext -> {
        Collection<ArtifactContext> artifacts = artifactReference.stream().map(r -> artifactContextProducer.getArtifactContext(indexingContext, Paths.get(ctxUri.resolve(r)).toFile())).collect(Collectors.toList());
        try {
            indexer.addArtifactsToIndex(artifacts, indexingContext);
        } catch (IOException e) {
            log.error("IOException while adding artifact {}", e.getMessage(), e);
            throw new IndexUpdateFailedException("Error occured while adding artifact to index of " + context.getId() + (StringUtils.isNotEmpty(e.getMessage()) ? ": " + e.getMessage() : ""));
        }
    });
}
Also used : AuthenticationException(org.apache.maven.wagon.authentication.AuthenticationException) ArtifactContext(org.apache.maven.index.ArtifactContext) StringUtils(org.apache.commons.lang.StringUtils) PathUtil(org.apache.archiva.common.utils.PathUtil) UnsupportedBaseContextException(org.apache.archiva.indexer.UnsupportedBaseContextException) LoggerFactory(org.slf4j.LoggerFactory) IndexCreator(org.apache.maven.index.context.IndexCreator) ArchivaIndexManager(org.apache.archiva.indexer.ArchivaIndexManager) ArchivaConfiguration(org.apache.archiva.configuration.ArchivaConfiguration) WagonFactoryException(org.apache.archiva.proxy.common.WagonFactoryException) NetworkProxyAdmin(org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin) PasswordCredentials(org.apache.archiva.repository.PasswordCredentials) Map(java.util.Map) FileUtils(org.apache.archiva.common.utils.FileUtils) IndexCreationFailedException(org.apache.archiva.indexer.IndexCreationFailedException) UnsupportedRepositoryTypeException(org.apache.archiva.repository.UnsupportedRepositoryTypeException) RemoteIndexFeature(org.apache.archiva.repository.features.RemoteIndexFeature) URI(java.net.URI) TransferFailedException(org.apache.maven.wagon.TransferFailedException) Path(java.nio.file.Path) ArchivaIndexingContext(org.apache.archiva.indexer.ArchivaIndexingContext) AbstractHttpClientWagon(org.apache.maven.wagon.shared.http.AbstractHttpClientWagon) TransferEvent(org.apache.maven.wagon.events.TransferEvent) RepositoryAdminException(org.apache.archiva.admin.model.RepositoryAdminException) IndexCreationFeature(org.apache.archiva.repository.features.IndexCreationFeature) HttpMethodConfiguration(org.apache.maven.wagon.shared.http.HttpMethodConfiguration) ProxyInfo(org.apache.maven.wagon.proxy.ProxyInfo) Collection(java.util.Collection) ConnectionException(org.apache.maven.wagon.ConnectionException) AuthorizationException(org.apache.maven.wagon.authorization.AuthorizationException) Collectors(java.util.stream.Collectors) Indexer(org.apache.maven.index.Indexer) FileNotFoundException(java.io.FileNotFoundException) ManagedRepository(org.apache.archiva.repository.ManagedRepository) IndexUpdateRequest(org.apache.maven.index.updater.IndexUpdateRequest) IndexUpdateFailedException(org.apache.archiva.indexer.IndexUpdateFailedException) List(java.util.List) HttpConfiguration(org.apache.maven.wagon.shared.http.HttpConfiguration) IndexFormatTooOldException(org.apache.maven.index_shaded.lucene.index.IndexFormatTooOldException) IndexerEngine(org.apache.maven.index.IndexerEngine) EditableRepository(org.apache.archiva.repository.EditableRepository) WagonFactoryRequest(org.apache.archiva.proxy.common.WagonFactoryRequest) Scanner(org.apache.maven.index.Scanner) NetworkProxy(org.apache.archiva.admin.model.beans.NetworkProxy) ArtifactContextProducer(org.apache.maven.index.ArtifactContextProducer) WagonFactory(org.apache.archiva.proxy.common.WagonFactory) IndexUpdater(org.apache.maven.index.updater.IndexUpdater) Inject(javax.inject.Inject) Repository(org.apache.archiva.repository.Repository) RemoteRepository(org.apache.archiva.repository.RemoteRepository) Service(org.springframework.stereotype.Service) IndexPackingRequest(org.apache.maven.index.packer.IndexPackingRequest) ResourceFetcher(org.apache.maven.index.updater.ResourceFetcher) StreamWagon(org.apache.maven.wagon.StreamWagon) Logger(org.slf4j.Logger) IndexPacker(org.apache.maven.index.packer.IndexPacker) MalformedURLException(java.net.MalformedURLException) Files(java.nio.file.Files) DefaultScannerListener(org.apache.maven.index.DefaultScannerListener) ScanningRequest(org.apache.maven.index.ScanningRequest) AuthenticationInfo(org.apache.maven.wagon.authentication.AuthenticationInfo) IOException(java.io.IOException) RepositoryType(org.apache.archiva.repository.RepositoryType) IndexingContext(org.apache.maven.index.context.IndexingContext) ConcurrentSkipListSet(java.util.concurrent.ConcurrentSkipListSet) ResourceDoesNotExistException(org.apache.maven.wagon.ResourceDoesNotExistException) Paths(java.nio.file.Paths) TransferListener(org.apache.maven.wagon.events.TransferListener) Wagon(org.apache.maven.wagon.Wagon) ScanningResult(org.apache.maven.index.ScanningResult) InputStream(java.io.InputStream) ArtifactContext(org.apache.maven.index.ArtifactContext) IOException(java.io.IOException) IndexUpdateFailedException(org.apache.archiva.indexer.IndexUpdateFailedException) URI(java.net.URI)

Example 9 with ArchivaIndexingContext

use of org.apache.archiva.indexer.ArchivaIndexingContext in project archiva by apache.

the class MavenIndexManagerTest method addArtifactsToIndex.

@Test
public void addArtifactsToIndex() throws Exception {
    ArchivaIndexingContext ctx = createTestContext();
    Path destDir = repository.getLocalPath().resolve("org/apache/archiva/archiva-search/1.0");
    Path srcDir = Paths.get("src/test/maven-search-test-repo/org/apache/archiva/archiva-search/1.0");
    org.apache.commons.io.FileUtils.copyDirectory(srcDir.toFile(), destDir.toFile());
    List<URI> uriList = new ArrayList<>();
    uriList.add(destDir.resolve("archiva-search-1.0.jar").toUri());
    uriList.add(destDir.resolve("archiva-search-1.0-sources.jar").toUri());
    mavenIndexManager.addArtifactsToIndex(ctx, uriList);
    IndexingContext mvnCtx = mavenIndexManager.getMvnContext(ctx);
    String term = "org.apache.archiva";
    Query q = new BooleanQuery.Builder().add(queryCreator.constructQuery(MAVEN.GROUP_ID, new UserInputSearchExpression(term)), BooleanClause.Occur.SHOULD).build();
    assertEquals(2, mvnCtx.acquireIndexSearcher().count(q));
}
Also used : Path(java.nio.file.Path) BooleanQuery(org.apache.maven.index_shaded.lucene.search.BooleanQuery) Query(org.apache.maven.index_shaded.lucene.search.Query) UserInputSearchExpression(org.apache.maven.index.expr.UserInputSearchExpression) ArrayList(java.util.ArrayList) ArchivaIndexingContext(org.apache.archiva.indexer.ArchivaIndexingContext) IndexingContext(org.apache.maven.index.context.IndexingContext) ArchivaIndexingContext(org.apache.archiva.indexer.ArchivaIndexingContext) URI(java.net.URI) Test(org.junit.Test)

Example 10 with ArchivaIndexingContext

use of org.apache.archiva.indexer.ArchivaIndexingContext in project archiva by apache.

the class MavenIndexManagerTest method removeArtifactsFromIndex.

@Test
public void removeArtifactsFromIndex() throws Exception {
    ArchivaIndexingContext ctx = createTestContext();
    Path destDir = repository.getLocalPath().resolve("org/apache/archiva/archiva-search/1.0");
    Path srcDir = Paths.get("src/test/maven-search-test-repo/org/apache/archiva/archiva-search/1.0");
    org.apache.commons.io.FileUtils.copyDirectory(srcDir.toFile(), destDir.toFile());
    List<URI> uriList = new ArrayList<>();
    uriList.add(destDir.resolve("archiva-search-1.0.jar").toUri());
    uriList.add(destDir.resolve("archiva-search-1.0-sources.jar").toUri());
    mavenIndexManager.addArtifactsToIndex(ctx, uriList);
    IndexingContext mvnCtx = mavenIndexManager.getMvnContext(ctx);
    String term = "org.apache.archiva";
    Query q = new BooleanQuery.Builder().add(queryCreator.constructQuery(MAVEN.GROUP_ID, new UserInputSearchExpression(term)), BooleanClause.Occur.SHOULD).build();
    assertEquals(2, mvnCtx.acquireIndexSearcher().count(q));
    uriList.remove(0);
    mavenIndexManager.removeArtifactsFromIndex(ctx, uriList);
    assertEquals(1, mvnCtx.acquireIndexSearcher().count(q));
}
Also used : Path(java.nio.file.Path) BooleanQuery(org.apache.maven.index_shaded.lucene.search.BooleanQuery) Query(org.apache.maven.index_shaded.lucene.search.Query) UserInputSearchExpression(org.apache.maven.index.expr.UserInputSearchExpression) ArrayList(java.util.ArrayList) ArchivaIndexingContext(org.apache.archiva.indexer.ArchivaIndexingContext) IndexingContext(org.apache.maven.index.context.IndexingContext) ArchivaIndexingContext(org.apache.archiva.indexer.ArchivaIndexingContext) URI(java.net.URI) Test(org.junit.Test)

Aggregations

ArchivaIndexingContext (org.apache.archiva.indexer.ArchivaIndexingContext)28 IndexingContext (org.apache.maven.index.context.IndexingContext)21 IOException (java.io.IOException)20 Path (java.nio.file.Path)19 IndexCreationFailedException (org.apache.archiva.indexer.IndexCreationFailedException)19 UnsupportedBaseContextException (org.apache.archiva.indexer.UnsupportedBaseContextException)16 ManagedRepository (org.apache.archiva.repository.ManagedRepository)16 IndexUpdateFailedException (org.apache.archiva.indexer.IndexUpdateFailedException)15 RemoteRepository (org.apache.archiva.repository.RemoteRepository)15 EditableRepository (org.apache.archiva.repository.EditableRepository)12 Repository (org.apache.archiva.repository.Repository)12 UnsupportedRepositoryTypeException (org.apache.archiva.repository.UnsupportedRepositoryTypeException)12 URI (java.net.URI)11 Inject (javax.inject.Inject)10 IndexCreationFeature (org.apache.archiva.repository.features.IndexCreationFeature)10 ArtifactContext (org.apache.maven.index.ArtifactContext)10 FileNotFoundException (java.io.FileNotFoundException)9 InputStream (java.io.InputStream)9 MalformedURLException (java.net.MalformedURLException)9 Files (java.nio.file.Files)9