Switching repository admin and dependent classes to RepositoryRegistry RepositoryRegistry is used for indexing context now. There is still more work to do to move the maven dependent parts into its own projects and update the dependencies.
Project: http://git-wip-us.apache.org/repos/asf/archiva/repo Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/c544376a Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/c544376a Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/c544376a Branch: refs/heads/master Commit: c544376afbec84689eae8ca5cc1a8f6a0ddb768d Parents: e2eb9fe Author: Martin Stockhammer <[email protected]> Authored: Sat Mar 24 17:41:50 2018 +0100 Committer: Martin Stockhammer <[email protected]> Committed: Sat Mar 24 17:44:13 2018 +0100 ---------------------------------------------------------------------- .../DefaultArchivaConfiguration.java | 1 + .../src/test/java/RepositoryProviderMock.java | 4 + .../resourcesstatic/archetype-resources/pom.xml | 6 + .../archiva-core-consumers/pom.xml | 5 + .../repository/AbstractRepositoryPurgeTest.java | 2 - ...nupReleasedSnapshotsRepositoryPurgeTest.java | 6 +- .../repository/mock/RepositoryProviderMock.java | 17 +- ...pring-context-cleanup-released-snapshots.xml | 2 +- .../archiva-lucene-consumers/pom.xml | 5 + .../consumers/lucene/NexusIndexerConsumer.java | 43 +- .../lucene/NexusIndexerConsumerTest.java | 16 +- .../src/test/resources/spring-context.xml | 2 +- .../archiva-base/archiva-maven2-indexer/pom.xml | 24 + .../indexer/maven/MavenIndexContext.java | 13 +- .../indexer/maven/MavenIndexManager.java | 152 ++-- .../maven/search/MavenRepositorySearch.java | 106 +-- .../indexer/maven/MavenIndexManagerTest.java | 6 + .../search/AbstractMavenRepositorySearch.java | 89 ++- .../search/MavenRepositorySearchOSGITest.java | 13 + .../MavenRepositorySearchPaginateTest.java | 20 +- .../maven/search/MavenRepositorySearchTest.java | 50 +- .../src/test/resources/log4j2-test.xml | 45 ++ .../src/test/resources/spring-context.xml | 2 +- .../archiva-base/archiva-proxy/pom.xml | 5 + .../MockRepositoryArchivaTaskScheduler.java | 2 +- .../archiva/proxy/AbstractProxyTestCase.java | 6 +- .../repository/mock/RepositoryProviderMock.java | 19 +- .../src/test/resources/spring-context.xml | 1 + .../model/managed/ManagedRepositoryAdmin.java | 12 +- .../managed/DefaultManagedRepositoryAdmin.java | 293 ++----- .../DefaultProxyConnectorAdmin.java | 10 +- .../remote/DefaultRemoteRepositoryAdmin.java | 13 +- .../admin/mock/ArchivaIndexManagerMock.java | 777 ++++++++++++++++++ .../admin/mock/MavenIndexContextMock.java | 136 ++++ .../group/RepositoryGroupAdminTest.java | 26 +- .../src/test/resources/default-archiva.xml | 1 + .../archiva/indexer/ArchivaIndexManager.java | 20 + .../archiva/indexer/GenericIndexManager.java | 12 + .../archiva/repository/EditableRepository.java | 8 + .../apache/archiva/repository/Repository.java | 9 +- .../archiva/repository/RepositoryEvent.java | 69 ++ .../repository/RepositoryEventHandler.java | 32 + .../repository/RepositoryEventListener.java | 28 + .../archiva/repository/RepositoryProvider.java | 2 +- .../archiva/repository/AbstractRepository.java | 70 +- .../repository/BasicManagedRepository.java | 7 +- .../repository/BasicRemoteRepository.java | 12 +- .../archiva/repository/RepositoryRegistry.java | 163 +++- .../repository/features/AbstractFeature.java | 66 ++ .../repository/features/IndexCreationEvent.java | 35 + .../features/IndexCreationFeature.java | 19 +- .../mock/ArchivaIndexManagerMock.java | 85 ++ .../repository/mock/RepositoryProviderMock.java | 17 +- .../archiva-scheduler-indexing/pom.xml | 6 + .../indexing/ArchivaIndexingTaskExecutor.java | 18 +- .../indexing/ArtifactIndexingTask.java | 12 +- .../DefaultDownloadRemoteIndexScheduler.java | 21 +- .../ArchivaIndexingTaskExecutorTest.java | 57 +- .../indexing/DownloadRemoteIndexTaskTest.java | 44 +- .../src/test/resources/spring-context.xml | 2 +- .../mock/MockManagedRepositoryAdmin.java | 11 - .../archiva-rest/archiva-rest-services/pom.xml | 3 + .../services/DefaultRepositoriesService.java | 3 +- .../rest/services/AbstractArchivaRestTest.java | 2 +- .../src/test/resources/log4j2-test.xml | 16 +- .../archiva-web/archiva-security/pom.xml | 5 + .../archiva/security/AbstractSecurityTest.java | 6 +- .../security/DefaultUserRepositoriesTest.java | 2 +- .../archiva-web/archiva-web-common/pom.xml | 3 + .../archiva-web/archiva-webdav/pom.xml | 1 + .../AbstractRepositoryServletTestCase.java | 2 - .../webdav/RepositoryServletBrowseTest.java | 2 +- .../storage/maven2/Maven2RepositoryStorage.java | 36 +- .../storage/maven2/RepositoryModelResolver.java | 33 +- .../maven2/MavenManagedRepository.java | 7 +- .../maven2/MavenRemoteRepository.java | 14 +- .../maven2/MavenRepositoryProvider.java | 20 +- .../archiva/configuration/MockRepoAdmin.java | 13 +- .../configuration/TestConfiguration.java | 7 +- ...oryMetadataResolverMRM1411RepoGroupTest.java | 29 +- ...n2RepositoryMetadataResolverMRM1411Test.java | 7 + ...itoryMetadataResolverManagedReleaseTest.java | 6 + ...toryMetadataResolverManagedSnapshotTest.java | 6 + .../Maven2RepositoryMetadataResolverTest.java | 13 +- .../repository/storage/maven2/MockWagon.java | 2 +- .../index/mock/ArchivaIndexManagerMock.java | 780 +++++++++++++++++++ .../index/mock/MavenIndexContextMock.java | 136 ++++ .../src/test/resources/spring-context.xml | 2 +- 88 files changed, 3232 insertions(+), 679 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/DefaultArchivaConfiguration.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/DefaultArchivaConfiguration.java b/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/DefaultArchivaConfiguration.java index 71b4c31..caedee3 100644 --- a/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/DefaultArchivaConfiguration.java +++ b/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/DefaultArchivaConfiguration.java @@ -644,6 +644,7 @@ public class DefaultArchivaConfiguration this.configuration = unescapeExpressions( configuration ); + isConfigurationDefaulted=false; triggerEvent( ConfigurationEvent.SAVED ); } http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/RepositoryProviderMock.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/RepositoryProviderMock.java b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/RepositoryProviderMock.java index a140842..ec13f21 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/RepositoryProviderMock.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/RepositoryProviderMock.java @@ -230,4 +230,8 @@ public class RepositoryProviderMock implements RepositoryProvider return configuration; } + @Override + public <T> void raise(org.apache.archiva.repository.RepositoryEvent<T> event) { + + } } http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resourcesstatic/archetype-resources/pom.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resourcesstatic/archetype-resources/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resourcesstatic/archetype-resources/pom.xml index bb98a2d..2217e8e 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resourcesstatic/archetype-resources/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resourcesstatic/archetype-resources/pom.xml @@ -79,6 +79,12 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-maven2-indexer</artifactId> + <version>${archiva.version}</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.apache.archiva.redback.components.registry</groupId> <artifactId>spring-registry-api</artifactId> <version>${redback.registry.version}</version> http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml index c01a30b..3bfca11 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml @@ -155,6 +155,11 @@ <artifactId>archiva-mock</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-maven2-indexer</artifactId> + <scope>test</scope> + </dependency> </dependencies> <build> <pluginManagement> http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java index e9e7353..345d257 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java @@ -19,7 +19,6 @@ package org.apache.archiva.consumers.core.repository; * under the License. */ -import org.apache.archiva.admin.model.beans.ManagedRepository; import org.apache.archiva.metadata.model.ArtifactMetadata; import org.apache.archiva.metadata.repository.MetadataRepository; import org.apache.archiva.metadata.repository.RepositorySession; @@ -54,7 +53,6 @@ import java.nio.file.Paths; import java.time.Period; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.stream.Collectors; import static org.junit.Assert.assertFalse; http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java index a289734..1ef4bf9 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java @@ -107,7 +107,7 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest { RepositoryRegistry repositoryRegistry = applicationContext.getBean( RepositoryRegistry.class ); ManagedRepository managedRepository = repositoryRegistry.getManagedRepository( TEST_REPO_ID ); - repositoryRegistry.removeRepository( managedRepository ); + repositoryRegistry.removeRepository( TEST_REPO_ID ); repositoryRegistry.putRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME )); @@ -217,7 +217,7 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest RepositoryRegistry repositoryRegistry = applicationContext.getBean(RepositoryRegistry.class); ManagedRepository managedRepository = repositoryRegistry.getManagedRepository( TEST_REPO_ID ); - repositoryRegistry.removeRepository( managedRepository ); + repositoryRegistry.removeRepository( TEST_REPO_ID ); repositoryRegistry.putRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME )); @@ -298,7 +298,7 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest RepositoryRegistry repositoryRegistry = applicationContext.getBean(RepositoryRegistry.class); ManagedRepository managedRepository = repositoryRegistry.getManagedRepository( TEST_REPO_ID ); - repositoryRegistry.removeRepository( managedRepository ); + repositoryRegistry.removeRepository( TEST_REPO_ID ); repositoryRegistry.putRepository( getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME )); http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java index 286dd38..4af39c3 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java @@ -21,18 +21,7 @@ package org.apache.archiva.repository.mock; import org.apache.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.repository.BasicManagedRepository; -import org.apache.archiva.repository.BasicRemoteRepository; -import org.apache.archiva.repository.EditableManagedRepository; -import org.apache.archiva.repository.EditableRemoteRepository; -import org.apache.archiva.repository.ManagedRepository; -import org.apache.archiva.repository.PasswordCredentials; -import org.apache.archiva.repository.ReleaseScheme; -import org.apache.archiva.repository.RemoteRepository; -import org.apache.archiva.repository.RepositoryCredentials; -import org.apache.archiva.repository.RepositoryException; -import org.apache.archiva.repository.RepositoryProvider; -import org.apache.archiva.repository.RepositoryType; +import org.apache.archiva.repository.*; import org.apache.archiva.repository.features.ArtifactCleanupFeature; import org.apache.archiva.repository.features.IndexCreationFeature; import org.apache.archiva.repository.features.RemoteIndexFeature; @@ -229,4 +218,8 @@ public class RepositoryProviderMock implements RepositoryProvider return configuration; } + @Override + public <T> void raise(RepositoryEvent<T> event) { + + } } http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml index 5119c55..ddc8bff 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/resources/spring-context-cleanup-released-snapshots.xml @@ -32,7 +32,7 @@ </bean> <alias name="archivaConfiguration#cleanup-released-snapshots" alias="archivaConfiguration"/> <alias name="archivaConfiguration#cleanup-released-snapshots" alias="archivaConfiguration#default"/> - <context:component-scan base-package="org.apache.archiva.configuration,org.apache.archiva.repository.content.maven2"/> + <context:component-scan base-package="org.apache.archiva.configuration,org.apache.archiva.repository.content.maven2,org.apache.archiva.indexer.maven"/> <alias name="repositoryContentFactory#cleanup-released-snapshots" alias="repositoryContentFactory#default" /> http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml index 2088251..bb489a2 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml @@ -136,6 +136,11 @@ <artifactId>xercesImpl</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-maven2-indexer</artifactId> + <scope>test</scope> + </dependency> </dependencies> <build> <plugins> http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java index 50dd8c1..6cadd27 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java @@ -28,11 +28,13 @@ import org.apache.archiva.configuration.FileTypes; import org.apache.archiva.consumers.AbstractMonitoredConsumer; import org.apache.archiva.consumers.ConsumerException; import org.apache.archiva.consumers.KnownRepositoryContentConsumer; +import org.apache.archiva.indexer.UnsupportedBaseContextException; import org.apache.archiva.redback.components.registry.Registry; import org.apache.archiva.redback.components.registry.RegistryListener; import org.apache.archiva.redback.components.taskqueue.TaskQueueException; import org.apache.archiva.repository.ManagedRepository; import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.repository.RepositoryType; import org.apache.archiva.scheduler.ArchivaTaskScheduler; import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask; import org.apache.maven.index.NexusIndexer; @@ -124,11 +126,14 @@ public class NexusIndexerConsumer try { log.info( "Creating indexing context for repo : {}", repository.getId() ); - indexingContext = managedRepositoryAdmin.createIndexContext( repository ); - } - catch ( RepositoryAdminException e ) - { - throw new ConsumerException( e.getMessage(), e ); + if (repository.getType()== RepositoryType.MAVEN) { + indexingContext = repository.getIndexingContext().getBaseContext(IndexingContext.class); + } else { + indexingContext= null; + } + } catch (UnsupportedBaseContextException e) { + log.error("Bad repository type. Not nexus indexer compatible."); + throw new ConsumerException("Bad repository type "+repository.getType()); } } @@ -154,7 +159,7 @@ public class NexusIndexerConsumer Path artifactFile = managedRepository.resolve(path); ArtifactIndexingTask task = - new ArtifactIndexingTask( repository, artifactFile, ArtifactIndexingTask.Action.ADD, getIndexingContext() ); + new ArtifactIndexingTask( repository, artifactFile, ArtifactIndexingTask.Action.ADD, repository.getIndexingContext() ); try { log.debug( "Queueing indexing task '{}' to add or update the artifact in the index.", task ); @@ -181,7 +186,7 @@ public class NexusIndexerConsumer // specify in indexing task that this is not a repo scan request! ArtifactIndexingTask task = new ArtifactIndexingTask( repository, artifactFile, ArtifactIndexingTask.Action.ADD, - getIndexingContext(), false ); + repository.getIndexingContext(), false ); // only update index we don't need to scan the full repo here task.setOnlyUpdate( true ); try @@ -199,21 +204,8 @@ public class NexusIndexerConsumer @Override public void completeScan() { - IndexingContext context = this.indexingContext; - if ( context == null ) - { - try - { - context = getIndexingContext(); - } - catch ( ConsumerException e ) - { - log.warn( "failed to get an IndexingContext:{}", e.getMessage() ); - return; - } - } ArtifactIndexingTask task = - new ArtifactIndexingTask( repository, null, ArtifactIndexingTask.Action.FINISH, context ); + new ArtifactIndexingTask( repository, null, ArtifactIndexingTask.Action.FINISH, repository.getIndexingContext()); try { log.debug( "Queueing indexing task '{}' to finish indexing.", task ); @@ -292,11 +284,10 @@ public class NexusIndexerConsumer { try { - indexingContext = managedRepositoryAdmin.createIndexContext( repository ); - } - catch ( RepositoryAdminException e ) - { - throw new ConsumerException( e.getMessage(), e ); + indexingContext = repository.getIndexingContext().getBaseContext(IndexingContext.class); + } catch (UnsupportedBaseContextException e) { + log.error("Bad repository type. Not nexus indexer compatible. "+repository.getType()); + throw new ConsumerException("Bad repository type "+repository.getType()); } } return indexingContext; http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java index e34dc7e..2efebfb 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java @@ -26,14 +26,13 @@ import org.apache.archiva.configuration.ArchivaConfiguration; import org.apache.archiva.configuration.FileTypes; import org.apache.archiva.redback.components.taskqueue.TaskQueueException; import org.apache.archiva.repository.BasicManagedRepository; -import org.apache.archiva.repository.ManagedRepository; import org.apache.archiva.repository.ReleaseScheme; +import org.apache.archiva.repository.RepositoryRegistry; import org.apache.archiva.scheduler.ArchivaTaskScheduler; import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask; import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; import org.apache.maven.index.NexusIndexer; import org.apache.maven.index.context.IndexCreator; -import org.apache.regexp.RE; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -47,12 +46,7 @@ import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Calendar; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Set; +import java.util.*; /** * NexusIndexerConsumerTest @@ -111,6 +105,9 @@ public class NexusIndexerConsumerTest @Inject private ManagedRepositoryAdmin managedRepositoryAdmin; + @Inject + RepositoryRegistry repositoryRegistry; + @Override @Before @@ -138,6 +135,7 @@ public class NexusIndexerConsumerTest repositoryConfig.setScanned( true ); repositoryConfig.addActiveReleaseScheme( ReleaseScheme.RELEASE ); repositoryConfig.removeActiveReleaseScheme( ReleaseScheme.SNAPSHOT ); + repositoryRegistry.putRepository(repositoryConfig); } @@ -156,6 +154,8 @@ public class NexusIndexerConsumerTest org.apache.archiva.common.utils.FileUtils.deleteDirectory( indexDir ); assertFalse( Files.exists(indexDir) ); + repositoryRegistry.destroy(); + super.tearDown(); } http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/resources/spring-context.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/resources/spring-context.xml index a891372..ebf3181 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/resources/spring-context.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/resources/spring-context.xml @@ -28,7 +28,7 @@ http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-lazy-init="true"> <context:annotation-config/> - <context:component-scan base-package="org.apache.archiva.consumers.lucene.test"/> + <context:component-scan base-package="org.apache.archiva.consumers.lucene.test,org.apache.maven.index"/> <bean name="commons-configuration" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry"> <property name="properties"> http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/pom.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/pom.xml b/archiva-modules/archiva-base/archiva-maven2-indexer/pom.xml index e51f824..2a2e1c4 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/pom.xml +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/pom.xml @@ -56,6 +56,11 @@ </dependency> <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> </dependency> @@ -142,6 +147,12 @@ <artifactId>archiva-test-utils</artifactId> <version>${project.version}</version> <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.derby</groupId> @@ -216,6 +227,19 @@ </exclusion> </exclusions> </dependency> + + + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-slf4j-impl</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-jcl</artifactId> + <scope>test</scope> + </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexContext.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexContext.java b/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexContext.java index 4ee8079..37f602f 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexContext.java +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexContext.java @@ -26,6 +26,7 @@ import org.apache.maven.index.context.IndexingContext; import java.io.IOException; import java.net.URI; import java.nio.file.Files; +import java.nio.file.NoSuchFileException; import java.sql.Date; import java.time.ZonedDateTime; import java.util.Set; @@ -81,12 +82,20 @@ public class MavenIndexContext implements ArchivaIndexingContext { @Override public void close(boolean deleteFiles) throws IOException { - delegate.close(deleteFiles); + try { + delegate.close(deleteFiles); + } catch (NoSuchFileException e) { + // Ignore missing directory + } } @Override public void close() throws IOException { - delegate.close(false); + try { + delegate.close(false); + } catch (NoSuchFileException e) { + // Ignore missing directory + } } @Override http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexManager.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexManager.java b/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexManager.java index 00e67e4..51a5f70 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexManager.java +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/MavenIndexManager.java @@ -22,6 +22,7 @@ package org.apache.archiva.indexer.maven; import org.apache.archiva.admin.model.RepositoryAdminException; import org.apache.archiva.admin.model.beans.NetworkProxy; import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; +import org.apache.archiva.common.utils.FileUtils; import org.apache.archiva.common.utils.PathUtil; import org.apache.archiva.configuration.ArchivaConfiguration; import org.apache.archiva.indexer.ArchivaIndexManager; @@ -32,12 +33,7 @@ import org.apache.archiva.indexer.UnsupportedBaseContextException; import org.apache.archiva.proxy.common.WagonFactory; import org.apache.archiva.proxy.common.WagonFactoryException; import org.apache.archiva.proxy.common.WagonFactoryRequest; -import org.apache.archiva.repository.ManagedRepository; -import org.apache.archiva.repository.PasswordCredentials; -import org.apache.archiva.repository.RemoteRepository; -import org.apache.archiva.repository.Repository; -import org.apache.archiva.repository.RepositoryType; -import org.apache.archiva.repository.UnsupportedRepositoryTypeException; +import org.apache.archiva.repository.*; import org.apache.archiva.repository.features.IndexCreationFeature; import org.apache.archiva.repository.features.RemoteIndexFeature; import org.apache.commons.lang.StringUtils; @@ -425,7 +421,7 @@ public class MavenIndexManager implements ArchivaIndexManager @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( ) ); @@ -449,44 +445,120 @@ public class MavenIndexManager implements ArchivaIndexManager + ( StringUtils.isNotEmpty( e.getMessage( ) ) ? ": " + e.getMessage( ) : "" ), e ); } MavenIndexContext context = new MavenIndexContext( repository, mvnCtx ); + return context; } - private IndexingContext createRemoteContext( RemoteRepository remoteRepository ) throws IOException + @Override + public ArchivaIndexingContext reset(ArchivaIndexingContext context) throws IndexUpdateFailedException { + ArchivaIndexingContext ctx; + executeUpdateFunction(context, indexingContext -> { + try { + indexingContext.close(true); + } catch (IOException e) { + log.warn("Index close failed"); + } + try { + FileUtils.deleteDirectory(Paths.get(context.getPath())); + } catch (IOException e) { + throw new IndexUpdateFailedException("Could not delete index files"); + } + }); + try { + Repository repo = context.getRepository(); + ctx = createContext(context.getRepository()); + if (repo instanceof EditableRepository) { + ((EditableRepository)repo).setIndexingContext(ctx); + } + } catch (IndexCreationFailedException e) { + throw new IndexUpdateFailedException("Could not create index"); + } + return ctx; + } + + @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."); + } + } + + private Path getIndexPath(Repository repo) throws IOException { + IndexCreationFeature icf = repo.getFeature(IndexCreationFeature.class).get(); + Path repoDir = repo.getLocalPath(); + URI indexDir = icf.getIndexPath(); + Path indexDirectory = null; + if ( ! StringUtils.isEmpty(indexDir.toString( ) ) ) + { + + indexDirectory = PathUtil.getPathFromUri( indexDir ); + // not absolute so create it in repository directory + if ( !indexDirectory.isAbsolute( ) ) + { + indexDirectory = repoDir.resolve( indexDirectory ); + } + } + else + { + indexDirectory = repoDir.resolve( ".index" ); + } + + if ( !Files.exists( indexDirectory ) ) + { + Files.createDirectories( indexDirectory ); + } + return indexDirectory; + } + + private IndexingContext createRemoteContext(RemoteRepository remoteRepository ) throws IOException { Path appServerBase = archivaConfiguration.getAppServerBaseDir( ); String contextKey = "remote-" + remoteRepository.getId( ); + // create remote repository path - Path repoDir = appServerBase.resolve( "data" ).resolve( "remotes" ).resolve( remoteRepository.getId( ) ); + Path repoDir = remoteRepository.getLocalPath(); if ( !Files.exists( repoDir ) ) { Files.createDirectories( repoDir ); } - Path indexDirectory; + Path indexDirectory = null; // is there configured indexDirectory ? if ( remoteRepository.supportsFeature( RemoteIndexFeature.class ) ) { RemoteIndexFeature rif = remoteRepository.getFeature( RemoteIndexFeature.class ).get( ); - indexDirectory = PathUtil.getPathFromUri( rif.getIndexUri( ) ); - if ( !indexDirectory.isAbsolute( ) ) - { - indexDirectory = repoDir.resolve( indexDirectory ); - } - - // if not configured use a default value - if ( indexDirectory == null ) - { - indexDirectory = repoDir.resolve( ".index" ); - } - if ( !Files.exists( indexDirectory ) ) - { - Files.createDirectories( indexDirectory ); - } - + indexDirectory = getIndexPath(remoteRepository); String remoteIndexUrl = calculateIndexRemoteUrl( remoteRepository.getLocation( ), rif ); try { @@ -538,35 +610,11 @@ public class MavenIndexManager implements ArchivaIndexManager } } + Path indexDirectory = null; if ( repository.supportsFeature( IndexCreationFeature.class ) ) { - IndexCreationFeature icf = repository.getFeature( IndexCreationFeature.class ).get( ); - URI indexDir = icf.getIndexPath( ); - //File managedRepository = new File( repository.getLocation() ); - - Path indexDirectory = null; - if ( indexDir != null && !"".equals( indexDir.toString( ) ) ) - { - - indexDirectory = PathUtil.getPathFromUri( indexDir ); - // not absolute so create it in repository directory - if ( !indexDirectory.isAbsolute( ) ) - { - indexDirectory = repositoryDirectory.resolve( indexDirectory ); - } - icf.setIndexPath( indexDirectory.normalize( ).toUri( ) ); - } - else - { - indexDirectory = repositoryDirectory.resolve( ".indexer" ); - icf.setIndexPath( indexDirectory.toUri( ) ); - } - - if ( !Files.exists( indexDirectory ) ) - { - Files.createDirectories( indexDirectory ); - } + indexDirectory = getIndexPath(repository); String indexUrl = repositoryDirectory.toUri( ).toURL( ).toExternalForm( ); try http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearch.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearch.java b/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearch.java index 590cdd2..c861a9b 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearch.java +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/main/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearch.java @@ -20,24 +20,20 @@ package org.apache.archiva.indexer.maven.search; */ import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin; import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException; +import org.apache.archiva.indexer.UnsupportedBaseContextException; +import org.apache.archiva.indexer.search.ArtifactInfoFilter; import org.apache.archiva.indexer.search.*; import org.apache.archiva.indexer.util.SearchUtil; import org.apache.archiva.model.ArchivaArtifactModel; -import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.Repository; +import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.repository.RepositoryType; import org.apache.commons.lang.StringUtils; -import org.apache.maven.index.ArtifactInfo; -import org.apache.maven.index.FlatSearchRequest; -import org.apache.maven.index.FlatSearchResponse; -import org.apache.maven.index.MAVEN; -import org.apache.maven.index.NexusIndexer; -import org.apache.maven.index.OSGI; -import org.apache.maven.index.QueryCreator; -import org.apache.maven.index.SearchType; +import org.apache.maven.index.*; import org.apache.maven.index.context.IndexingContext; import org.apache.maven.index.expr.SearchExpression; import org.apache.maven.index.expr.SearchTyped; @@ -52,13 +48,7 @@ import org.springframework.stereotype.Service; import javax.inject.Inject; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * RepositorySearch implementation which uses the Maven Indexer for searching. @@ -69,11 +59,12 @@ public class MavenRepositorySearch { private Logger log = LoggerFactory.getLogger( getClass() ); - private NexusIndexer indexer; + private Indexer indexer; private QueryCreator queryCreator; - private ManagedRepositoryAdmin managedRepositoryAdmin; + + RepositoryRegistry repositoryRegistry; private ProxyConnectorAdmin proxyConnectorAdmin; @@ -83,13 +74,14 @@ public class MavenRepositorySearch } @Inject - public MavenRepositorySearch( NexusIndexer nexusIndexer, ManagedRepositoryAdmin managedRepositoryAdmin, + public MavenRepositorySearch( Indexer nexusIndexer, RepositoryRegistry repositoryRegistry, + ProxyConnectorAdmin proxyConnectorAdmin, QueryCreator queryCreator ) throws PlexusSisuBridgeException { this.indexer = nexusIndexer; this.queryCreator = queryCreator; - this.managedRepositoryAdmin = managedRepositoryAdmin; + this.repositoryRegistry = repositoryRegistry; this.proxyConnectorAdmin = proxyConnectorAdmin; } @@ -335,13 +327,36 @@ public class MavenRepositorySearch } + private IndexingContext getIndexingContext(String id) { + String repoId; + if (StringUtils.startsWith(id, "remote-")) { + repoId = StringUtils.substringAfter(id, "remote-"); + } else { + repoId = id; + } + Repository repo = repositoryRegistry.getRepository(repoId); + if (repo==null) { + return null; + } else { + if (repo.getIndexingContext()!=null) { + try { + return repo.getIndexingContext().getBaseContext(IndexingContext.class); + } catch (UnsupportedBaseContextException e) { + return null; + } + } else { + return null; + } + } + } + private List<IndexingContext> getIndexingContexts( List<String> ids ) { List<IndexingContext> contexts = new ArrayList<>( ids.size() ); for ( String id : ids ) { - IndexingContext context = indexer.getIndexingContexts().get( id ); + IndexingContext context = getIndexingContext(id); if ( context != null ) { contexts.add( context ); @@ -382,20 +397,20 @@ public class MavenRepositorySearch { try { - ManagedRepository repoConfig = managedRepositoryAdmin.getManagedRepository( repo ); + Repository rRepo = repositoryRegistry.getRepository(repo); - if ( repoConfig != null ) + if ( rRepo != null ) { - IndexingContext context = managedRepositoryAdmin.createIndexContext( repoConfig ); - if ( context.isSearchable() ) - { - indexingContextIds.addAll( getRemoteIndexingContextIds( repo ) ); - indexingContextIds.add( context.getId() ); - } - else - { - log.warn( "indexingContext with id {} not searchable", repoConfig.getId() ); + 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()); + } } } @@ -404,17 +419,14 @@ public class MavenRepositorySearch log.warn( "Repository '{}' not found in configuration.", repo ); } } - catch ( RepositoryAdminException e ) - { - log.warn( "RepositoryAdminException occured while accessing index of repository '{}' : {}", repo, - e.getMessage() ); - continue; - } 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; } } @@ -446,10 +458,16 @@ public class MavenRepositorySearch for ( ProxyConnector proxyConnector : proxyConnectors ) { String remoteId = "remote-" + proxyConnector.getTargetRepoId(); - IndexingContext context = indexer.getIndexingContexts().get( remoteId ); - if ( context != null && context.isSearchable() ) - { - ids.add( remoteId ); + 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 + } } } http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java index 53cdaad..32e3b6f 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java @@ -22,6 +22,7 @@ package org.apache.archiva.indexer.maven; import org.apache.archiva.common.utils.FileUtils; import org.apache.archiva.indexer.ArchivaIndexingContext; import org.apache.archiva.indexer.IndexCreationFailedException; +import org.apache.archiva.repository.RepositoryRegistry; import org.apache.archiva.repository.RepositoryType; import org.apache.archiva.repository.features.IndexCreationFeature; import org.apache.archiva.repository.features.RemoteIndexFeature; @@ -58,6 +59,10 @@ import static org.junit.Assert.*; @ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) public class MavenIndexManagerTest { + @Inject + RepositoryRegistry repositoryRegistry; + + private Path indexPath; private MavenManagedRepository repository; private ArchivaIndexingContext ctx; @@ -72,6 +77,7 @@ public class MavenIndexManagerTest { @After public void tearDown() { + repositoryRegistry.destroy(); if (ctx!=null) { try { ctx.close(true); http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/AbstractMavenRepositorySearch.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/AbstractMavenRepositorySearch.java b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/AbstractMavenRepositorySearch.java index 07fcc09..e5171d2 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/AbstractMavenRepositorySearch.java +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/AbstractMavenRepositorySearch.java @@ -28,18 +28,14 @@ import org.apache.archiva.configuration.ArchivaConfiguration; import org.apache.archiva.configuration.Configuration; import org.apache.archiva.configuration.ConfigurationListener; import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.indexer.maven.search.MavenRepositorySearch; import org.apache.archiva.indexer.search.SearchResultHit; import org.apache.archiva.indexer.search.SearchResults; +import org.apache.archiva.repository.Repository; import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.repository.features.IndexCreationFeature; import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; import org.apache.commons.lang.SystemUtils; -import org.apache.maven.index.ArtifactContext; -import org.apache.maven.index.ArtifactContextProducer; -import org.apache.maven.index.ArtifactScanningListener; -import org.apache.maven.index.NexusIndexer; -import org.apache.maven.index.QueryCreator; -import org.apache.maven.index.ScanningResult; +import org.apache.maven.index.*; import org.apache.maven.index.context.IndexCreator; import org.apache.maven.index.context.IndexingContext; import org.easymock.EasyMock; @@ -87,6 +83,9 @@ public abstract class AbstractMavenRepositorySearch @Inject RepositoryRegistry repositoryRegistry; + @Inject + private IndexerEngine indexerEngine; + IMocksControl archivaConfigControl; Configuration config; @@ -98,7 +97,10 @@ public abstract class AbstractMavenRepositorySearch List<IndexCreator> indexCreators; @Inject - NexusIndexer nexusIndexer; + Indexer indexer; + + @Inject + Scanner scanner; @Inject QueryCreator queryCreator; @@ -127,11 +129,9 @@ public abstract class AbstractMavenRepositorySearch defaultProxyConnectorAdmin.setArchivaConfiguration( archivaConfig ); repositoryRegistry.setArchivaConfiguration( archivaConfig ); - search = new MavenRepositorySearch( nexusIndexer, defaultManagedRepositoryAdmin, defaultProxyConnectorAdmin, + search = new MavenRepositorySearch( indexer, repositoryRegistry, defaultProxyConnectorAdmin, queryCreator ); - defaultManagedRepositoryAdmin.setIndexer( nexusIndexer ); - defaultManagedRepositoryAdmin.setIndexCreators( indexCreators ); assertNotNull( repositoryRegistry ); defaultManagedRepositoryAdmin.setRepositoryRegistry( repositoryRegistry ); @@ -144,6 +144,8 @@ public abstract class AbstractMavenRepositorySearch archivaConfig.addListener( EasyMock.anyObject( ConfigurationListener.class ) ); EasyMock.expect( archivaConfig.getDefaultLocale() ).andReturn( Locale.getDefault( ) ).anyTimes(); EasyMock.expect( archivaConfig.getConfiguration() ).andReturn(config).anyTimes(); + archivaConfig.save(EasyMock.anyObject(Configuration.class)); + EasyMock.expectLastCall().anyTimes(); archivaConfigControl.replay(); repositoryRegistry.reload(); archivaConfigControl.reset(); @@ -154,11 +156,16 @@ public abstract class AbstractMavenRepositorySearch public void tearDown() throws Exception { - for ( IndexingContext indexingContext : nexusIndexer.getIndexingContexts().values() ) - { - nexusIndexer.removeIndexingContext( indexingContext, true ); - } - + archivaConfigControl.reset(); + EasyMock.expect( archivaConfig.getDefaultLocale() ).andReturn( Locale.getDefault( ) ).anyTimes(); + EasyMock.expect( archivaConfig.getConfiguration() ).andReturn(config).anyTimes(); + archivaConfig.save(EasyMock.anyObject(Configuration.class)); + EasyMock.expectLastCall().anyTimes(); + archivaConfigControl.replay(); + repositoryRegistry.removeRepository(TEST_REPO_1); + repositoryRegistry.removeRepository(TEST_REPO_2); + repositoryRegistry.removeRepository(REPO_RELEASE); + repositoryRegistry.destroy(); FileUtils.deleteDirectory( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "/target/repos/" + TEST_REPO_1 ) ); assertFalse( Files.exists(Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "/target/repos/" + TEST_REPO_1 )) ); @@ -190,22 +197,32 @@ public abstract class AbstractMavenRepositorySearch repositoryConfig.setScanned( true ); repositoryConfig.setSnapshots( false ); repositoryConfig.setReleases( true ); + repositoryConfig.setIndexDir(".indexer"); return repositoryConfig; } - protected void createIndex( String repository, List<Path> filesToBeIndexed, boolean scan ) + protected void createIndex( String repository, List<Path> filesToBeIndexed, boolean scan) throws Exception { + createIndex(repository, filesToBeIndexed, scan, null); + } + + protected void createIndex( String repository, List<Path> filesToBeIndexed, boolean scan, Path indexDir) throws Exception { + Repository rRepo = repositoryRegistry.getRepository(repository); + IndexCreationFeature icf = rRepo.getFeature(IndexCreationFeature.class).get(); + - IndexingContext context = nexusIndexer.getIndexingContexts().get( repository ); + IndexingContext context = rRepo.getIndexingContext().getBaseContext(IndexingContext.class); if ( context != null ) { - nexusIndexer.removeIndexingContext( context, true ); + context.close(true); } - Path indexerDirectory = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "/target/repos/" + repository + "/.indexer" ); + Path repoDir = Paths.get(org.apache.archiva.common.utils.FileUtils.getBasedir()).resolve("target").resolve("repos").resolve(repository); + + Path indexerDirectory = repoDir.resolve(".indexer" ); if ( Files.exists(indexerDirectory) ) { @@ -214,7 +231,7 @@ public abstract class AbstractMavenRepositorySearch assertFalse( Files.exists(indexerDirectory) ); - Path lockFile = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "/target/repos/" + repository + "/.indexer/write.lock" ); + Path lockFile = repoDir.resolve(".indexer/write.lock" ); if ( Files.exists(lockFile) ) { Files.delete(lockFile); @@ -224,14 +241,20 @@ public abstract class AbstractMavenRepositorySearch Path repo = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + repository ); assertTrue( Files.exists(repo) ); - Path indexDirectory = - Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/index/test-" + Long.toString( System.currentTimeMillis() ) ); - indexDirectory.toFile().deleteOnExit(); - FileUtils.deleteDirectory( indexDirectory ); + org.apache.commons.io.FileUtils.copyDirectory(repo.toFile(), repoDir.toFile()); + + if (indexDir==null) { + Path indexDirectory = + Paths.get(org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/index/test-" + Long.toString(System.currentTimeMillis())); + indexDirectory.toFile().deleteOnExit(); + FileUtils.deleteDirectory(indexDirectory); + icf.setIndexPath(indexDirectory.toUri()); + } else { + + icf.setIndexPath(indexDir.toUri()); + } + context = rRepo.getIndexingContext().getBaseContext(IndexingContext.class); - context = nexusIndexer.addIndexingContext( repository, repository, repo.toFile(), indexDirectory.toFile(), - repo.toUri().toURL().toExternalForm(), - indexDirectory.toUri().toURL().toString(), indexCreators ); // minimize datas in memory // context.getIndexWriter().setMaxBufferedDocs( -1 ); @@ -247,16 +270,20 @@ public abstract class AbstractMavenRepositorySearch ac.getArtifactInfo().setPackaging( "pom" ); ac.getArtifactInfo().setClassifier( "pom" ); } - nexusIndexer.addArtifactToIndex( ac, context ); + indexer.addArtifactToIndex( ac, context ); context.updateTimestamp( true ); } if ( scan ) { - nexusIndexer.scan( context, new ArtifactScanListener(), false ); + DefaultScannerListener listener = new DefaultScannerListener( context, indexerEngine, true, new ArtifactScanListener()); + ScanningRequest req = new ScanningRequest(context, listener ); + scanner.scan( req ); + context.commit(); } // force flushing - context.getIndexWriter().commit(); + context.commit(); + // context.getIndexWriter().commit(); context.setSearchable( true ); } http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchOSGITest.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchOSGITest.java b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchOSGITest.java index e99947f..066b2af 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchOSGITest.java +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchOSGITest.java @@ -22,9 +22,12 @@ package org.apache.archiva.indexer.maven.search; import org.apache.archiva.indexer.search.SearchFields; import org.apache.archiva.indexer.search.SearchResultHit; import org.apache.archiva.indexer.search.SearchResults; +import org.apache.archiva.repository.RepositoryRegistry; import org.easymock.EasyMock; +import org.junit.After; import org.junit.Test; +import javax.inject.Inject; import java.nio.file.Path; import java.util.Arrays; import java.util.Collections; @@ -38,6 +41,16 @@ public class MavenRepositorySearchOSGITest extends AbstractMavenRepositorySearch { + @Inject + RepositoryRegistry repositoryRegistry; + + @After + @Override + public void tearDown() throws Exception { + super.tearDown(); + repositoryRegistry.destroy(); + } + @Test public void searchFelixWithSymbolicName() throws Exception http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchPaginateTest.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchPaginateTest.java b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchPaginateTest.java index c8498b2..d679edf 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchPaginateTest.java +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchPaginateTest.java @@ -24,19 +24,37 @@ import org.apache.archiva.indexer.search.SearchResultHit; import org.apache.archiva.indexer.search.SearchResultLimits; import org.apache.archiva.indexer.search.SearchResults; import org.apache.archiva.indexer.util.SearchUtil; +import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import java.util.Arrays; import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; /** * @author Olivier Lamy */ -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) +@RunWith( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) public class MavenRepositorySearchPaginateTest extends TestCase { + + @Autowired + RepositoryRegistry repositoryRegistry; + + @After + public void endTests() { + assert repositoryRegistry!=null; + repositoryRegistry.destroy(); + } + @Test public void nonPaginatedResult() throws Exception http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchTest.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchTest.java b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchTest.java index 1cc1574..eff589f 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchTest.java +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/search/MavenRepositorySearchTest.java @@ -50,11 +50,11 @@ public class MavenRepositorySearchTest throws Exception { List<Path> files = new ArrayList<>(); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test", TEST_REPO_1, + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos", TEST_REPO_1, "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test", TEST_REPO_1, + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos", TEST_REPO_1, "/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar" )); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test", TEST_REPO_1, + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos", TEST_REPO_1, "org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar" )); createIndex( TEST_REPO_1, files, scan ); @@ -64,20 +64,20 @@ public class MavenRepositorySearchTest throws Exception { List<Path> files = new ArrayList<>(); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_1 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_1 + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_1 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_1 + "/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_1 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_1 + "/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_1 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_1 + "/org/apache/archiva/archiva-webapp/1.0/archiva-webapp-1.0.war" ) ); files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), - "src/test/" + TEST_REPO_1 + "/com/artifactid-numeric/1.0/artifactid-numeric-1.0.jar" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_1 + "target/repos/" + TEST_REPO_1 + "/com/artifactid-numeric/1.0/artifactid-numeric-1.0.jar" ) ); + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_1 + "/com/artifactid-numeric123/1.0/artifactid-numeric123-1.0.jar" ) ); files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), - "src/test/" + TEST_REPO_1 + "/com/classname-search/1.0/classname-search-1.0.jar" ) ); + "target/repos/" + TEST_REPO_1 + "/com/classname-search/1.0/classname-search-1.0.jar" ) ); createIndex( TEST_REPO_1, files, scan ); } @@ -87,13 +87,13 @@ public class MavenRepositorySearchTest { List<Path> files = new ArrayList<>(); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_1 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_1 + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_1 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_1 + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_1 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_1 + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0-sources.jar" ) ); createIndex( TEST_REPO_1, files, scan ); @@ -337,9 +337,9 @@ public class MavenRepositorySearchTest createSimpleIndex( true ); List<Path> files = new ArrayList<>(); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_2 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_2 + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_2 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_2 + "/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.jar" ) ); createIndex( TEST_REPO_2, files, false ); @@ -365,6 +365,7 @@ public class MavenRepositorySearchTest SearchResultHit hit = results.getSearchResultHit( SearchUtil.getHitId( "org.apache.archiva", "archiva-search", null, "jar" ) ); + assertNotNull(hit); assertEquals( "org.apache.archiva", hit.getGroupId() ); assertEquals( "archiva-search", hit.getArtifactId() ); assertEquals( "not 2 version for hit " + hit + "::" + niceDisplay( results ), 2, hit.getVersions().size() ); @@ -470,9 +471,9 @@ public class MavenRepositorySearchTest throws Exception { List<Path> files = new ArrayList<>(); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_2 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_2 + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_2 + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_2 + "/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.jar" ) ); createIndex( TEST_REPO_2, files, false ); @@ -560,8 +561,8 @@ public class MavenRepositorySearchTest { List<Path> files = new ArrayList<>(); files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), - "src/test/" + TEST_REPO_1 + "/com/artifactid-numeric/1.0/artifactid-numeric-1.0.jar" ) ); - files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "src/test/" + TEST_REPO_1 + "target/repos/" + TEST_REPO_1 + "/com/artifactid-numeric/1.0/artifactid-numeric-1.0.jar" ) ); + files.add( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/repos/" + TEST_REPO_1 + "/com/artifactid-numeric123/1.0/artifactid-numeric123-1.0.jar" ) ); createIndex( TEST_REPO_1, files, true ); @@ -891,16 +892,19 @@ public class MavenRepositorySearchTest { Path repo = Paths.get( "target/repo-release" ); + FileUtils.deleteDirectory(repo.toFile()); Path indexDirectory = repo.resolve(".index" ); FileUtils.copyDirectoryStructure( Paths.get( "src/test/repo-release" ).toFile(), repo.toFile() ); IndexUpgrader.main( new String[]{ indexDirectory.toAbsolutePath().toString() } ); - createIndex( "repo-release", Collections.emptyList(), false ); + createIndex(REPO_RELEASE, Collections.emptyList(), false, indexDirectory ); + +// indexer.addIndexingContext( REPO_RELEASE, REPO_RELEASE, repo.toFile(), indexDirectory.toFile(), +// repo.toUri().toURL().toExternalForm(), +// indexDirectory.toUri().toURL().toString(), indexCreators ); + - nexusIndexer.addIndexingContext( REPO_RELEASE, REPO_RELEASE, repo.toFile(), indexDirectory.toFile(), - repo.toUri().toURL().toExternalForm(), - indexDirectory.toUri().toURL().toString(), indexCreators ); SearchResultLimits limits = new SearchResultLimits( SearchResultLimits.ALL_PAGES ); limits.setPageSize( 300 ); http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/resources/log4j2-test.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/resources/log4j2-test.xml b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/resources/log4j2-test.xml new file mode 100644 index 0000000..db1c64d --- /dev/null +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/resources/log4j2-test.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. + --> + + +<configuration status="debug"> + <appenders> + <Console name="console" target="SYSTEM_OUT"> + <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> + </Console> + </appenders> + <loggers> + + <logger name="org.apache.archiva.repository" level="info"/> + <logger name="org.apache.archiva.indexer" level="info" /> + + <logger name="JPOX" level="error"/> + + + <logger name="org.springframework" level="error"/> + + + <root level="info"> + <appender-ref ref="console"/> + </root> + </loggers> +</configuration> + + http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/resources/spring-context.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/resources/spring-context.xml index fbf53be..83a361f 100644 --- a/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/resources/spring-context.xml +++ b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/resources/spring-context.xml @@ -28,7 +28,7 @@ default-lazy-init="false"> <context:annotation-config/> - <context:component-scan base-package="org.apache.archiva.indexer.maven" /> + <context:component-scan base-package="org.apache.archiva.indexer.maven,org.apache.archiva.repository,org.apache.archiva.repository.content.maven2" /> <bean name="wagon#file" scope="prototype" class="org.apache.maven.wagon.providers.file.FileWagon"/> http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-proxy/pom.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-proxy/pom.xml b/archiva-modules/archiva-base/archiva-proxy/pom.xml index efe7be3..85a3e60 100644 --- a/archiva-modules/archiva-base/archiva-proxy/pom.xml +++ b/archiva-modules/archiva-base/archiva-proxy/pom.xml @@ -215,6 +215,11 @@ <scope>test</scope> </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-maven2-indexer</artifactId> + <scope>test</scope> + </dependency> </dependencies> <build> <plugins> http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java index 2b8b9ab..08bcd96 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java @@ -26,7 +26,7 @@ import org.springframework.stereotype.Service; /** * @author Olivier Lamy */ -@Service ("archivaTaskScheduler#repository") +@Service ("archivaTaskScheduler#repositoryMock") public class MockRepositoryArchivaTaskScheduler implements RepositoryArchivaTaskScheduler { http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java index 4dcf747..3ab65bc 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java @@ -82,6 +82,9 @@ public abstract class AbstractProxyTestCase @Inject protected ApplicationContext applicationContext; + @Inject + RepositoryRegistry repositoryRegistry; + protected static final String ID_PROXIED1 = "proxied1"; protected static final String ID_PROXIED1_TARGET = "proxied1-target"; @@ -121,7 +124,6 @@ public abstract class AbstractProxyTestCase WagonDelegate delegate; - protected RepositoryRegistry repositoryRegistry; @Inject protected NexusIndexer nexusIndexer; @@ -156,7 +158,6 @@ public abstract class AbstractProxyTestCase // to prevent windauze file leaking removeMavenIndexes(); - repositoryRegistry = applicationContext.getBean( RepositoryRegistry.class ); repositoryRegistry.setArchivaConfiguration( config ); // Setup target (proxied to) repository. @@ -167,6 +168,7 @@ public abstract class AbstractProxyTestCase saveRemoteRepositoryConfig( ID_PROXIED2, "Proxied Repository 2", Paths.get( REPOPATH_PROXIED2 ).toUri().toURL().toExternalForm(), "default" ); + repositoryRegistry.reload(); if ( repositoryRegistry.getManagedRepository( repoConfig.getId() ) != null ) http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java index c923ba9..81563b6 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java @@ -21,18 +21,7 @@ package org.apache.archiva.repository.mock; import org.apache.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.repository.BasicManagedRepository; -import org.apache.archiva.repository.BasicRemoteRepository; -import org.apache.archiva.repository.EditableManagedRepository; -import org.apache.archiva.repository.EditableRemoteRepository; -import org.apache.archiva.repository.ManagedRepository; -import org.apache.archiva.repository.PasswordCredentials; -import org.apache.archiva.repository.ReleaseScheme; -import org.apache.archiva.repository.RemoteRepository; -import org.apache.archiva.repository.RepositoryCredentials; -import org.apache.archiva.repository.RepositoryException; -import org.apache.archiva.repository.RepositoryProvider; -import org.apache.archiva.repository.RepositoryType; +import org.apache.archiva.repository.*; import org.apache.archiva.repository.features.ArtifactCleanupFeature; import org.apache.archiva.repository.features.IndexCreationFeature; import org.apache.archiva.repository.features.RemoteIndexFeature; @@ -165,6 +154,8 @@ public class RepositoryProviderMock implements RepositoryProvider rif.setIndexUri( new URI( configuration.getIndexDir( ) ) ); rif.setDownloadTimeout( Duration.ofSeconds( configuration.getRemoteDownloadTimeout( ) ) ); rif.setProxyId( configuration.getRemoteDownloadNetworkProxyId( ) ); + IndexCreationFeature icf = remoteRepository.getFeature(IndexCreationFeature.class).get(); + icf.setIndexPath(new URI(".index" )); } catch ( Exception e ) { @@ -229,4 +220,8 @@ public class RepositoryProviderMock implements RepositoryProvider return configuration; } + @Override + public <T> void raise(RepositoryEvent<T> event) { + + } } http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml index baef8a5..65599f7 100755 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/resources/spring-context.xml @@ -33,6 +33,7 @@ <alias name="archivaConfiguration#mock" alias="archivaConfiguration#default"/> <alias name="archivaConfiguration#mock" alias="archivaConfiguration"/> + <alias name="archivaTaskScheduler#repositoryMock" alias="archivaTaskScheduler#repository" /> <bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler"> <property name="properties"> http://git-wip-us.apache.org/repos/asf/archiva/blob/c544376a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java ---------------------------------------------------------------------- diff --git a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java index a73e457..08d68cf 100644 --- a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java +++ b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java @@ -22,6 +22,7 @@ package org.apache.archiva.admin.model.managed; import org.apache.archiva.admin.model.AuditInformation; import org.apache.archiva.admin.model.RepositoryAdminException; import org.apache.archiva.admin.model.beans.ManagedRepository; +import org.apache.archiva.indexer.ArchivaIndexingContext; import org.apache.maven.index.context.IndexingContext; import java.util.List; @@ -57,16 +58,5 @@ public interface ManagedRepositoryAdmin AuditInformation auditInformation, boolean resetStats ) throws RepositoryAdminException; - /** - * - * @param repository - * @return - * @throws RepositoryAdminException - * @since 1.4-M2 - */ - IndexingContext createIndexContext( ManagedRepository repository ) - throws RepositoryAdminException; - - IndexingContext createIndexContext( org.apache.archiva.repository.ManagedRepository repository) throws RepositoryAdminException; }
