Search in sources :

Example 26 with IndexingContext

use of org.apache.maven.index.context.IndexingContext in project archiva by apache.

the class MavenIndexManager method scan.

@Override
public void scan(final ArchivaIndexingContext context) throws IndexUpdateFailedException {
    executeUpdateFunction(context, indexingContext -> {
        DefaultScannerListener listener = new DefaultScannerListener(indexingContext, indexerEngine, true, null);
        ScanningRequest request = new ScanningRequest(indexingContext, listener);
        ScanningResult result = scanner.scan(request);
        if (result.hasExceptions()) {
            log.error("Exceptions occured during index scan of " + context.getId());
            result.getExceptions().stream().map(e -> e.getMessage()).distinct().limit(5).forEach(s -> log.error("Message: " + s));
        }
    });
}
Also used : ScanningResult(org.apache.maven.index.ScanningResult) 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) ScanningRequest(org.apache.maven.index.ScanningRequest) DefaultScannerListener(org.apache.maven.index.DefaultScannerListener)

Example 27 with IndexingContext

use of org.apache.maven.index.context.IndexingContext in project archiva by apache.

the class MavenIndexManager method move.

@Override
public ArchivaIndexingContext move(ArchivaIndexingContext context, Repository repo) throws IndexCreationFailedException {
    if (context == null) {
        return null;
    }
    if (context.supports(IndexingContext.class)) {
        try {
            Path newPath = getIndexPath(repo);
            IndexingContext ctx = context.getBaseContext(IndexingContext.class);
            Path oldPath = ctx.getIndexDirectoryFile().toPath();
            if (oldPath.equals(newPath)) {
                // Nothing to do, if path does not change
                return context;
            }
            if (!Files.exists(oldPath)) {
                return createContext(repo);
            } else if (context.isEmpty()) {
                context.close();
                return createContext(repo);
            } else {
                context.close(false);
                Files.move(oldPath, newPath);
                return createContext(repo);
            }
        } catch (IOException e) {
            log.error("IOException while moving index directory {}", e.getMessage(), e);
            throw new IndexCreationFailedException("Could not recreated the index.", e);
        } catch (UnsupportedBaseContextException e) {
            throw new IndexCreationFailedException("The given context, is not a maven context.");
        }
    } else {
        throw new IndexCreationFailedException("Bad context type. This is not a maven context.");
    }
}
Also used : Path(java.nio.file.Path) UnsupportedBaseContextException(org.apache.archiva.indexer.UnsupportedBaseContextException) IndexCreationFailedException(org.apache.archiva.indexer.IndexCreationFailedException) ArchivaIndexingContext(org.apache.archiva.indexer.ArchivaIndexingContext) IndexingContext(org.apache.maven.index.context.IndexingContext) IOException(java.io.IOException)

Example 28 with IndexingContext

use of org.apache.maven.index.context.IndexingContext in project archiva by apache.

the class MavenIndexManager method createContext.

@Override
public ArchivaIndexingContext createContext(Repository repository) throws IndexCreationFailedException {
    log.debug("Creating context for repo {}, type: {}", repository.getId(), repository.getType());
    if (repository.getType() != RepositoryType.MAVEN) {
        throw new UnsupportedRepositoryTypeException(repository.getType());
    }
    IndexingContext mvnCtx = null;
    try {
        if (repository instanceof RemoteRepository) {
            mvnCtx = createRemoteContext((RemoteRepository) repository);
        } else if (repository instanceof ManagedRepository) {
            mvnCtx = createManagedContext((ManagedRepository) repository);
        }
    } catch (IOException e) {
        log.error("IOException during context creation " + e.getMessage(), e);
        throw new IndexCreationFailedException("Could not create index context for repository " + repository.getId() + (StringUtils.isNotEmpty(e.getMessage()) ? ": " + e.getMessage() : ""), e);
    }
    MavenIndexContext context = new MavenIndexContext(repository, mvnCtx);
    return context;
}
Also used : ManagedRepository(org.apache.archiva.repository.ManagedRepository) IndexCreationFailedException(org.apache.archiva.indexer.IndexCreationFailedException) ArchivaIndexingContext(org.apache.archiva.indexer.ArchivaIndexingContext) IndexingContext(org.apache.maven.index.context.IndexingContext) RemoteRepository(org.apache.archiva.repository.RemoteRepository) IOException(java.io.IOException) UnsupportedRepositoryTypeException(org.apache.archiva.repository.UnsupportedRepositoryTypeException)

Example 29 with IndexingContext

use of org.apache.maven.index.context.IndexingContext in project archiva by apache.

the class MavenRepositorySearch method addIndexingContexts.

/**
 * @param selectedRepos
 * @return indexing contextId used
 */
private List<String> addIndexingContexts(List<String> selectedRepos) {
    Set<String> indexingContextIds = new HashSet<>();
    for (String repo : selectedRepos) {
        try {
            Repository rRepo = repositoryRegistry.getRepository(repo);
            if (rRepo != null) {
                if (rRepo.getType().equals(RepositoryType.MAVEN)) {
                    assert rRepo.getIndexingContext() != null;
                    IndexingContext context = rRepo.getIndexingContext().getBaseContext(IndexingContext.class);
                    if (context.isSearchable()) {
                        indexingContextIds.addAll(getRemoteIndexingContextIds(repo));
                        indexingContextIds.add(context.getId());
                    } else {
                        log.warn("indexingContext with id {} not searchable", rRepo.getId());
                    }
                }
            } else {
                log.warn("Repository '{}' not found in configuration.", repo);
            }
        } catch (RepositorySearchException e) {
            log.warn("RepositorySearchException occured while accessing index of repository '{}' : {}", repo, e.getMessage());
            continue;
        } catch (UnsupportedBaseContextException e) {
            log.error("Fatal situation: Maven repository without IndexingContext found.");
            continue;
        }
    }
    return new ArrayList<>(indexingContextIds);
}
Also used : UnsupportedBaseContextException(org.apache.archiva.indexer.UnsupportedBaseContextException) Repository(org.apache.archiva.repository.Repository) RemoteRepository(org.apache.archiva.repository.RemoteRepository) ArrayList(java.util.ArrayList) IndexingContext(org.apache.maven.index.context.IndexingContext) RepositorySearchException(org.apache.archiva.indexer.search.RepositorySearchException) HashSet(java.util.HashSet)

Example 30 with IndexingContext

use of org.apache.maven.index.context.IndexingContext in project archiva by apache.

the class MavenRepositorySearch method getRemoteIndexingContextIds.

@Override
public Set<String> getRemoteIndexingContextIds(String managedRepoId) throws RepositorySearchException {
    Set<String> ids = new HashSet<>();
    List<ProxyConnector> proxyConnectors = null;
    try {
        proxyConnectors = proxyConnectorAdmin.getProxyConnectorAsMap().get(managedRepoId);
    } catch (RepositoryAdminException e) {
        throw new RepositorySearchException(e.getMessage(), e);
    }
    if (proxyConnectors == null || proxyConnectors.isEmpty()) {
        return ids;
    }
    for (ProxyConnector proxyConnector : proxyConnectors) {
        String remoteId = "remote-" + proxyConnector.getTargetRepoId();
        RemoteRepository repo = repositoryRegistry.getRemoteRepository(proxyConnector.getTargetRepoId());
        if (repo.getType() == RepositoryType.MAVEN) {
            try {
                IndexingContext context = repo.getIndexingContext() != null ? repo.getIndexingContext().getBaseContext(IndexingContext.class) : null;
                if (context != null && context.isSearchable()) {
                    ids.add(remoteId);
                }
            } catch (UnsupportedBaseContextException e) {
            // Ignore this one
            }
        }
    }
    return ids;
}
Also used : UnsupportedBaseContextException(org.apache.archiva.indexer.UnsupportedBaseContextException) IndexingContext(org.apache.maven.index.context.IndexingContext) RemoteRepository(org.apache.archiva.repository.RemoteRepository) ProxyConnector(org.apache.archiva.admin.model.beans.ProxyConnector) RepositorySearchException(org.apache.archiva.indexer.search.RepositorySearchException) RepositoryAdminException(org.apache.archiva.admin.model.RepositoryAdminException) HashSet(java.util.HashSet)

Aggregations

IndexingContext (org.apache.maven.index.context.IndexingContext)38 Path (java.nio.file.Path)30 ArchivaIndexingContext (org.apache.archiva.indexer.ArchivaIndexingContext)27 IOException (java.io.IOException)24 UnsupportedBaseContextException (org.apache.archiva.indexer.UnsupportedBaseContextException)21 IndexCreationFailedException (org.apache.archiva.indexer.IndexCreationFailedException)15 RemoteRepository (org.apache.archiva.repository.RemoteRepository)15 ManagedRepository (org.apache.archiva.repository.ManagedRepository)14 Inject (javax.inject.Inject)12 IndexUpdateFailedException (org.apache.archiva.indexer.IndexUpdateFailedException)12 UnsupportedRepositoryTypeException (org.apache.archiva.repository.UnsupportedRepositoryTypeException)12 Indexer (org.apache.maven.index.Indexer)12 IndexPacker (org.apache.maven.index.packer.IndexPacker)12 IndexPackingRequest (org.apache.maven.index.packer.IndexPackingRequest)12 IndexFormatTooOldException (org.apache.maven.index_shaded.lucene.index.IndexFormatTooOldException)12 Logger (org.slf4j.Logger)12 LoggerFactory (org.slf4j.LoggerFactory)12 Service (org.springframework.stereotype.Service)12 URI (java.net.URI)11 Files (java.nio.file.Files)11