http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
index 6bdd0b8..331f44b 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
@@ -62,63 +62,58 @@ import java.util.Set;
  * Provider for the maven2 repository implementations
  */
 @Service("mavenRepositoryProvider")
-public class MavenRepositoryProvider implements RepositoryProvider
-{
+public class MavenRepositoryProvider implements RepositoryProvider {
 
 
     @Inject
     private ArchivaConfiguration archivaConfiguration;
 
-    private static final Logger log = LoggerFactory.getLogger( 
MavenRepositoryProvider.class );
+    private static final Logger log = 
LoggerFactory.getLogger(MavenRepositoryProvider.class);
+
+    static final Set<RepositoryType> TYPES = new HashSet<>();
 
-    static final Set<RepositoryType> TYPES = new HashSet<>(  );
     static {
-        TYPES.add( RepositoryType.MAVEN);
+        TYPES.add(RepositoryType.MAVEN);
     }
 
     @Override
-    public Set<RepositoryType> provides( )
-    {
+    public Set<RepositoryType> provides() {
         return TYPES;
     }
 
     @Override
     public EditableManagedRepository createManagedInstance(String id, String 
name) {
-        return new MavenManagedRepository(id, name);
+        return new MavenManagedRepository(id, name, 
archivaConfiguration.getRepositoryBaseDir());
     }
 
     @Override
     public EditableRemoteRepository createRemoteInstance(String id, String 
name) {
-        return new MavenRemoteRepository(id, name);
+        return new MavenRemoteRepository(id, name, 
archivaConfiguration.getRemoteRepositoryBaseDir());
     }
 
-    private URI getURIFromString( String uriStr) throws RepositoryException {
+    private URI getURIFromString(String uriStr) throws RepositoryException {
         URI uri;
         try {
-            if (StringUtils.isEmpty( uriStr )) {
+            if (StringUtils.isEmpty(uriStr)) {
                 return new URI("");
             }
             if (uriStr.startsWith("/")) {
                 // only absolute paths are prepended with file scheme
-                uri = new URI("file://"+uriStr);
-            } else
-            {
-                uri = new URI( uriStr );
+                uri = new URI("file://" + uriStr);
+            } else {
+                uri = new URI(uriStr);
             }
-            if (uri.getScheme()!=null && !"file".equals(uri.getScheme())) {
+            if (uri.getScheme() != null && !"file".equals(uri.getScheme())) {
                 log.error("Bad URI scheme found: {}, URI={}", uri.getScheme(), 
uri);
-                throw new RepositoryException("The uri "+uriStr+" is not 
valid. Only file:// URI is allowed for maven.");
+                throw new RepositoryException("The uri " + uriStr + " is not 
valid. Only file:// URI is allowed for maven.");
             }
         } catch (URISyntaxException e) {
-            String newCfg = "file://"+uriStr;
-            try
-            {
+            String newCfg = "file://" + uriStr;
+            try {
                 uri = new URI(newCfg);
-            }
-            catch ( URISyntaxException e1 )
-            {
+            } catch (URISyntaxException e1) {
                 log.error("Could not create URI from {} -> ", uriStr, newCfg);
-                throw new RepositoryException( "The config entry "+uriStr+" 
cannot be converted to URI." );
+                throw new RepositoryException("The config entry " + uriStr + " 
cannot be converted to URI.");
             }
         }
         log.debug("Setting location uri: {}", uri);
@@ -126,56 +121,48 @@ public class MavenRepositoryProvider implements 
RepositoryProvider
     }
 
     @Override
-    public ManagedRepository createManagedInstance( 
ManagedRepositoryConfiguration cfg ) throws RepositoryException
-    {
-        MavenManagedRepository repo = new MavenManagedRepository(cfg.getId() 
,cfg.getName());
-        updateManagedInstance( repo, cfg );
+    public ManagedRepository 
createManagedInstance(ManagedRepositoryConfiguration cfg) throws 
RepositoryException {
+        MavenManagedRepository repo = new MavenManagedRepository(cfg.getId(), 
cfg.getName(), archivaConfiguration.getRepositoryBaseDir());
+        updateManagedInstance(repo, cfg);
         return repo;
     }
 
     @Override
-    public void updateManagedInstance( EditableManagedRepository repo , 
ManagedRepositoryConfiguration cfg ) throws RepositoryException
-    {
-        try
-        {
-            repo.setLocation( getURIFromString( cfg.getLocation() ) );
-        }
-        catch ( UnsupportedURIException e )
-        {
-            throw new RepositoryException( "The location entry is not a valid 
uri: "+cfg.getLocation() );
+    public void updateManagedInstance(EditableManagedRepository repo, 
ManagedRepositoryConfiguration cfg) throws RepositoryException {
+        try {
+            repo.setLocation(getURIFromString(cfg.getLocation()));
+        } catch (UnsupportedURIException e) {
+            throw new RepositoryException("The location entry is not a valid 
uri: " + cfg.getLocation());
         }
-        setBaseConfig( repo, cfg );
-        Path repoDir = PathUtil.getPathFromUri(repo.getAbsoluteLocation());
+        setBaseConfig(repo, cfg);
+        Path repoDir = repo.getLocalPath();
         if (!Files.exists(repoDir)) {
             log.debug("Creating repo directory {}", repoDir);
-            try
-            {
-                Files.createDirectories( repoDir );
-            }
-            catch ( IOException e )
-            {
-                log.error("Could not create directory {} for repository {}", 
repo.getAbsoluteLocation(), repo.getId(), e);
-                throw new RepositoryException( "Could not create directory for 
repository "+repo.getAbsoluteLocation() );
+            try {
+                Files.createDirectories(repoDir);
+            } catch (IOException e) {
+                log.error("Could not create directory {} for repository {}", 
repo.getLocalPath(), repo.getId(), e);
+                throw new RepositoryException("Could not create directory for 
repository " + repo.getLocalPath());
             }
         }
         repo.setSchedulingDefinition(cfg.getRefreshCronExpression());
-        repo.setBlocksRedeployment( cfg.isBlockRedeployments() );
-        repo.setScanned( cfg.isScanned() );
+        repo.setBlocksRedeployment(cfg.isBlockRedeployments());
+        repo.setScanned(cfg.isScanned());
         if (cfg.isReleases()) {
-            repo.addActiveReleaseScheme( ReleaseScheme.RELEASE);
+            repo.addActiveReleaseScheme(ReleaseScheme.RELEASE);
         }
         if (cfg.isSnapshots()) {
             repo.addActiveReleaseScheme(ReleaseScheme.SNAPSHOT);
         }
 
-        StagingRepositoryFeature stagingRepositoryFeature = repo.getFeature( 
StagingRepositoryFeature.class ).get();
-        stagingRepositoryFeature.setStageRepoNeeded( cfg.isStageRepoNeeded() );
+        StagingRepositoryFeature stagingRepositoryFeature = 
repo.getFeature(StagingRepositoryFeature.class).get();
+        stagingRepositoryFeature.setStageRepoNeeded(cfg.isStageRepoNeeded());
 
-        IndexCreationFeature indexCreationFeature = repo.getFeature( 
IndexCreationFeature.class ).get( );
-        indexCreationFeature.setSkipPackedIndexCreation( 
cfg.isSkipPackedIndexCreation() );
-        indexCreationFeature.setIndexPath( getURIFromString( cfg.getIndexDir() 
) );
+        IndexCreationFeature indexCreationFeature = 
repo.getFeature(IndexCreationFeature.class).get();
+        
indexCreationFeature.setSkipPackedIndexCreation(cfg.isSkipPackedIndexCreation());
+        indexCreationFeature.setIndexPath(getURIFromString(cfg.getIndexDir()));
         Path indexPath;
-        if (indexCreationFeature.getIndexPath().getScheme()==null) {
+        if (indexCreationFeature.getIndexPath().getScheme() == null) {
             indexPath = 
Paths.get(indexCreationFeature.getIndexPath().getPath());
         } else {
             indexPath = Paths.get(indexCreationFeature.getIndexPath());
@@ -184,44 +171,39 @@ public class MavenRepositoryProvider implements 
RepositoryProvider
         if (indexPath.isAbsolute()) {
             absoluteIndexPath = indexPath;
         } else {
-            absoluteIndexPath = PathUtil.getPathFromUri( 
repo.getLocation()).resolve(indexCreationFeature.getIndexPath().getPath());
+            absoluteIndexPath = 
PathUtil.getPathFromUri(repo.getLocation()).resolve(indexCreationFeature.getIndexPath().getPath());
         }
-        try
-        {
-            Files.createDirectories( absoluteIndexPath );
-        }
-        catch ( IOException e )
-        {
+        try {
+            Files.createDirectories(absoluteIndexPath);
+        } catch (IOException e) {
             log.error("Could not create index directory {}", 
absoluteIndexPath);
-            throw new RepositoryException( "Could not create index directory 
"+absoluteIndexPath );
+            throw new RepositoryException("Could not create index directory " 
+ absoluteIndexPath);
         }
 
-        ArtifactCleanupFeature artifactCleanupFeature = repo.getFeature( 
ArtifactCleanupFeature.class ).get();
+        ArtifactCleanupFeature artifactCleanupFeature = 
repo.getFeature(ArtifactCleanupFeature.class).get();
 
-        artifactCleanupFeature.setDeleteReleasedSnapshots( 
cfg.isDeleteReleasedSnapshots() );
-        artifactCleanupFeature.setRetentionCount( cfg.getRetentionCount() );
-        artifactCleanupFeature.setRetentionPeriod( Period.ofDays( 
cfg.getRetentionPeriod() ) );
+        
artifactCleanupFeature.setDeleteReleasedSnapshots(cfg.isDeleteReleasedSnapshots());
+        artifactCleanupFeature.setRetentionCount(cfg.getRetentionCount());
+        
artifactCleanupFeature.setRetentionPeriod(Period.ofDays(cfg.getRetentionPeriod()));
     }
 
 
     @Override
-    public ManagedRepository createStagingInstance( 
ManagedRepositoryConfiguration baseConfiguration ) throws RepositoryException
-    {
+    public ManagedRepository 
createStagingInstance(ManagedRepositoryConfiguration baseConfiguration) throws 
RepositoryException {
         log.debug("Creating staging instance for {}", 
baseConfiguration.getId());
-        return createManagedInstance( getStageRepoConfig( baseConfiguration ) 
);
+        return createManagedInstance(getStageRepoConfig(baseConfiguration));
     }
 
 
     @Override
-    public RemoteRepository createRemoteInstance( 
RemoteRepositoryConfiguration cfg ) throws RepositoryException
-    {
-        MavenRemoteRepository repo = new MavenRemoteRepository( cfg.getId( ), 
cfg.getName( ) );
-        updateRemoteInstance( repo, cfg );
+    public RemoteRepository createRemoteInstance(RemoteRepositoryConfiguration 
cfg) throws RepositoryException {
+        MavenRemoteRepository repo = new MavenRemoteRepository(cfg.getId(), 
cfg.getName(), archivaConfiguration.getRemoteRepositoryBaseDir());
+        updateRemoteInstance(repo, cfg);
         return repo;
     }
 
     private String convertUriToPath(URI uri) {
-        if (uri.getScheme()==null) {
+        if (uri.getScheme() == null) {
             return uri.getPath();
         } else if ("file".equals(uri.getScheme())) {
             return Paths.get(uri).toString();
@@ -231,96 +213,83 @@ public class MavenRepositoryProvider implements 
RepositoryProvider
     }
 
     @Override
-    public void updateRemoteInstance( EditableRemoteRepository repo, 
RemoteRepositoryConfiguration cfg ) throws RepositoryException
-    {
-        setBaseConfig( repo, cfg );
-        repo.setCheckPath( cfg.getCheckPath() );
-        repo.setSchedulingDefinition( cfg.getRefreshCronExpression() );
-        try
-        {
+    public void updateRemoteInstance(EditableRemoteRepository repo, 
RemoteRepositoryConfiguration cfg) throws RepositoryException {
+        setBaseConfig(repo, cfg);
+        repo.setCheckPath(cfg.getCheckPath());
+        repo.setSchedulingDefinition(cfg.getRefreshCronExpression());
+        try {
             repo.setLocation(new URI(cfg.getUrl()));
+        } catch (UnsupportedURIException | URISyntaxException e) {
+            log.error("Could not set remote url " + cfg.getUrl());
+            throw new RepositoryException("The url config is not a valid uri: 
" + cfg.getUrl());
         }
-        catch ( UnsupportedURIException | URISyntaxException e )
-        {
-            log.error("Could not set remote url "+cfg.getUrl());
-            throw new RepositoryException( "The url config is not a valid uri: 
"+cfg.getUrl() );
-        }
-        repo.setTimeout( Duration.ofSeconds( cfg.getTimeout() ) );
-        RemoteIndexFeature remoteIndexFeature = repo.getFeature( 
RemoteIndexFeature.class ).get();
-        remoteIndexFeature.setDownloadRemoteIndex( cfg.isDownloadRemoteIndex() 
);
-        remoteIndexFeature.setDownloadRemoteIndexOnStartup( 
cfg.isDownloadRemoteIndexOnStartup() );
-        remoteIndexFeature.setDownloadTimeout( Duration.ofSeconds( 
cfg.getRemoteDownloadTimeout()) );
-        remoteIndexFeature.setProxyId( cfg.getRemoteDownloadNetworkProxyId() );
-        if (cfg.isDownloadRemoteIndex())
-        {
-            try
-            {
-                remoteIndexFeature.setIndexUri( new URI( 
cfg.getRemoteIndexUrl( ) ) );
-            }
-            catch ( URISyntaxException e )
-            {
-                log.error( "Could not set remote index url " + 
cfg.getRemoteIndexUrl( ) );
-                remoteIndexFeature.setDownloadRemoteIndex( false );
-                remoteIndexFeature.setDownloadRemoteIndexOnStartup( false );
+        repo.setTimeout(Duration.ofSeconds(cfg.getTimeout()));
+        RemoteIndexFeature remoteIndexFeature = 
repo.getFeature(RemoteIndexFeature.class).get();
+        remoteIndexFeature.setDownloadRemoteIndex(cfg.isDownloadRemoteIndex());
+        
remoteIndexFeature.setDownloadRemoteIndexOnStartup(cfg.isDownloadRemoteIndexOnStartup());
+        
remoteIndexFeature.setDownloadTimeout(Duration.ofSeconds(cfg.getRemoteDownloadTimeout()));
+        remoteIndexFeature.setProxyId(cfg.getRemoteDownloadNetworkProxyId());
+        if (cfg.isDownloadRemoteIndex()) {
+            try {
+                remoteIndexFeature.setIndexUri(new 
URI(cfg.getRemoteIndexUrl()));
+            } catch (URISyntaxException e) {
+                log.error("Could not set remote index url " + 
cfg.getRemoteIndexUrl());
+                remoteIndexFeature.setDownloadRemoteIndex(false);
+                remoteIndexFeature.setDownloadRemoteIndexOnStartup(false);
             }
         }
-        repo.setExtraHeaders( cfg.getExtraHeaders() );
-        repo.setExtraParameters( cfg.getExtraParameters() );
+        repo.setExtraHeaders(cfg.getExtraHeaders());
+        repo.setExtraParameters(cfg.getExtraParameters());
         PasswordCredentials credentials = new PasswordCredentials("", new 
char[0]);
-        if (cfg.getPassword()!=null && cfg.getUsername()!=null)
-        {
-            credentials.setPassword( cfg.getPassword( ).toCharArray( ) );
-            credentials.setUsername( cfg.getUsername() );
-            repo.setCredentials( credentials );
+        if (cfg.getPassword() != null && cfg.getUsername() != null) {
+            credentials.setPassword(cfg.getPassword().toCharArray());
+            credentials.setUsername(cfg.getUsername());
+            repo.setCredentials(credentials);
         } else {
-            credentials.setPassword( new char[0] );
+            credentials.setPassword(new char[0]);
         }
-        if (cfg.getIndexDir()!=null) {
-            IndexCreationFeature indexCreationFeature = repo.getFeature( 
IndexCreationFeature.class ).get();
-            indexCreationFeature.setIndexPath( getURIFromString( 
cfg.getIndexDir() ) );
+        if (cfg.getIndexDir() != null) {
+            IndexCreationFeature indexCreationFeature = 
repo.getFeature(IndexCreationFeature.class).get();
+            
indexCreationFeature.setIndexPath(getURIFromString(cfg.getIndexDir()));
         }
     }
 
     @Override
-    public RemoteRepositoryConfiguration getRemoteConfiguration( 
RemoteRepository remoteRepository ) throws RepositoryException
-    {
+    public RemoteRepositoryConfiguration 
getRemoteConfiguration(RemoteRepository remoteRepository) throws 
RepositoryException {
         if (!(remoteRepository instanceof MavenRemoteRepository)) {
-            log.error("Wrong remote repository type 
"+remoteRepository.getClass().getName());
-            throw new RepositoryException( "The given repository type cannot 
be handled by the maven provider: "+remoteRepository.getClass().getName() );
+            log.error("Wrong remote repository type " + 
remoteRepository.getClass().getName());
+            throw new RepositoryException("The given repository type cannot be 
handled by the maven provider: " + remoteRepository.getClass().getName());
         }
         RemoteRepositoryConfiguration cfg = new 
RemoteRepositoryConfiguration();
-        cfg.setType( remoteRepository.getType().toString() );
-        cfg.setId( remoteRepository.getId() );
-        cfg.setName( remoteRepository.getName() );
-        cfg.setDescription( remoteRepository.getDescription() );
+        cfg.setType(remoteRepository.getType().toString());
+        cfg.setId(remoteRepository.getId());
+        cfg.setName(remoteRepository.getName());
+        cfg.setDescription(remoteRepository.getDescription());
         cfg.setUrl(remoteRepository.getLocation().toString());
-        cfg.setTimeout( (int)remoteRepository.getTimeout().toMillis()/1000 );
-        cfg.setCheckPath( remoteRepository.getCheckPath() );
-        RepositoryCredentials creds = remoteRepository.getLoginCredentials( );
-        if (creds!=null)
-        {
+        cfg.setTimeout((int) remoteRepository.getTimeout().toMillis() / 1000);
+        cfg.setCheckPath(remoteRepository.getCheckPath());
+        RepositoryCredentials creds = remoteRepository.getLoginCredentials();
+        if (creds != null) {
             if (creds instanceof PasswordCredentials) {
                 PasswordCredentials pCreds = (PasswordCredentials) creds;
-                cfg.setPassword( new String(pCreds.getPassword()) );
-                cfg.setUsername( pCreds.getUsername() );
+                cfg.setPassword(new String(pCreds.getPassword()));
+                cfg.setUsername(pCreds.getUsername());
             }
         }
-        cfg.setLayout( remoteRepository.getLayout() );
-        cfg.setExtraParameters( remoteRepository.getExtraParameters() );
-        cfg.setExtraHeaders( remoteRepository.getExtraHeaders() );
-        cfg.setRefreshCronExpression( 
remoteRepository.getSchedulingDefinition() );
-
-        IndexCreationFeature indexCreationFeature = 
remoteRepository.getFeature( IndexCreationFeature.class ).get();
-        cfg.setIndexDir( convertUriToPath( 
indexCreationFeature.getIndexPath()));
-
-        RemoteIndexFeature remoteIndexFeature = remoteRepository.getFeature( 
RemoteIndexFeature.class ).get();
-        cfg.setRemoteIndexUrl( remoteIndexFeature.getIndexUri().toString() );
-        cfg.setRemoteDownloadTimeout( 
(int)remoteIndexFeature.getDownloadTimeout().get( ChronoUnit.SECONDS ) );
-        cfg.setDownloadRemoteIndexOnStartup( 
remoteIndexFeature.isDownloadRemoteIndexOnStartup() );
-        cfg.setDownloadRemoteIndex( remoteIndexFeature.isDownloadRemoteIndex() 
);
-        cfg.setRemoteDownloadNetworkProxyId( remoteIndexFeature.getProxyId() );
+        cfg.setLayout(remoteRepository.getLayout());
+        cfg.setExtraParameters(remoteRepository.getExtraParameters());
+        cfg.setExtraHeaders(remoteRepository.getExtraHeaders());
+        
cfg.setRefreshCronExpression(remoteRepository.getSchedulingDefinition());
 
+        IndexCreationFeature indexCreationFeature = 
remoteRepository.getFeature(IndexCreationFeature.class).get();
+        cfg.setIndexDir(convertUriToPath(indexCreationFeature.getIndexPath()));
 
+        RemoteIndexFeature remoteIndexFeature = 
remoteRepository.getFeature(RemoteIndexFeature.class).get();
+        cfg.setRemoteIndexUrl(remoteIndexFeature.getIndexUri().toString());
+        cfg.setRemoteDownloadTimeout((int) 
remoteIndexFeature.getDownloadTimeout().get(ChronoUnit.SECONDS));
+        
cfg.setDownloadRemoteIndexOnStartup(remoteIndexFeature.isDownloadRemoteIndexOnStartup());
+        cfg.setDownloadRemoteIndex(remoteIndexFeature.isDownloadRemoteIndex());
+        cfg.setRemoteDownloadNetworkProxyId(remoteIndexFeature.getProxyId());
 
 
         return cfg;
@@ -328,125 +297,104 @@ public class MavenRepositoryProvider implements 
RepositoryProvider
     }
 
     @Override
-    public ManagedRepositoryConfiguration getManagedConfiguration( 
ManagedRepository managedRepository ) throws RepositoryException
-    {
+    public ManagedRepositoryConfiguration 
getManagedConfiguration(ManagedRepository managedRepository) throws 
RepositoryException {
         if (!(managedRepository instanceof MavenManagedRepository)) {
-            log.error("Wrong remote repository type 
"+managedRepository.getClass().getName());
-            throw new RepositoryException( "The given repository type cannot 
be handled by the maven provider: "+managedRepository.getClass().getName() );
+            log.error("Wrong remote repository type " + 
managedRepository.getClass().getName());
+            throw new RepositoryException("The given repository type cannot be 
handled by the maven provider: " + managedRepository.getClass().getName());
         }
         ManagedRepositoryConfiguration cfg = new 
ManagedRepositoryConfiguration();
-        cfg.setType( managedRepository.getType().toString() );
-        cfg.setId( managedRepository.getId() );
-        cfg.setName( managedRepository.getName() );
-        cfg.setDescription( managedRepository.getDescription() );
-        cfg.setLocation( convertUriToPath( managedRepository.getLocation() ) );
-        cfg.setLayout( managedRepository.getLayout() );
-        cfg.setRefreshCronExpression( 
managedRepository.getSchedulingDefinition() );
-        cfg.setScanned( managedRepository.isScanned() );
-        cfg.setBlockRedeployments( managedRepository.blocksRedeployments() );
-        StagingRepositoryFeature stagingRepositoryFeature = 
managedRepository.getFeature( StagingRepositoryFeature.class ).get();
+        cfg.setType(managedRepository.getType().toString());
+        cfg.setId(managedRepository.getId());
+        cfg.setName(managedRepository.getName());
+        cfg.setDescription(managedRepository.getDescription());
+        cfg.setLocation(convertUriToPath(managedRepository.getLocation()));
+        cfg.setLayout(managedRepository.getLayout());
+        
cfg.setRefreshCronExpression(managedRepository.getSchedulingDefinition());
+        cfg.setScanned(managedRepository.isScanned());
+        cfg.setBlockRedeployments(managedRepository.blocksRedeployments());
+        StagingRepositoryFeature stagingRepositoryFeature = 
managedRepository.getFeature(StagingRepositoryFeature.class).get();
         cfg.setStageRepoNeeded(stagingRepositoryFeature.isStageRepoNeeded());
-        IndexCreationFeature indexCreationFeature = 
managedRepository.getFeature( IndexCreationFeature.class ).get();
-        cfg.setIndexDir(convertUriToPath( indexCreationFeature.getIndexPath() 
));
-        cfg.setSkipPackedIndexCreation( 
indexCreationFeature.isSkipPackedIndexCreation() );
+        IndexCreationFeature indexCreationFeature = 
managedRepository.getFeature(IndexCreationFeature.class).get();
+        cfg.setIndexDir(convertUriToPath(indexCreationFeature.getIndexPath()));
+        
cfg.setSkipPackedIndexCreation(indexCreationFeature.isSkipPackedIndexCreation());
 
-        ArtifactCleanupFeature artifactCleanupFeature = 
managedRepository.getFeature( ArtifactCleanupFeature.class ).get();
-        cfg.setRetentionCount( artifactCleanupFeature.getRetentionCount());
-        cfg.setRetentionPeriod( 
artifactCleanupFeature.getRetentionPeriod().getDays() );
+        ArtifactCleanupFeature artifactCleanupFeature = 
managedRepository.getFeature(ArtifactCleanupFeature.class).get();
+        cfg.setRetentionCount(artifactCleanupFeature.getRetentionCount());
+        
cfg.setRetentionPeriod(artifactCleanupFeature.getRetentionPeriod().getDays());
         
cfg.setDeleteReleasedSnapshots(artifactCleanupFeature.isDeleteReleasedSnapshots());
 
-        if (managedRepository.getActiveReleaseSchemes().contains( 
ReleaseScheme.RELEASE )) {
-            cfg.setReleases( true );
+        if 
(managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.RELEASE)) {
+            cfg.setReleases(true);
         } else {
-            cfg.setReleases( false );
+            cfg.setReleases(false);
         }
-        if (managedRepository.getActiveReleaseSchemes().contains( 
ReleaseScheme.SNAPSHOT )) {
-            cfg.setSnapshots( true );
+        if 
(managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.SNAPSHOT)) {
+            cfg.setSnapshots(true);
         } else {
-            cfg.setSnapshots( false );
+            cfg.setSnapshots(false);
         }
         return cfg;
 
     }
 
-    private ManagedRepositoryConfiguration getStageRepoConfig( 
ManagedRepositoryConfiguration repository )
-    {
+    private ManagedRepositoryConfiguration 
getStageRepoConfig(ManagedRepositoryConfiguration repository) {
         ManagedRepositoryConfiguration stagingRepository = new 
ManagedRepositoryConfiguration();
-        stagingRepository.setId( repository.getId() + 
StagingRepositoryFeature.STAGING_REPO_POSTFIX );
-        stagingRepository.setLayout( repository.getLayout() );
-        stagingRepository.setName( repository.getName() + 
StagingRepositoryFeature.STAGING_REPO_POSTFIX );
-        stagingRepository.setBlockRedeployments( 
repository.isBlockRedeployments() );
-        stagingRepository.setRetentionPeriod( repository.getRetentionPeriod() 
);
-        stagingRepository.setDeleteReleasedSnapshots( 
repository.isDeleteReleasedSnapshots() );
-        stagingRepository.setStageRepoNeeded( false );
+        stagingRepository.setId(repository.getId() + 
StagingRepositoryFeature.STAGING_REPO_POSTFIX);
+        stagingRepository.setLayout(repository.getLayout());
+        stagingRepository.setName(repository.getName() + 
StagingRepositoryFeature.STAGING_REPO_POSTFIX);
+        
stagingRepository.setBlockRedeployments(repository.isBlockRedeployments());
+        stagingRepository.setRetentionPeriod(repository.getRetentionPeriod());
+        
stagingRepository.setDeleteReleasedSnapshots(repository.isDeleteReleasedSnapshots());
+        stagingRepository.setStageRepoNeeded(false);
 
         String path = repository.getLocation();
-        int lastIndex = path.replace( '\\', '/' ).lastIndexOf( '/' );
-        stagingRepository.setLocation( path.substring( 0, lastIndex ) + "/" + 
stagingRepository.getId() );
+        int lastIndex = path.replace('\\', '/').lastIndexOf('/');
+        stagingRepository.setLocation(path.substring(0, lastIndex) + "/" + 
stagingRepository.getId());
 
-        if ( StringUtils.isNotBlank( repository.getIndexDir() ) )
-        {
+        if (StringUtils.isNotBlank(repository.getIndexDir())) {
             Path indexDir = null;
-            try
-            {
-                indexDir = Paths.get( new 
URI(repository.getIndexDir().startsWith( "file://" ) ? repository.getIndexDir() 
: "file://"+repository.getIndexDir()) );
-                if ( indexDir.isAbsolute() )
-                {
-                    Path newDir = Paths.get(new 
URI(stagingRepository.getLocation().startsWith( "file://" ) ? 
stagingRepository.getLocation() : 
"file://"+stagingRepository.getLocation())).resolve(".index");
+            try {
+                indexDir = Paths.get(new 
URI(repository.getIndexDir().startsWith("file://") ? repository.getIndexDir() : 
"file://" + repository.getIndexDir()));
+                if (indexDir.isAbsolute()) {
+                    Path newDir = Paths.get(new 
URI(stagingRepository.getLocation().startsWith("file://") ? 
stagingRepository.getLocation() : "file://" + 
stagingRepository.getLocation())).resolve(".index");
                     log.debug("Changing index directory {} -> {}", indexDir, 
newDir);
-                    stagingRepository.setIndexDir( newDir.toString() );
-                }
-                else
-                {
+                    stagingRepository.setIndexDir(newDir.toString());
+                } else {
                     log.debug("Keeping index directory {}", 
repository.getIndexDir());
-                    stagingRepository.setIndexDir( repository.getIndexDir() );
+                    stagingRepository.setIndexDir(repository.getIndexDir());
                 }
-            }
-            catch ( URISyntaxException e )
-            {
+            } catch (URISyntaxException e) {
                 log.error("Could not parse index path as uri {}", 
repository.getIndexDir());
-                stagingRepository.setIndexDir( "" );
+                stagingRepository.setIndexDir("");
             }
             // in case of absolute dir do not use the same
         }
-        stagingRepository.setRefreshCronExpression( 
repository.getRefreshCronExpression() );
-        stagingRepository.setReleases( repository.isReleases() );
-        stagingRepository.setRetentionCount( repository.getRetentionCount() );
-        stagingRepository.setScanned( repository.isScanned() );
-        stagingRepository.setSnapshots( repository.isSnapshots() );
-        stagingRepository.setSkipPackedIndexCreation( 
repository.isSkipPackedIndexCreation() );
+        
stagingRepository.setRefreshCronExpression(repository.getRefreshCronExpression());
+        stagingRepository.setReleases(repository.isReleases());
+        stagingRepository.setRetentionCount(repository.getRetentionCount());
+        stagingRepository.setScanned(repository.isScanned());
+        stagingRepository.setSnapshots(repository.isSnapshots());
+        
stagingRepository.setSkipPackedIndexCreation(repository.isSkipPackedIndexCreation());
         // do not duplicate description
         //stagingRepository.getDescription("")
         return stagingRepository;
     }
 
-    private void setBaseConfig( EditableRepository repo, 
AbstractRepositoryConfiguration cfg) throws RepositoryException {
-        String baseUriStr = 
archivaConfiguration.getConfiguration().getArchivaRuntimeConfiguration().getRepositoryBaseDirectory();
-        if (baseUriStr==null) {
-            baseUriStr = Paths.get(System.getProperty( "appserver.base" 
)).resolve("repositories").normalize().toString();
-        }
-        try
-        {
-            URI baseUri = new URI(baseUriStr);
-            repo.setBaseUri( baseUri );
-        }
-        catch ( URISyntaxException e )
-        {
-            log.error("Could not set base URI {}: {}", baseUriStr, 
e.getMessage(), e);
-            throw new RepositoryException( "Could not set base URI "+ 
baseUriStr);
-        }
-        repo.setName( repo.getPrimaryLocale(), cfg.getName() );
-        repo.setDescription( repo.getPrimaryLocale(), cfg.getDescription() );
-        repo.setLayout( cfg.getLayout() );
+    private void setBaseConfig(EditableRepository repo, 
AbstractRepositoryConfiguration cfg) throws RepositoryException {
+
+        URI baseUri = archivaConfiguration.getRepositoryBaseDir().toUri();
+        repo.setBaseUri(baseUri);
+
+        repo.setName(repo.getPrimaryLocale(), cfg.getName());
+        repo.setDescription(repo.getPrimaryLocale(), cfg.getDescription());
+        repo.setLayout(cfg.getLayout());
     }
 
-    public ArchivaConfiguration getArchivaConfiguration( )
-    {
+    public ArchivaConfiguration getArchivaConfiguration() {
         return archivaConfiguration;
     }
 
-    public void setArchivaConfiguration( ArchivaConfiguration 
archivaConfiguration )
-    {
+    public void setArchivaConfiguration(ArchivaConfiguration 
archivaConfiguration) {
         this.archivaConfiguration = archivaConfiguration;
     }
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
index 1283f62..4a55180 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
@@ -2,6 +2,7 @@ package org.apache.archiva.configuration;
 
 import org.apache.archiva.redback.components.registry.RegistryException;
 import org.apache.archiva.redback.components.registry.RegistryListener;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 
 import java.nio.file.Path;
@@ -103,4 +104,23 @@ public class TestConfiguration
             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/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java
 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java
index a8d7837..474d3df 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java
@@ -25,6 +25,7 @@ import org.apache.archiva.configuration.ConfigurationListener;
 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.IMocksControl;
 import org.springframework.stereotype.Service;
 
@@ -146,4 +147,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/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java
 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java
index 98091f3..56af25f 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java
@@ -34,6 +34,7 @@ import javax.inject.Inject;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Locale;
 
 /**
@@ -53,14 +54,14 @@ public abstract class AbstractRepositoryLayerTestCase
 
     protected MavenManagedRepository createRepository( String id, String name, 
Path location )
     {
-        MavenManagedRepository repo = new MavenManagedRepository( id, name);
+        MavenManagedRepository repo = new MavenManagedRepository( id, name, 
location.getParent().toAbsolutePath());
         repo.setLocation( location.toAbsolutePath().toUri() );
         return repo;
     }
 
     protected MavenRemoteRepository createRemoteRepository( String id, String 
name, String url ) throws URISyntaxException
     {
-        MavenRemoteRepository repo = new MavenRemoteRepository(id, name);
+        MavenRemoteRepository repo = new MavenRemoteRepository(id, name, 
Paths.get("target/remotes"));
         repo.setLocation( new URI( url ) );
         return repo;
     }
@@ -69,7 +70,7 @@ public abstract class AbstractRepositoryLayerTestCase
                                                                        String 
layout )
         throws Exception
     {
-        MavenManagedRepository repo = new MavenManagedRepository( id, name );
+        MavenManagedRepository repo = new MavenManagedRepository( id, name, 
location.getParent() );
         repo.setLocation( location.toAbsolutePath().toUri() );
         repo.setLayout( layout );
 
@@ -83,7 +84,7 @@ public abstract class AbstractRepositoryLayerTestCase
     protected RemoteRepositoryContent createRemoteRepositoryContent( String 
id, String name, String url, String layout )
         throws Exception
     {
-        MavenRemoteRepository repo = new MavenRemoteRepository(id, name);
+        MavenRemoteRepository repo = new MavenRemoteRepository(id, name, 
Paths.get("target/remotes"));
         repo.setLocation( new URI( url ) );
         repo.setLayout( layout );
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java
 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java
index f918c18..faf2ba2 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java
@@ -515,7 +515,7 @@ public class RepositoryRequestTest
                                                                        String 
layout )
         throws Exception
     {
-        MavenManagedRepository repo = new MavenManagedRepository( id, name);
+        MavenManagedRepository repo = new MavenManagedRepository( id, name, 
archivaConfiguration.getRepositoryBaseDir());
         repo.setLocation( location.toAbsolutePath().toUri() );
         repo.setLayout( layout );
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java
 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java
index 54810ce..8731c7c 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java
@@ -41,6 +41,7 @@ import org.junit.Test;
 import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.time.Duration;
 import java.time.Period;
 import java.time.temporal.ChronoUnit;
@@ -213,7 +214,7 @@ public class MavenRepositoryProviderTest
 
     @Test
     public void getManagedConfiguration() throws Exception {
-        MavenManagedRepository repo = new MavenManagedRepository( "test01", 
"My Test repo" );
+        MavenManagedRepository repo = new MavenManagedRepository( "test01", 
"My Test repo", Paths.get("target/repositories") );
 
         repo.setLocation( new URI("file:///this.is/a/test") );
         repo.setScanned( true );
@@ -258,7 +259,7 @@ public class MavenRepositoryProviderTest
 
     @Test
     public void getRemoteConfiguration() throws Exception {
-        MavenRemoteRepository repo = new MavenRemoteRepository( "test01", "My 
Test repo" );
+        MavenRemoteRepository repo = new MavenRemoteRepository( "test01", "My 
Test repo", Paths.get("target/remotes") );
 
         repo.setLocation( new URI("https://this.is/a/test";) );
         repo.setScanned( true );

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java
 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java
index 92ea54e..ceb25db 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java
@@ -30,6 +30,7 @@ import org.springframework.test.context.ContextConfiguration;
 
 import javax.inject.Inject;
 import javax.inject.Named;
+import java.nio.file.Paths;
 import java.util.Locale;
 
 /**
@@ -48,17 +49,17 @@ public class Maven2RepositoryStorageTest
     {
         String href = "/repository/internal/org/apache/maven/someartifact.jar";
         Assert.assertEquals( "/org/apache/maven/someartifact.jar",
-                             repositoryStorage.getFilePath( href, new 
MavenManagedRepository( "repo01", "repo01") ) );
+                             repositoryStorage.getFilePath( href, new 
MavenManagedRepository( "repo01", "repo01", Paths.get("target/repositories")) ) 
);
 
         href = "repository/internal/org/apache/maven/someartifact.jar";
         Assert.assertEquals( "/org/apache/maven/someartifact.jar",
-                             repositoryStorage.getFilePath( href, new 
MavenManagedRepository( "repo01", "repo01" ) ) );
+                             repositoryStorage.getFilePath( href, new 
MavenManagedRepository( "repo01", "repo01", Paths.get("target/repositories") ) 
) );
 
         href = "repository/internal/org/apache/maven/";
-        Assert.assertEquals( "/org/apache/maven/", 
repositoryStorage.getFilePath( href, new MavenManagedRepository("repo01", 
"repo01") ) );
+        Assert.assertEquals( "/org/apache/maven/", 
repositoryStorage.getFilePath( href, new MavenManagedRepository("repo01", 
"repo01", Paths.get("target/repositories")) ) );
 
         href = "mypath";
-        Assert.assertEquals( "/", repositoryStorage.getFilePath( href, new 
MavenManagedRepository("repo01", "repo01") ) );
+        Assert.assertEquals( "/", repositoryStorage.getFilePath( href, new 
MavenManagedRepository("repo01", "repo01", Paths.get("target/repositories")) ) 
);
     }
 
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java
 
b/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java
index 49cc241..40f1f83 100644
--- 
a/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java
+++ 
b/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java
@@ -97,7 +97,7 @@ public class DuplicateArtifactsConsumerTest
 
         assertNotNull( consumer );
 
-        config = new BasicManagedRepository(TEST_REPO, TEST_REPO);
+        config = new BasicManagedRepository(TEST_REPO, TEST_REPO, 
Paths.get("target"));
         config.setLocation( Paths.get( "target/test-repository" 
).toAbsolutePath().toUri() );
 
         metadataRepository = mock( MetadataRepository.class );

http://git-wip-us.apache.org/repos/asf/archiva/blob/754b2d59/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/configuration/StubConfiguration.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/configuration/StubConfiguration.java
 
b/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/configuration/StubConfiguration.java
index 0206edb..077edb9 100644
--- 
a/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/configuration/StubConfiguration.java
+++ 
b/archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/configuration/StubConfiguration.java
@@ -21,6 +21,7 @@ package org.apache.archiva.configuration;
 
 import org.apache.archiva.redback.components.registry.RegistryException;
 import org.apache.archiva.redback.components.registry.RegistryListener;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 
 import java.nio.file.Path;
@@ -103,4 +104,29 @@ public class StubConfiguration
             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()))
 {
+            Path dataDir = 
Paths.get(configuration.getArchivaRuntimeConfiguration().getDataDirectory());
+            if (dataDir.isAbsolute()) {
+                return dataDir;
+            } else {
+                return getAppServerBaseDir().resolve(dataDir);
+            }
+        } else {
+            return getAppServerBaseDir().resolve("data");
+        }
+
+    }
 }

Reply via email to