Adding local path to repository API

Project: http://git-wip-us.apache.org/repos/asf/archiva/repo
Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/754b2d59
Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/754b2d59
Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/754b2d59

Branch: refs/heads/master
Commit: 754b2d594076355d6e9d0b7698d309c87a0d672b
Parents: 2fe8227
Author: Martin Stockhammer <[email protected]>
Authored: Mon Nov 20 08:20:42 2017 +0100
Committer: Martin Stockhammer <[email protected]>
Committed: Mon Nov 20 08:20:42 2017 +0100

----------------------------------------------------------------------
 .../java/org/apache/archiva/cli/ArchivaCli.java |   2 +-
 .../configuration/ArchivaConfiguration.java     |   6 +
 .../DefaultArchivaConfiguration.java            |  22 +
 .../src/main/mdo/configuration.mdo              |   7 +
 .../src/test/java/RepositoryProviderMock.java   |  12 +-
 .../test/java/SimpleArtifactConsumerTest.java   |   2 +-
 .../ArtifactMissingChecksumsConsumerTest.java   |   5 +-
 .../repository/AbstractRepositoryPurgeTest.java |   5 +-
 .../repository/mock/RepositoryProviderMock.java |  11 +-
 .../lucene/NexusIndexerConsumerTest.java        |   2 +-
 .../DefaultLegacyRepositoryConverter.java       |   2 +-
 .../indexer/maven/MavenIndexManager.java        |   8 +-
 .../indexer/maven/MavenIndexManagerTest.java    |  89 ++++
 .../archiva/proxy/AbstractProxyTestCase.java    |   2 +-
 .../archiva/proxy/HttpProxyTransferTest.java    |   2 +-
 .../apache/archiva/proxy/MockConfiguration.java |  21 +
 .../repository/mock/RepositoryProviderMock.java |  11 +-
 .../apache/archiva/repository/Repository.java   |  19 +-
 .../repository/AbstractManagedRepository.java   |   9 +-
 .../repository/AbstractRemoteRepository.java    |  21 +-
 .../archiva/repository/AbstractRepository.java  |  27 +-
 .../repository/BasicManagedRepository.java      |   9 +-
 .../repository/BasicRemoteRepository.java       |   9 +-
 .../repository/RepositoryRegistryTest.java      |  12 +-
 .../repository/mock/RepositoryProviderMock.java |  11 +-
 .../scanner/RepositoryContentConsumersTest.java |   4 +-
 .../scanner/RepositoryScannerTest.java          |   4 +-
 .../ArchivaIndexingTaskExecutorTest.java        |   5 +-
 .../apache/archiva/webdav/DavResourceTest.java  |   5 +-
 .../maven2/MavenManagedRepository.java          |   8 +-
 .../maven2/MavenRemoteRepository.java           |   9 +-
 .../maven2/MavenRepositoryProvider.java         | 402 ++++++++-----------
 .../configuration/TestConfiguration.java        |  20 +
 .../storage/maven2/conf/MockConfiguration.java  |  21 +
 .../AbstractRepositoryLayerTestCase.java        |   9 +-
 .../content/maven2/RepositoryRequestTest.java   |   2 +-
 .../maven2/MavenRepositoryProviderTest.java     |   5 +-
 .../metadata/Maven2RepositoryStorageTest.java   |   9 +-
 .../DuplicateArtifactsConsumerTest.java         |   2 +-
 .../configuration/StubConfiguration.java        |  26 ++
 40 files changed, 534 insertions(+), 323 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-cli/src/main/java/org/apache/archiva/cli/ArchivaCli.java
----------------------------------------------------------------------
diff --git a/archiva-cli/src/main/java/org/apache/archiva/cli/ArchivaCli.java 
b/archiva-cli/src/main/java/org/apache/archiva/cli/ArchivaCli.java
index d274c3d..b2ca378 100644
--- a/archiva-cli/src/main/java/org/apache/archiva/cli/ArchivaCli.java
+++ b/archiva-cli/src/main/java/org/apache/archiva/cli/ArchivaCli.java
@@ -168,7 +168,7 @@ public class ArchivaCli
     private void doScan( String path, String[] consumers )
         throws ConsumerException, MalformedURLException
     {
-        BasicManagedRepository repo = new BasicManagedRepository( 
Paths.get(path).getFileName().toString(), "Archiva CLI Provided Repo" );
+        BasicManagedRepository repo = new BasicManagedRepository( 
Paths.get(path).getFileName().toString(), "Archiva CLI Provided Repo", 
Paths.get(path).getParent());
         repo.setLocation( Paths.get(path).toUri() );
 
         List<KnownRepositoryContentConsumer> knownConsumerList = new 
ArrayList<>();

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/ArchivaConfiguration.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/ArchivaConfiguration.java
 
b/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/ArchivaConfiguration.java
index e656b7e..80959dc 100644
--- 
a/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/ArchivaConfiguration.java
+++ 
b/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/ArchivaConfiguration.java
@@ -103,6 +103,12 @@ public interface ArchivaConfiguration
     public Path getRepositoryBaseDir();
 
     /**
+     * Returns the base directory for remote repositories
+     * @return
+     */
+    public Path getRemoteRepositoryBaseDir();
+
+    /**
      * Returns the data directory where repositories and metadata reside
      * @return
      */

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/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 b28bed2..71b4c31 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
@@ -90,6 +90,8 @@ import java.util.Set;
  * <p>
  * If the configuration is outdated, it will be upgraded when it is loaded. 
This is done by checking the version flag
  * before reading it from the registry.
+ *
+ * FIXME: The synchronization must be improved, the current impl may lead to 
inconsistent data or multiple getConfiguration() calls ([email protected])
  * </p>
  */
 @Service("archivaConfiguration#default")
@@ -176,6 +178,7 @@ public class DefaultArchivaConfiguration
 
     private volatile Path dataDirectory;
     private volatile Path repositoryBaseDirectory;
+    private volatile Path remoteRepositoryBaseDirectory;
 
     @PostConstruct
     private void init() {
@@ -261,6 +264,17 @@ public class DefaultArchivaConfiguration
                 dataDirectory.resolve(tmpRepoBaseDir);
             }
         }
+        String remoteRepoBaseDir = 
config.getArchivaRuntimeConfiguration().getRemoteRepositoryBaseDirectory();
+        if (StringUtils.isEmpty(remoteRepoBaseDir)) {
+            remoteRepositoryBaseDirectory = dataDirectory.resolve("remotes");
+        } else {
+            Path tmpRemoteRepoDir = Paths.get(remoteRepoBaseDir);
+            if (tmpRemoteRepoDir.isAbsolute()) {
+                remoteRepositoryBaseDirectory = tmpRemoteRepoDir;
+            } else {
+                dataDirectory.resolve(tmpRemoteRepoDir);
+            }
+        }
 
 
         config.getRepositoryGroups();
@@ -942,6 +956,14 @@ public class DefaultArchivaConfiguration
     }
 
     @Override
+    public Path getRemoteRepositoryBaseDir() {
+        if (remoteRepositoryBaseDirectory==null) {
+            getConfiguration();
+        }
+        return remoteRepositoryBaseDirectory;
+    }
+
+    @Override
     public Path getDataDirectory() {
         if (dataDirectory==null) {
             getConfiguration();

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
 
b/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
index 91dbb65..d687ba6 100644
--- 
a/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
+++ 
b/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
@@ -1547,6 +1547,13 @@
           <required>false</required>
         </field>
         <field>
+          <name>remoteRepositoryBaseDirectory</name>
+          <version>3.0.0+</version>
+          <description>The base directory for local storage of remote 
repository data. If not set, it's ${dataDirectory}/remotes.</description>
+          <type>String</type>
+          <required>false</required>
+        </field>
+        <field>
           <name>defaultLanguage</name>
           <type>String</type>
           <version>3.0.0+</version>

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/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 55151f3..a140842 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
@@ -39,7 +39,9 @@ import 
org.apache.archiva.repository.features.RemoteIndexFeature;
 import org.apache.archiva.repository.features.StagingRepositoryFeature;
 import org.springframework.stereotype.Service;
 
+
 import java.net.URI;
+import java.nio.file.Paths;
 import java.time.Duration;
 import java.time.Period;
 import java.util.HashSet;
@@ -69,19 +71,19 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     @Override
     public EditableManagedRepository createManagedInstance( String id, String 
name )
     {
-        return new BasicManagedRepository( id, name );
+        return new BasicManagedRepository( id, name, 
Paths.get("target/repositories") );
     }
 
     @Override
     public EditableRemoteRepository createRemoteInstance( String id, String 
name )
     {
-        return new BasicRemoteRepository( id, name );
+        return new BasicRemoteRepository( id, name , 
Paths.get("target/remotes"));
     }
 
     @Override
     public ManagedRepository createManagedInstance( 
ManagedRepositoryConfiguration configuration ) throws RepositoryException
     {
-        BasicManagedRepository managedRepository = new BasicManagedRepository( 
configuration.getId( ), configuration.getName( ) );
+        BasicManagedRepository managedRepository = new BasicManagedRepository( 
configuration.getId( ), configuration.getName( ), 
Paths.get("target/repositories") );
         updateManagedInstance( managedRepository, configuration );
         return managedRepository;
     }
@@ -128,7 +130,7 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     public ManagedRepository createStagingInstance( 
ManagedRepositoryConfiguration configuration ) throws RepositoryException
     {
         String id = configuration.getId( ) + 
StagingRepositoryFeature.STAGING_REPO_POSTFIX;
-        BasicManagedRepository managedRepository = new BasicManagedRepository( 
id, configuration.getName( ) );
+        BasicManagedRepository managedRepository = new BasicManagedRepository( 
id, configuration.getName( ), Paths.get("target/repositories") );
         updateManagedInstance( managedRepository, configuration );
         return managedRepository;
     }
@@ -136,7 +138,7 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     @Override
     public RemoteRepository createRemoteInstance( 
RemoteRepositoryConfiguration configuration ) throws RepositoryException
     {
-        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
configuration.getId( ), configuration.getName( ) );
+        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
configuration.getId( ), configuration.getName( ), Paths.get("target/remotes") );
         updateRemoteInstance( remoteRepository, configuration );
         return remoteRepository;
     }

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/SimpleArtifactConsumerTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/SimpleArtifactConsumerTest.java
 
b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/SimpleArtifactConsumerTest.java
index 68d03a8..0b134ba 100644
--- 
a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/SimpleArtifactConsumerTest.java
+++ 
b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/test/java/SimpleArtifactConsumerTest.java
@@ -84,7 +84,7 @@ public class SimpleArtifactConsumerTest
         Files.createDirectories( repoDir );
         repoDir.toFile().deleteOnExit();
 
-        testRepository = new 
BasicManagedRepository("test-consumer-repository","Test-Consumer-Repository" );
+        testRepository = new 
BasicManagedRepository("test-consumer-repository","Test-Consumer-Repository", 
Paths.get("target/repositories") );
         testRepository.setLocation( repoDir.toAbsolutePath().toUri() );
 
         repositoryRegistry.putRepository(testRepository);

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java
 
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java
index 1ad70c3..5851e67 100644
--- 
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java
+++ 
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/ArtifactMissingChecksumsConsumerTest.java
@@ -47,9 +47,10 @@ public class ArtifactMissingChecksumsConsumerTest
     {
         super.setUp();
 
-        repoConfig = new BasicManagedRepository( "test-repo", "Test 
Repository");
+        Path basePath = Paths.get("target/test-classes");
+        repoConfig = new BasicManagedRepository( "test-repo", "Test 
Repository", basePath);
         repoConfig.setLayout( "default" );
-        repoConfig.setLocation( Paths.get( "target/test-classes/test-repo/" 
).toUri() );
+        repoConfig.setLocation(basePath.resolve("test-repo/" ).toUri() );
 
         consumer = applicationContext.getBean( 
"knownRepositoryContentConsumer#create-missing-checksums",
                                                
KnownRepositoryContentConsumer.class );

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/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 d65d1a4..e9e7353 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
@@ -166,13 +166,14 @@ public abstract class AbstractRepositoryPurgeTest
 
     public org.apache.archiva.repository.ManagedRepository 
getRepoConfiguration( String repoId, String repoName ) throws URISyntaxException
     {
-        config = new BasicManagedRepository( repoId, repoName);
+        Path basePath = Paths.get("target/test-" + getName()).toAbsolutePath();
+        config = new BasicManagedRepository( repoId, repoName, basePath);
         config.addActiveReleaseScheme( ReleaseScheme.RELEASE );
         config.addActiveReleaseScheme( ReleaseScheme.SNAPSHOT );
         ArtifactCleanupFeature atf = config.getFeature( 
ArtifactCleanupFeature.class ).get();
         atf.setRetentionPeriod( Period.ofDays( TEST_DAYS_OLDER) );
         String path = AbstractRepositoryPurgeTest.fixPath(
-            Paths.get( "target/test-" + getName() + "/" + repoId 
).toAbsolutePath().toString() );
+            basePath.resolve( repoId ).toAbsolutePath().toString() );
         config.setLocation( new URI( path ) );
         atf.setDeleteReleasedSnapshots( true );
         atf.setRetentionCount( TEST_RETENTION_COUNT );

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/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 ad98c99..286dd38 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
@@ -40,6 +40,7 @@ import 
org.apache.archiva.repository.features.StagingRepositoryFeature;
 import org.springframework.stereotype.Service;
 
 import java.net.URI;
+import java.nio.file.Paths;
 import java.time.Duration;
 import java.time.Period;
 import java.util.HashSet;
@@ -69,19 +70,19 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     @Override
     public EditableManagedRepository createManagedInstance( String id, String 
name )
     {
-        return new BasicManagedRepository( id, name );
+        return new BasicManagedRepository( id, name, 
Paths.get("target/repositories") );
     }
 
     @Override
     public EditableRemoteRepository createRemoteInstance( String id, String 
name )
     {
-        return new BasicRemoteRepository( id, name );
+        return new BasicRemoteRepository( id, name, 
Paths.get("target/remotes") );
     }
 
     @Override
     public ManagedRepository createManagedInstance( 
ManagedRepositoryConfiguration configuration ) throws RepositoryException
     {
-        BasicManagedRepository managedRepository = new BasicManagedRepository( 
configuration.getId( ), configuration.getName( ) );
+        BasicManagedRepository managedRepository = new BasicManagedRepository( 
configuration.getId( ), configuration.getName( ), 
Paths.get("target/repositories") );
         updateManagedInstance( managedRepository, configuration );
         return managedRepository;
     }
@@ -128,7 +129,7 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     public ManagedRepository createStagingInstance( 
ManagedRepositoryConfiguration configuration ) throws RepositoryException
     {
         String id = configuration.getId( ) + 
StagingRepositoryFeature.STAGING_REPO_POSTFIX;
-        BasicManagedRepository managedRepository = new BasicManagedRepository( 
id, configuration.getName( ) );
+        BasicManagedRepository managedRepository = new BasicManagedRepository( 
id, configuration.getName( ), Paths.get("target/repositories") );
         updateManagedInstance( managedRepository, configuration );
         return managedRepository;
     }
@@ -136,7 +137,7 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     @Override
     public RemoteRepository createRemoteInstance( 
RemoteRepositoryConfiguration configuration ) throws RepositoryException
     {
-        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
configuration.getId( ), configuration.getName( ) );
+        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
configuration.getId( ), configuration.getName( ), Paths.get("target/remotes") );
         updateRemoteInstance( remoteRepository, configuration );
         return remoteRepository;
     }

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/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 2a8546a..e34dc7e 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
@@ -132,7 +132,7 @@ public class NexusIndexerConsumerTest
         // initialize to set the file types to be processed
         nexusIndexerConsumer.initialize();
 
-        repositoryConfig = new BasicManagedRepository( "test-repo", "Test 
Repository"  );
+        repositoryConfig = new BasicManagedRepository( "test-repo", "Test 
Repository", Paths.get("target/test-classes")  );
         repositoryConfig.setLocation( new URI("target/test-classes/test-repo") 
);
         repositoryConfig.setLayout( "default" );
         repositoryConfig.setScanned( true );

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/DefaultLegacyRepositoryConverter.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/DefaultLegacyRepositoryConverter.java
 
b/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/DefaultLegacyRepositoryConverter.java
index 3e8e168..cc1af39 100644
--- 
a/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/DefaultLegacyRepositoryConverter.java
+++ 
b/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/archiva/converter/legacy/DefaultLegacyRepositoryConverter.java
@@ -92,7 +92,7 @@ public class DefaultLegacyRepositoryConverter
         {
             String defaultRepositoryUrl = PathUtil.toUrl( repositoryDirectory 
);
 
-            BasicManagedRepository legacyRepository = new 
BasicManagedRepository( "legacy", "Legacy Repository");
+            BasicManagedRepository legacyRepository = new 
BasicManagedRepository( "legacy", "Legacy Repository", 
repositoryDirectory.getParent());
             legacyRepository.setLocation( 
legacyRepositoryDirectory.toAbsolutePath().toUri() );
             legacyRepository.setLayout( "legacy" );
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/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 7e6d3c5..60c2fdd 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
@@ -521,13 +521,7 @@ public class MavenIndexManager implements 
ArchivaIndexManager
 
         IndexingContext context;
         // take care first about repository location as can be relative
-        Path repositoryDirectory = PathUtil.getPathFromUri( 
repository.getLocation( ) );
-
-        if ( !repositoryDirectory.isAbsolute( ) )
-        {
-            repositoryDirectory =
-                repositoryDirectory.resolve( "repositories" ).resolve( 
repositoryDirectory );
-        }
+        Path repositoryDirectory = repository.getLocalPath();
 
         if ( !Files.exists( repositoryDirectory ) )
         {

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/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
new file mode 100644
index 0000000..a70c584
--- /dev/null
+++ 
b/archiva-modules/archiva-base/archiva-maven2-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java
@@ -0,0 +1,89 @@
+package org.apache.archiva.indexer.maven;
+
+/*
+* 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.
+*/
+
+import org.apache.archiva.indexer.ArchivaIndexingContext;
+import org.apache.archiva.repository.ManagedRepository;
+import org.apache.archiva.repository.features.IndexCreationFeature;
+import org.apache.archiva.repository.maven2.MavenManagedRepository;
+import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+
+import javax.inject.Inject;
+
+import java.net.URI;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import static org.junit.Assert.*;
+
+@RunWith( ArchivaSpringJUnit4ClassRunner.class )
+@ContextConfiguration( locations = { 
"classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
+public class MavenIndexManagerTest {
+
+    @Inject
+    MavenIndexManager mavenIndexManager;
+
+
+
+    @Test
+    public void pack() throws Exception {
+    }
+
+    @Test
+    public void scan() throws Exception {
+    }
+
+    @Test
+    public void update() throws Exception {
+    }
+
+    @Test
+    public void addArtifactsToIndex() throws Exception {
+    }
+
+    @Test
+    public void removeArtifactsFromIndex() throws Exception {
+    }
+
+    @Test
+    public void supportsRepository() throws Exception {
+    }
+
+    @Test
+    public void createContext() throws Exception {
+        MavenManagedRepository repository = new 
MavenManagedRepository("test-repo", "Test Repo", 
Paths.get("target/repositories"));
+        repository.setLocation(new URI("test-repo"));
+        IndexCreationFeature icf = 
repository.getFeature(IndexCreationFeature.class).get();
+        icf.setIndexPath(new URI(".index-test"));
+        ArchivaIndexingContext ctx = 
mavenIndexManager.createContext(repository);
+        assertNotNull(ctx);
+        assertEquals(repository, ctx.getRepository());
+        assertEquals("test-repo", ctx.getId());
+        Path indexPath = 
Paths.get("target/repositories/test-repo/.index-test");
+        assertEquals(indexPath.toAbsolutePath(), 
Paths.get(ctx.getPath()).toAbsolutePath());
+        assertTrue(Files.exists(indexPath));
+
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/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 c4bfff3..4dcf747 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
@@ -354,7 +354,7 @@ public abstract class AbstractProxyTestCase
     protected ManagedRepositoryContent createRepository( String id, String 
name, String path, String layout )
         throws Exception
     {
-        MavenManagedRepository repo = new MavenManagedRepository(id, name);
+        MavenManagedRepository repo = new MavenManagedRepository(id, name, 
Paths.get(path).getParent());
         repo.setLocation( new URI(path) );
         repo.setLayout( layout );
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
 
b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
index 3980d87..40fa894 100644
--- 
a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
+++ 
b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java
@@ -123,7 +123,7 @@ public class HttpProxyTransferTest
         // Make the destination dir.
         Files.createDirectories(destRepoDir);
 
-        MavenManagedRepository repo = new MavenManagedRepository( MANAGED_ID, 
"Default Managed Repository" );
+        MavenManagedRepository repo = new MavenManagedRepository( MANAGED_ID, 
"Default Managed Repository", Paths.get(repoPath).getParent() );
         repo.setLocation( new URI(repoPath) );
         repo.setLayout( "default" );
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MockConfiguration.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MockConfiguration.java
 
b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MockConfiguration.java
index 54a0b94..30de663 100644
--- 
a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MockConfiguration.java
+++ 
b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MockConfiguration.java
@@ -23,6 +23,7 @@ import org.apache.archiva.configuration.*;
 import org.apache.archiva.redback.components.registry.Registry;
 import org.apache.archiva.redback.components.registry.RegistryException;
 import org.apache.archiva.redback.components.registry.RegistryListener;
+import org.apache.commons.lang.StringUtils;
 import org.easymock.EasyMock;
 import org.easymock.IMocksControl;
 import org.springframework.stereotype.Service;
@@ -160,4 +161,24 @@ public class MockConfiguration
             return Paths.get("");
         }
     }
+
+
+    @Override
+    public Path getRepositoryBaseDir() {
+        return getDataDirectory().resolve("repositories");
+    }
+
+    @Override
+    public Path getRemoteRepositoryBaseDir() {
+        return getDataDirectory().resolve("remotes");
+    }
+
+    @Override
+    public Path getDataDirectory() {
+        if (configuration!=null && 
StringUtils.isNotEmpty(configuration.getArchivaRuntimeConfiguration().getDataDirectory()))
 {
+            return 
Paths.get(configuration.getArchivaRuntimeConfiguration().getDataDirectory());
+        } else {
+            return getAppServerBaseDir().resolve("data");
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/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 834ce5b..c923ba9 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
@@ -40,6 +40,7 @@ import 
org.apache.archiva.repository.features.StagingRepositoryFeature;
 import org.springframework.stereotype.Service;
 
 import java.net.URI;
+import java.nio.file.Paths;
 import java.time.Duration;
 import java.time.Period;
 import java.util.HashSet;
@@ -69,19 +70,19 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     @Override
     public EditableManagedRepository createManagedInstance( String id, String 
name )
     {
-        return new BasicManagedRepository( id, name );
+        return new BasicManagedRepository( id, name , 
Paths.get("target/repositories"));
     }
 
     @Override
     public EditableRemoteRepository createRemoteInstance( String id, String 
name )
     {
-        return new BasicRemoteRepository( id, name );
+        return new BasicRemoteRepository( id, name, 
Paths.get("target/remotes") );
     }
 
     @Override
     public ManagedRepository createManagedInstance( 
ManagedRepositoryConfiguration configuration ) throws RepositoryException
     {
-        BasicManagedRepository managedRepository = new BasicManagedRepository( 
configuration.getId( ), configuration.getName( ) );
+        BasicManagedRepository managedRepository = new BasicManagedRepository( 
configuration.getId( ), configuration.getName( ) , 
Paths.get("target/repositories"));
         updateManagedInstance( managedRepository, configuration );
         return managedRepository;
     }
@@ -128,7 +129,7 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     public ManagedRepository createStagingInstance( 
ManagedRepositoryConfiguration configuration ) throws RepositoryException
     {
         String id = configuration.getId( ) + 
StagingRepositoryFeature.STAGING_REPO_POSTFIX;
-        BasicManagedRepository managedRepository = new BasicManagedRepository( 
id, configuration.getName( ) );
+        BasicManagedRepository managedRepository = new BasicManagedRepository( 
id, configuration.getName( ), Paths.get("target/repositories") );
         updateManagedInstance( managedRepository, configuration );
         return managedRepository;
     }
@@ -136,7 +137,7 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     @Override
     public RemoteRepository createRemoteInstance( 
RemoteRepositoryConfiguration configuration ) throws RepositoryException
     {
-        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
configuration.getId( ), configuration.getName( ) );
+        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
configuration.getId( ), configuration.getName( ), Paths.get("target/remotes") );
         updateRemoteInstance( remoteRepository, configuration );
         return remoteRepository;
     }

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
 
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
index 1c101ee..fae5745 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
@@ -23,6 +23,7 @@ import org.apache.archiva.indexer.ArchivaIndexingContext;
 import org.apache.archiva.repository.features.RepositoryFeature;
 
 import java.net.URI;
+import java.nio.file.Path;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
@@ -86,14 +87,22 @@ public interface Repository {
      */
     URI getLocation();
 
+
     /**
-     * This returns the absolute location uri of this repository. Some 
repository locations may be relative to
-     * the base repository directory or uri. This returns the absolute path of 
the repository.
-     * If the location is absolute already this method returns the same URI as 
getLocation().
+     * Returns the local path that this repository uses, if it stores data 
locally. You should keep in
+     * mind, that repository implementations may not store any data in this 
directory. E.g. if the
+     * repository data is handled by a database. So the content of this 
directory is very implementation
+     * specific. Users of this directory must know about the repository file 
layout if they use this
+     * path.
+     *
+     * Repository implementations should always return a valid path, even if 
there is no locally stored data.
      *
-     * @return the absolute uri of the location.
+     * Some extensions may use the path to store their own repository specific 
data, e.g. statistics, metadata,...
+     *
+     * @return the filesystem path to the repository.
      */
-    URI getAbsoluteLocation();
+    Path getLocalPath();
+
 
     /**
      * A repository may allow additional locations that can be used, if the 
primary location is not available.

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractManagedRepository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractManagedRepository.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractManagedRepository.java
index 3f482ca..06cab6b 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractManagedRepository.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractManagedRepository.java
@@ -20,6 +20,7 @@ package org.apache.archiva.repository;
  */
 
 
+import java.nio.file.Path;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Locale;
@@ -35,14 +36,14 @@ public abstract class AbstractManagedRepository extends 
AbstractRepository imple
     private Set<ReleaseScheme> activeReleaseSchemes = new HashSet<>(  );
     private Set<ReleaseScheme> uActiveReleaseSchemes = 
Collections.unmodifiableSet( activeReleaseSchemes );
 
-    public AbstractManagedRepository( RepositoryType type, String id, String 
name )
+    public AbstractManagedRepository( RepositoryType type, String id, String 
name, Path basePath )
     {
-        super( type, id, name );
+        super( type, id, name, basePath );
     }
 
-    public AbstractManagedRepository( Locale primaryLocale, RepositoryType 
type, String id, String name )
+    public AbstractManagedRepository( Locale primaryLocale, RepositoryType 
type, String id, String name, Path basePath )
     {
-        super( primaryLocale, type, id, name );
+        super( primaryLocale, type, id, name, basePath );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRemoteRepository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRemoteRepository.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRemoteRepository.java
index e1e570a..131aad6 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRemoteRepository.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRemoteRepository.java
@@ -20,6 +20,10 @@ package org.apache.archiva.repository;
  */
 
 
+import org.apache.commons.lang.StringUtils;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.time.Duration;
 import java.util.Collections;
 import java.util.HashMap;
@@ -43,14 +47,14 @@ public abstract class AbstractRemoteRepository extends 
AbstractRepository implem
     private String proxyId;
     private RemoteRepositoryContent content;
 
-    public AbstractRemoteRepository( RepositoryType type, String id, String 
name )
+    public AbstractRemoteRepository( RepositoryType type, String id, String 
name , Path repositoryBase)
     {
-        super( type, id, name );
+        super( type, id, name, repositoryBase );
     }
 
-    public AbstractRemoteRepository( Locale primaryLocale, RepositoryType 
type, String id, String name )
+    public AbstractRemoteRepository( Locale primaryLocale, RepositoryType 
type, String id, String name, Path repositoryBase )
     {
-        super( primaryLocale, type, id, name );
+        super( primaryLocale, type, id, name, repositoryBase );
     }
 
     @Override
@@ -138,4 +142,13 @@ public abstract class AbstractRemoteRepository extends 
AbstractRepository implem
         return timeout;
     }
 
+    /**
+     * Remote repositories resolve always relative to the base directory.
+     * @return
+     */
+    @Override
+    public Path getLocalPath() {
+        return repositoryBase.resolve(getId());
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java
index ab1c3fa..c90c5bf 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/AbstractRepository.java
@@ -23,10 +23,14 @@ import com.cronutils.model.CronType;
 import com.cronutils.model.definition.CronDefinition;
 import com.cronutils.model.definition.CronDefinitionBuilder;
 import com.cronutils.parser.CronParser;
+import org.apache.archiva.common.utils.PathUtil;
 import org.apache.archiva.indexer.ArchivaIndexingContext;
 import org.apache.archiva.repository.features.RepositoryFeature;
+import org.apache.commons.lang.StringUtils;
 
 import java.net.URI;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -59,17 +63,21 @@ public abstract class AbstractRepository implements 
EditableRepository
 
     Map<Class<? extends RepositoryFeature<?>>, RepositoryFeature<?>> 
featureMap = new HashMap<>(  );
 
-    public AbstractRepository(RepositoryType type, String id, String name) {
+    protected Path repositoryBase;
+
+    public AbstractRepository(RepositoryType type, String id, String name, 
Path repositoryBase) {
         this.id = id;
         this.names.put( primaryLocale, name);
         this.type = type;
+        this.repositoryBase=repositoryBase;
     }
 
-    public AbstractRepository(Locale primaryLocale, RepositoryType type, 
String id, String name) {
+    public AbstractRepository(Locale primaryLocale, RepositoryType type, 
String id, String name, Path repositoryBase) {
         setPrimaryLocale( primaryLocale );
         this.id = id;
         this.names.put( primaryLocale, name);
         this.type = type;
+        this.repositoryBase=repositoryBase;
     }
 
     protected void setPrimaryLocale(Locale locale) {
@@ -118,8 +126,19 @@ public abstract class AbstractRepository implements 
EditableRepository
         return location;
     }
 
-    public URI getAbsoluteLocation() {
-        return baseUri.resolve( location );
+    @Override
+    public Path getLocalPath() {
+        Path localPath;
+        if (getLocation().getScheme()=="file" || 
StringUtils.isEmpty(getLocation().getScheme())) {
+            localPath = PathUtil.getPathFromUri(getLocation());
+            if (localPath.isAbsolute()) {
+                return localPath;
+            } else {
+                return repositoryBase.resolve(localPath);
+            }
+        } else {
+            return repositoryBase.resolve(getId());
+        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java
index 0ab88f3..6c1a285 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicManagedRepository.java
@@ -23,6 +23,7 @@ import 
org.apache.archiva.repository.features.ArtifactCleanupFeature;
 import org.apache.archiva.repository.features.IndexCreationFeature;
 import org.apache.archiva.repository.features.StagingRepositoryFeature;
 
+import java.nio.file.Path;
 import java.util.Locale;
 
 /**
@@ -46,15 +47,15 @@ public class BasicManagedRepository extends 
AbstractManagedRepository
         StagingRepositoryFeature.class.toString()
     }, true, true, true, true, true  );
 
-    public BasicManagedRepository( String id, String name )
+    public BasicManagedRepository( String id, String name, Path basePath )
     {
-        super( RepositoryType.MAVEN, id, name );
+        super( RepositoryType.MAVEN, id, name, basePath );
         initFeatures();
     }
 
-    public BasicManagedRepository( Locale primaryLocale, RepositoryType type, 
String id, String name )
+    public BasicManagedRepository( Locale primaryLocale, RepositoryType type, 
String id, String name, Path basePath )
     {
-        super( primaryLocale, type, id, name );
+        super( primaryLocale, type, id, name, basePath );
         initFeatures();
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java
index d241854..64b705c 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/BasicRemoteRepository.java
@@ -21,6 +21,7 @@ package org.apache.archiva.repository;
 
 import org.apache.archiva.repository.features.RemoteIndexFeature;
 
+import java.nio.file.Path;
 import java.util.Locale;
 
 /**
@@ -41,15 +42,15 @@ public class BasicRemoteRepository extends 
AbstractRemoteRepository
         RemoteIndexFeature.class.toString()
     }, true, true, true, true, true  );
 
-    public BasicRemoteRepository( String id, String name )
+    public BasicRemoteRepository( String id, String name, Path basePath )
     {
-        super( RepositoryType.MAVEN, id, name );
+        super( RepositoryType.MAVEN, id, name, basePath);
         initFeatures();
     }
 
-    public BasicRemoteRepository( Locale primaryLocale, RepositoryType type, 
String id, String name )
+    public BasicRemoteRepository( Locale primaryLocale, RepositoryType type, 
String id, String name, Path basePath )
     {
-        super( primaryLocale, type, id, name );
+        super( primaryLocale, type, id, name, basePath );
         initFeatures();
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/RepositoryRegistryTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/RepositoryRegistryTest.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/RepositoryRegistryTest.java
index 01dcbd2..b125f81 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/RepositoryRegistryTest.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/RepositoryRegistryTest.java
@@ -192,14 +192,14 @@ public class RepositoryRegistryTest
     @Test
     public void putManagedRepository( ) throws Exception
     {
-        BasicManagedRepository managedRepository = new BasicManagedRepository( 
"test001", "Test repo" );
+        BasicManagedRepository managedRepository = new BasicManagedRepository( 
"test001", "Test repo", archivaConfiguration.getRepositoryBaseDir() );
         managedRepository.setDescription( 
managedRepository.getPrimaryLocale(), "This is just a test" );
         repositoryRegistry.putRepository(managedRepository);
 
         assertNotNull(managedRepository.getContent());
         assertEquals(6, repositoryRegistry.getRepositories().size());
 
-        managedRepository = new BasicManagedRepository( "central", "Test repo" 
);
+        managedRepository = new BasicManagedRepository( "central", "Test 
repo", archivaConfiguration.getRepositoryBaseDir() );
         managedRepository.setDescription( 
managedRepository.getPrimaryLocale(), "This is just a test" );
         ManagedRepository updatedRepo = null;
         try {
@@ -208,7 +208,7 @@ public class RepositoryRegistryTest
         } catch (RepositoryException e) {
             // OK
         }
-        managedRepository = new BasicManagedRepository( "internal", "Test 
repo" );
+        managedRepository = new BasicManagedRepository( "internal", "Test 
repo", archivaConfiguration.getRepositoryBaseDir() );
         managedRepository.setDescription( 
managedRepository.getPrimaryLocale(), "This is just a test" );
         updatedRepo = repositoryRegistry.putRepository( managedRepository );
 
@@ -283,7 +283,7 @@ public class RepositoryRegistryTest
     @Test
     public void putRemoteRepository( ) throws Exception
     {
-        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
"test001", "Test repo" );
+        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
"test001", "Test repo", archivaConfiguration.getRemoteRepositoryBaseDir() );
         remoteRepository.setDescription( remoteRepository.getPrimaryLocale(), 
"This is just a test" );
         RemoteRepository newRepo = 
repositoryRegistry.putRepository(remoteRepository);
 
@@ -291,7 +291,7 @@ public class RepositoryRegistryTest
         assertNotNull(remoteRepository.getContent());
         assertEquals(6, repositoryRegistry.getRepositories().size());
 
-        remoteRepository = new BasicRemoteRepository( "internal", "Test repo" 
);
+        remoteRepository = new BasicRemoteRepository( "internal", "Test repo", 
archivaConfiguration.getRemoteRepositoryBaseDir() );
         remoteRepository.setDescription( remoteRepository.getPrimaryLocale(), 
"This is just a test" );
         RemoteRepository updatedRepo = null;
         try
@@ -302,7 +302,7 @@ public class RepositoryRegistryTest
             // OK
         }
 
-        remoteRepository = new BasicRemoteRepository( "central", "Test repo" );
+        remoteRepository = new BasicRemoteRepository( "central", "Test repo", 
archivaConfiguration.getRemoteRepositoryBaseDir() );
         remoteRepository.setDescription( remoteRepository.getPrimaryLocale(), 
"This is just a test" );
         updatedRepo = repositoryRegistry.putRepository( remoteRepository );
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
index 95485cc..d4a78a6 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
@@ -40,6 +40,7 @@ import 
org.apache.archiva.repository.features.StagingRepositoryFeature;
 import org.springframework.stereotype.Service;
 
 import java.net.URI;
+import java.nio.file.Paths;
 import java.time.Duration;
 import java.time.Period;
 import java.util.HashSet;
@@ -69,19 +70,19 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     @Override
     public EditableManagedRepository createManagedInstance( String id, String 
name )
     {
-        return new BasicManagedRepository( id, name );
+        return new BasicManagedRepository( id, name, 
Paths.get("target/repositories") );
     }
 
     @Override
     public EditableRemoteRepository createRemoteInstance( String id, String 
name )
     {
-        return new BasicRemoteRepository( id, name );
+        return new BasicRemoteRepository( id, name , 
Paths.get("target/remotes"));
     }
 
     @Override
     public ManagedRepository createManagedInstance( 
ManagedRepositoryConfiguration configuration ) throws RepositoryException
     {
-        BasicManagedRepository managedRepository = new BasicManagedRepository( 
configuration.getId( ), configuration.getName( ) );
+        BasicManagedRepository managedRepository = new BasicManagedRepository( 
configuration.getId( ), configuration.getName( ), 
Paths.get("target/repositories") );
         updateManagedInstance( managedRepository, configuration );
         return managedRepository;
     }
@@ -128,7 +129,7 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     public ManagedRepository createStagingInstance( 
ManagedRepositoryConfiguration configuration ) throws RepositoryException
     {
         String id = configuration.getId( ) + 
StagingRepositoryFeature.STAGING_REPO_POSTFIX;
-        BasicManagedRepository managedRepository = new BasicManagedRepository( 
id, configuration.getName( ) );
+        BasicManagedRepository managedRepository = new BasicManagedRepository( 
id, configuration.getName( ) , Paths.get("target/repositories"));
         updateManagedInstance( managedRepository, configuration );
         
managedRepository.getFeature(StagingRepositoryFeature.class).get().setStageRepoNeeded(false);
         return managedRepository;
@@ -137,7 +138,7 @@ public class RepositoryProviderMock implements 
RepositoryProvider
     @Override
     public RemoteRepository createRemoteInstance( 
RemoteRepositoryConfiguration configuration ) throws RepositoryException
     {
-        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
configuration.getId( ), configuration.getName( ) );
+        BasicRemoteRepository remoteRepository = new BasicRemoteRepository( 
configuration.getId( ), configuration.getName( ), Paths.get("target/remotes") );
         updateRemoteInstance( remoteRepository, configuration );
         return remoteRepository;
     }

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryContentConsumersTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryContentConsumersTest.java
 
b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryContentConsumersTest.java
index c24c0c2..6148fe5 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryContentConsumersTest.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryContentConsumersTest.java
@@ -76,14 +76,14 @@ public class RepositoryContentConsumersTest
 
     protected ManagedRepository createRepository( String id, String name, Path 
location )
     {
-        BasicManagedRepository repo = new BasicManagedRepository( id, name  );
+        BasicManagedRepository repo = new BasicManagedRepository( id, name , 
location.getParent() );
         repo.setLocation( location.toAbsolutePath().toUri() );
         return repo;
     }
 
     protected RemoteRepository createRemoteRepository( String id, String name, 
String url ) throws URISyntaxException
     {
-        BasicRemoteRepository repo = new BasicRemoteRepository(id, name);
+        BasicRemoteRepository repo = new BasicRemoteRepository(id, name, 
Paths.get("remotes"));
         repo.setLocation( new URI( url ) );
         return repo;
     }

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryScannerTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryScannerTest.java
 
b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryScannerTest.java
index e9a462b..ac86708 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryScannerTest.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/RepositoryScannerTest.java
@@ -64,14 +64,14 @@ public class RepositoryScannerTest
 
     protected EditableManagedRepository createRepository( String id, String 
name, Path location )
     {
-        BasicManagedRepository repo = new BasicManagedRepository(id, name);
+        BasicManagedRepository repo = new BasicManagedRepository(id, name, 
location.getParent());
         repo.setLocation( location.toAbsolutePath().toUri());
         return repo;
     }
 
     protected EditableRemoteRepository createRemoteRepository( String id, 
String name, String url ) throws URISyntaxException
     {
-        BasicRemoteRepository repo = new BasicRemoteRepository(id, name);
+        BasicRemoteRepository repo = new BasicRemoteRepository(id, name, 
Paths.get("remotes"));
         repo.setLocation( new URI( url ) );
         return repo;
     }

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
 
b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
index 02c0261..d0e6532 100644
--- 
a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
+++ 
b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
@@ -91,8 +91,9 @@ public class ArchivaIndexingTaskExecutorTest
     {
         super.setUp();
 
-        repositoryConfig = new BasicManagedRepository( "test-repo", "Test 
Repository");
-        Path repoLocation = Paths.get( System.getProperty( "basedir" ), 
"target/test-classes/test-repo" ).toAbsolutePath();
+        Path baseDir = Paths.get(System.getProperty("basedir"), 
"target/test-classes").toAbsolutePath();
+        repositoryConfig = new BasicManagedRepository( "test-repo", "Test 
Repository", baseDir);
+        Path repoLocation = baseDir.resolve("test-repo" );
         repositoryConfig.setLocation(repoLocation.toUri() );
         repositoryConfig.setLayout( "default" );
         repositoryConfig.setScanned( true );

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/DavResourceTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/DavResourceTest.java
 
b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/DavResourceTest.java
index 4802776..394e82a 100644
--- 
a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/DavResourceTest.java
+++ 
b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/DavResourceTest.java
@@ -77,8 +77,7 @@ public class DavResourceTest
 
     private LockManager lockManager;
 
-    private MavenManagedRepository repository = new MavenManagedRepository( 
"repo001", "repo001");
-    
+    private MavenManagedRepository repository;
     @Override
     @Before
     public void setUp()
@@ -88,6 +87,8 @@ public class DavResourceTest
         session = new ArchivaDavSession();
         baseDir = Paths.get( "target/DavResourceTest" );
         Files.createDirectories( baseDir );
+        repository = new MavenManagedRepository( "repo001", "repo001", 
baseDir);
+
         myResource = baseDir.resolve( "myresource.jar" );
         Files.createFile(myResource);
         resourceFactory = new RootContextDavResourceFactory();

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
index aaad382..0e5a37f 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
@@ -70,14 +70,14 @@ public class MavenManagedRepository extends 
AbstractManagedRepository
         false
     );
 
-    public MavenManagedRepository( String id, String name )
+    public MavenManagedRepository( String id, String name, Path basePath )
     {
-        super( RepositoryType.MAVEN, id, name );
+        super( RepositoryType.MAVEN, id, name, basePath);
     }
 
-    public MavenManagedRepository( Locale primaryLocale, String id, String 
name )
+    public MavenManagedRepository( Locale primaryLocale, String id, String 
name, Path basePath )
     {
-        super( primaryLocale, RepositoryType.MAVEN, id, name );
+        super( primaryLocale, RepositoryType.MAVEN, id, name, basePath );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
index 8c7a8cf..c857196 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
@@ -11,6 +11,7 @@ import 
org.apache.archiva.repository.features.IndexCreationFeature;
 import org.apache.archiva.repository.features.RemoteIndexFeature;
 import org.apache.archiva.repository.features.RepositoryFeature;
 
+import java.nio.file.Path;
 import java.util.Locale;
 
 /*
@@ -53,14 +54,14 @@ public class MavenRemoteRepository extends 
AbstractRemoteRepository
         false
     );
 
-    public MavenRemoteRepository( String id, String name )
+    public MavenRemoteRepository( String id, String name, Path basePath )
     {
-        super( RepositoryType.MAVEN, id, name );
+        super( RepositoryType.MAVEN, id, name, basePath );
     }
 
-    public MavenRemoteRepository( Locale primaryLocale, String id, String name 
)
+    public MavenRemoteRepository( Locale primaryLocale, String id, String 
name, Path basePath )
     {
-        super( primaryLocale, RepositoryType.MAVEN, id, name );
+        super( primaryLocale, RepositoryType.MAVEN, id, name, basePath );
     }
 
     @Override

Reply via email to