You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2017/11/01 14:41:05 UTC

[19/21] archiva git commit: Adapting the web modules to the new repository api

Adapting the web modules to the new repository api


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

Branch: refs/heads/master
Commit: d6120d6c22acd9996531716ae77806795277c9c7
Parents: 32ff2ca
Author: Martin Stockhammer <ma...@apache.org>
Authored: Wed Nov 1 15:39:07 2017 +0100
Committer: Martin Stockhammer <ma...@apache.org>
Committed: Wed Nov 1 15:39:07 2017 +0100

----------------------------------------------------------------------
 .../api/model/RepositoryScannerStatistics.java  |   2 +
 .../archiva-rest/archiva-rest-services/pom.xml  |   1 -
 .../rest/services/AbstractRestService.java      |  14 +-
 .../rest/services/DefaultBrowseService.java     |  43 +++--
 .../services/DefaultRepositoriesService.java    |  48 +++--
 .../services/DefaultSystemStatusService.java    |  16 +-
 .../rest/services/AbstractArchivaRestTest.java  |   5 +-
 .../services/RemoteRepositoriesServiceTest.java |   7 +-
 .../rest/services/RepositoriesServiceTest.java  |   3 +-
 .../resources/META-INF/spring-context-test.xml  |   5 +-
 .../archiva/security/AbstractSecurityTest.java  |   5 +
 .../archiva/security/mock/MockBeanServices.java |   2 +-
 .../src/test/resources/spring-context.xml       |   3 +
 .../MockInvalidRepositoryContentConsumer.java   |   2 +-
 .../org/apache/archiva/i18n/default.properties  |   6 +-
 .../DownloadArtifactFromQueryTest.java          |   3 +-
 .../DownloadMergedIndexNonDefaultPathTest.java  |   7 +-
 .../remotedownload/DownloadMergedIndexTest.java |   7 +-
 .../remotedownload/DownloadSnapshotTest.java    |   3 +-
 .../RemoteRepositoryConnectivityCheckTest.java  |   3 +-
 .../spring-context-artifacts-download.xml       |   5 +
 .../spring-context-merge-index-download.xml     |   4 +
 .../resources/spring-context-rss-servlet.xml    |   6 +-
 .../resources/spring-context-test-common.xml    |   4 +-
 .../test/resources/spring-context-with-jcr.xml  |   4 +
 .../admin/repository/maven2/repositories.js     |  10 +-
 .../js/templates/archiva/repositories.html      |  14 +-
 .../archiva/webdav/ArchivaDavResource.java      |  30 ++-
 .../webdav/ArchivaDavResourceFactory.java       | 187 +++++++++----------
 .../archiva/webdav/RepositoryServlet.java       |   2 +-
 .../AbstractRepositoryServletTestCase.java      |   7 +
 .../webdav/ArchivaDavResourceFactoryTest.java   |  37 +++-
 .../apache/archiva/webdav/DavResourceTest.java  |  19 +-
 .../RepositoryServletRepositoryGroupTest.java   |   1 +
 .../webdav/RepositoryServletSecurityTest.java   |   5 +
 .../src/test/resources/repository-archiva.xml   |   2 +-
 .../spring-context-servlet-security-test.xml    |   5 +-
 .../src/test/resources/spring-context.xml       |   5 +-
 38 files changed, 328 insertions(+), 204 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/RepositoryScannerStatistics.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/RepositoryScannerStatistics.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/RepositoryScannerStatistics.java
index b6143ac..5115f1a 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/RepositoryScannerStatistics.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/RepositoryScannerStatistics.java
@@ -18,6 +18,8 @@ package org.apache.archiva.rest.api.model;
  * under the License.
  */
 
+
+
 import org.apache.archiva.admin.model.beans.ManagedRepository;
 
 import javax.xml.bind.annotation.XmlRootElement;

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
index fd293fa..c3c8a2f 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
@@ -55,7 +55,6 @@
     <dependency>
       <groupId>org.apache.archiva</groupId>
       <artifactId>archiva-configuration</artifactId>
-      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.archiva</groupId>

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java
index 3089024..4dacc86 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java
@@ -37,8 +37,11 @@ import org.apache.archiva.redback.configuration.UserConfigurationKeys;
 import org.apache.archiva.redback.rest.services.RedbackAuthenticationThreadLocal;
 import org.apache.archiva.redback.rest.services.RedbackRequestInformation;
 import org.apache.archiva.redback.users.User;
+import org.apache.archiva.repository.ManagedRepository;
+import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.RepositoryContentFactory;
 import org.apache.archiva.repository.RepositoryException;
+import org.apache.archiva.repository.RepositoryRegistry;
 import org.apache.archiva.repository.events.AuditListener;
 import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
 import org.apache.archiva.rest.services.utils.ArtifactBuilder;
@@ -99,6 +102,9 @@ public abstract class AbstractRestService
     protected ManagedRepositoryAdmin managedRepositoryAdmin;
 
     @Inject
+    protected RepositoryRegistry repositoryRegistry;
+
+    @Inject
     protected RepositoryContentFactory repositoryContentFactory;
 
     @Inject
@@ -322,10 +328,14 @@ public abstract class AbstractRestService
                     if ( repoId == null ) {
                         throw new IllegalStateException( "Repository Id is null" );
                     }
-
+                    ManagedRepository repo = repositoryRegistry.getManagedRepository( repoId );
+                    if (repo==null) {
+                        throw new RepositoryException( "Repository not found "+repoId );
+                    }
+                    ManagedRepositoryContent content = repo.getContent( );
                     ArtifactBuilder builder =
                         new ArtifactBuilder().forArtifactMetadata( artifact ).withManagedRepositoryContent(
-                            repositoryContentFactory.getManagedRepositoryContent( repoId ) );
+                            content );
                     Artifact art = builder.build();
                     art.setUrl( getArtifactUrl( art, repositoryId ) );
                     artifacts.add( art );

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
index aad3f28..2a87462 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
@@ -42,6 +42,7 @@ import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.RepositoryContentFactory;
 import org.apache.archiva.repository.RepositoryException;
 import org.apache.archiva.repository.RepositoryNotFoundException;
+import org.apache.archiva.repository.RepositoryRegistry;
 import org.apache.archiva.repository.metadata.MetadataTools;
 import org.apache.archiva.rest.api.model.*;
 import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
@@ -83,9 +84,6 @@ public class DefaultBrowseService
     private DependencyTreeBuilder dependencyTreeBuilder;
 
     @Inject
-    private RepositoryContentFactory repositoryContentFactory;
-
-    @Inject
     @Named( value = "repositoryProxyConnectors#default" )
     private RepositoryProxyConnectors connectors;
 
@@ -93,6 +91,15 @@ public class DefaultBrowseService
     @Named( value = "browse#versionMetadata" )
     private Cache<String, ProjectVersionMetadata> versionMetadataCache;
 
+    private ManagedRepositoryContent getManagedRepositoryContent(String id) throws RepositoryException
+    {
+        org.apache.archiva.repository.ManagedRepository repo = repositoryRegistry.getManagedRepository( id );
+        if (repo==null) {
+            throw new RepositoryException( "Could not find repository "+id );
+        }
+        return repo.getContent();
+    }
+
     @Override
     public BrowseResult getRootGroups( String repositoryId )
         throws ArchivaRestServiceException
@@ -687,7 +694,7 @@ public class DefaultBrowseService
             {
 
                 ManagedRepositoryContent managedRepositoryContent =
-                    repositoryContentFactory.getManagedRepositoryContent( repoId );
+                    getManagedRepositoryContent( repoId );
                 ArchivaArtifact archivaArtifact = new ArchivaArtifact( groupId, artifactId, version, classifier,
                                                                        StringUtils.isEmpty( type ) ? "jar" : type,
                                                                        repoId );
@@ -763,8 +770,16 @@ public class DefaultBrowseService
             for ( String repoId : selectedRepos )
             {
 
-                ManagedRepositoryContent managedRepositoryContent =
-                    repositoryContentFactory.getManagedRepositoryContent( repoId );
+                ManagedRepositoryContent managedRepositoryContent = null;
+                try
+                {
+                    managedRepositoryContent = getManagedRepositoryContent( repoId );
+                }
+                catch ( RepositoryException e )
+                {
+                    log.error("No repository content found for "+repoId);
+                    continue;
+                }
                 ArchivaArtifact archivaArtifact = new ArchivaArtifact( groupId, artifactId, version, classifier,
                                                                        StringUtils.isEmpty( type ) ? "jar" : type,
                                                                        repoId );
@@ -797,18 +812,6 @@ public class DefaultBrowseService
             throw new ArchivaRestServiceException( e.getMessage(),
                                                    Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), e );
         }
-        catch ( RepositoryNotFoundException e )
-        {
-            log.error( e.getMessage(), e );
-            throw new ArchivaRestServiceException( e.getMessage(),
-                                                   Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), e );
-        }
-        catch ( RepositoryException e )
-        {
-            log.error( e.getMessage(), e );
-            throw new ArchivaRestServiceException( e.getMessage(),
-                                                   Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), e );
-        }
         log.debug( "artifact: {}:{}:{}:{}:{} not found", groupId, artifactId, version, classifier, type );
         // 404 ?
         return new ArtifactContent();
@@ -835,8 +838,8 @@ public class DefaultBrowseService
                 {
                     continue;
                 }
-                ManagedRepositoryContent managedRepositoryContent =
-                    repositoryContentFactory.getManagedRepositoryContent( repoId );
+                ManagedRepositoryContent managedRepositoryContent = getManagedRepositoryContent( repoId );
+
                 // FIXME default to jar which can be wrong for war zip etc....
                 ArchivaArtifact archivaArtifact = new ArchivaArtifact( groupId, artifactId, version,
                                                                        StringUtils.isEmpty( classifier )

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
index 697cadc..155546d 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
@@ -48,6 +48,7 @@ import org.apache.archiva.redback.users.User;
 import org.apache.archiva.redback.users.UserManagerException;
 import org.apache.archiva.redback.users.UserNotFoundException;
 import org.apache.archiva.repository.*;
+import org.apache.archiva.repository.content.maven2.ManagedDefaultRepositoryContent;
 import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.archiva.repository.metadata.MetadataTools;
 import org.apache.archiva.repository.metadata.RepositoryMetadataException;
@@ -102,6 +103,9 @@ public class DefaultRepositoriesService
     private ArchivaIndexingTaskExecutor archivaIndexingTaskExecutor;
 
     @Inject
+    private RepositoryRegistry repositoryRegistry;
+
+    @Inject
     private ManagedRepositoryAdmin managedRepositoryAdmin;
 
     @Inject
@@ -111,9 +115,6 @@ public class DefaultRepositoriesService
     private SecuritySystem securitySystem;
 
     @Inject
-    private RepositoryContentFactory repositoryFactory;
-
-    @Inject
     @Named(value = "archivaTaskScheduler#repository")
     private ArchivaTaskScheduler scheduler;
 
@@ -180,6 +181,15 @@ public class DefaultRepositoriesService
         }
     }
 
+    private ManagedRepositoryContent getManagedRepositoryContent(String id) throws RepositoryException
+    {
+        org.apache.archiva.repository.ManagedRepository repo = repositoryRegistry.getManagedRepository( id );
+        if (repo==null) {
+            throw new RepositoryException( "Repository not found "+id );
+        }
+        return repo.getContent();
+    }
+
     @Override
     public Boolean scanRepositoryNow( String repositoryId, boolean fullScan )
         throws ArchivaRestServiceException
@@ -187,7 +197,8 @@ public class DefaultRepositoriesService
 
         try
         {
-            ManagedRepository repository = managedRepositoryAdmin.getManagedRepository( repositoryId );
+
+            org.apache.archiva.repository.ManagedRepository repository = repositoryRegistry.getManagedRepository( repositoryId );
 
             IndexingContext context = managedRepositoryAdmin.createIndexContext( repository );
 
@@ -367,7 +378,7 @@ public class DefaultRepositoriesService
         {
 
             ManagedRepositoryContent sourceRepository =
-                repositoryFactory.getManagedRepositoryContent( artifactTransferRequest.getRepositoryId() );
+                getManagedRepositoryContent( artifactTransferRequest.getRepositoryId() );
 
             String artifactSourcePath = sourceRepository.toPath( artifactReference );
 
@@ -388,7 +399,7 @@ public class DefaultRepositoriesService
             }
 
             ManagedRepositoryContent targetRepository =
-                repositoryFactory.getManagedRepositoryContent( artifactTransferRequest.getTargetRepositoryId() );
+                getManagedRepositoryContent( artifactTransferRequest.getTargetRepositoryId() );
 
             String artifactPath = targetRepository.toPath( artifactReference );
 
@@ -646,7 +657,7 @@ public class DefaultRepositoriesService
 
         try
         {
-            ManagedRepositoryContent repository = repositoryFactory.getManagedRepositoryContent( repositoryId );
+            ManagedRepositoryContent repository = getManagedRepositoryContent( repositoryId );
 
             VersionedReference ref = new VersionedReference();
             ref.setArtifactId( projectId );
@@ -767,7 +778,7 @@ public class DefaultRepositoriesService
             ref.setGroupId( artifact.getGroupId() );
             ref.setVersion( artifact.getVersion() );
 
-            ManagedRepositoryContent repository = repositoryFactory.getManagedRepositoryContent( repositoryId );
+            ManagedRepositoryContent repository = getManagedRepositoryContent( repositoryId );
 
             ArtifactReference artifactReference = new ArtifactReference();
             artifactReference.setArtifactId( artifact.getArtifactId() );
@@ -977,7 +988,7 @@ public class DefaultRepositoriesService
 
         try
         {
-            ManagedRepositoryContent repository = repositoryFactory.getManagedRepositoryContent( repositoryId );
+            ManagedRepositoryContent repository = getManagedRepositoryContent( repositoryId );
 
             repository.deleteGroupId( groupId );
 
@@ -1038,7 +1049,7 @@ public class DefaultRepositoriesService
 
         try
         {
-            ManagedRepositoryContent repository = repositoryFactory.getManagedRepositoryContent( repositoryId );
+            ManagedRepositoryContent repository = getManagedRepositoryContent( repositoryId );
 
             repository.deleteProject( groupId, projectId );
         }
@@ -1100,18 +1111,13 @@ public class DefaultRepositoriesService
         long sinceWhen = RepositoryScanner.FRESH_SCAN;
         try
         {
-            return repoScanner.scan( getManagedRepositoryAdmin().getManagedRepository( repositoryId ), sinceWhen );
+            return repoScanner.scan( repositoryRegistry.getManagedRepository( repositoryId ), sinceWhen );
         }
         catch ( RepositoryScannerException e )
         {
             log.error( e.getMessage(), e );
             throw new ArchivaRestServiceException( "RepositoryScannerException exception: " + e.getMessage(), 500, e );
         }
-        catch ( RepositoryAdminException e )
-        {
-            log.error( e.getMessage(), e );
-            throw new ArchivaRestServiceException( "RepositoryScannerException exception: " + e.getMessage(), 500, e );
-        }
     }
 
     /**
@@ -1191,16 +1197,6 @@ public class DefaultRepositoriesService
         this.managedRepositoryAdmin = managedRepositoryAdmin;
     }
 
-    public RepositoryContentFactory getRepositoryFactory()
-    {
-        return repositoryFactory;
-    }
-
-    public void setRepositoryFactory( RepositoryContentFactory repositoryFactory )
-    {
-        this.repositoryFactory = repositoryFactory;
-    }
-
     public RepositorySessionFactory getRepositorySessionFactory()
     {
         return repositorySessionFactory;

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSystemStatusService.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSystemStatusService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSystemStatusService.java
index 89663e1..ab49702 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSystemStatusService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSystemStatusService.java
@@ -18,6 +18,8 @@ package org.apache.archiva.rest.services;
  * under the License.
  */
 
+import org.apache.archiva.admin.model.RepositoryAdminException;
+import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
 import org.apache.archiva.redback.components.cache.Cache;
 import org.apache.archiva.redback.components.cache.CacheStatistics;
 import org.apache.archiva.redback.components.taskqueue.TaskQueue;
@@ -57,6 +59,8 @@ public class DefaultSystemStatusService
 
     private RepositoryScanner scanner;
 
+    ManagedRepositoryAdmin managedRepositoryAdmin;
+
     // display spring scheduled
     //@Inject @Named (value="springScheduler");
 
@@ -69,6 +73,8 @@ public class DefaultSystemStatusService
         queues = getBeansOfType( applicationContext, TaskQueue.class );
 
         caches = getBeansOfType( applicationContext, Cache.class );
+
+        managedRepositoryAdmin = applicationContext.getBean( ManagedRepositoryAdmin.class );
     }
 
     @Override
@@ -178,11 +184,19 @@ public class DefaultSystemStatusService
         List<RepositoryScannerStatistics> repositoryScannerStatisticsList =
             new ArrayList<RepositoryScannerStatistics>( repositoryScannerInstances.size() );
 
+
         for ( RepositoryScannerInstance instance : repositoryScannerInstances )
         {
             RepositoryScannerStatistics repositoryScannerStatistics = new RepositoryScannerStatistics();
             repositoryScannerStatisticsList.add( repositoryScannerStatistics );
-            repositoryScannerStatistics.setManagedRepository( instance.getRepository() );
+            try
+            {
+                repositoryScannerStatistics.setManagedRepository( managedRepositoryAdmin.getManagedRepository( instance.getRepository().getId())  );
+            }
+            catch ( RepositoryAdminException e )
+            {
+                log.error("Could not retrieve repository '{}'", instance.getRepository().getId());
+            }
             repositoryScannerStatistics.setNewFileCount( instance.getStats().getNewFileCount() );
             repositoryScannerStatistics.setTotalFileCount( instance.getStats().getTotalFileCount() );
             repositoryScannerStatistics.setConsumerScanningStatistics( mapConsumerScanningStatistics( instance ) );

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
index 22e599b..c055aee 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
@@ -43,6 +43,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Collections;
 import java.util.Date;
+import java.util.Locale;
 
 /**
  * @author Olivier Lamy
@@ -320,7 +321,7 @@ public abstract class AbstractArchivaRestTest
     protected ManagedRepository getTestManagedRepository()
     {
         String location = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repo" ).toAbsolutePath().toString();
-        return new ManagedRepository( "TEST", "test", location, "default", true, true, false, "2 * * * * ?", null,
+        return new ManagedRepository( Locale.getDefault(),  "TEST", "test", location, "default", true, true, false, "2 * * * * ?", null,
                                       false, 2, 3, true, false, "my nice repo", false );
 
     }
@@ -429,7 +430,7 @@ public abstract class AbstractArchivaRestTest
             getManagedRepositoriesService( authorizationHeader ).deleteManagedRepository( testRepoId, false );
         }
 
-        ManagedRepository managedRepository = new ManagedRepository();
+        ManagedRepository managedRepository = new ManagedRepository(Locale.getDefault());
         managedRepository.setId( testRepoId );
         managedRepository.setName( "test repo" );
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java
index d3d6672..77605ed 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RemoteRepositoriesServiceTest.java
@@ -26,6 +26,7 @@ import org.junit.Test;
 
 import javax.ws.rs.ForbiddenException;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * @author Olivier Lamy
@@ -201,21 +202,21 @@ public class RemoteRepositoriesServiceTest
 
     RemoteRepository getRemoteRepository()
     {
-        return new RemoteRepository( "id-new", "new one", "http://foo.com", "default", "foo", "foopassword", 120,
+        return new RemoteRepository( Locale.getDefault( ), "id-new", "new one", "http://foo.com", "default", "foo", "foopassword", 120,
                                      "cool repo" );
     }
 
 
     RemoteRepository getRemoteMavenRepository()
     {
-        return new RemoteRepository( "id-maven1", "Maven1", "http://repo.maven.apache.org/maven2", "default", "foo", "foopassword", 120,
+        return new RemoteRepository( Locale.getDefault( ),"id-maven1", "Maven1", "http://repo.maven.apache.org/maven2", "default", "foo", "foopassword", 120,
                 "cool repo3" );
     }
 
 
     RemoteRepository getRemoteOracleRepository()
     {
-        return new RemoteRepository( "id-oracle", "Oracle", "http://download.oracle.com/maven", "default", "foo", "foopassword", 120,
+        return new RemoteRepository( Locale.getDefault( ),"id-oracle", "Oracle", "http://download.oracle.com/maven", "default", "foo", "foopassword", 120,
                 "cool repo4" );
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
index 934bfc6..de7df45 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
@@ -37,6 +37,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.List;
+import java.util.Locale;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -544,7 +545,7 @@ public class RepositoriesServiceTest
     protected ManagedRepository getTestManagedRepository( String id, String path )
     {
         String location = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/" + path ).toAbsolutePath().toString();
-        return new ManagedRepository( id, id, location, "default", true, true, true, "2 * * * * ?", null, false, 80, 80,
+        return new ManagedRepository( Locale.getDefault(), id, id, location, "default", true, true, true, "2 * * * * ?", null, false, 80, 80,
                                       true, false );
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml
index 8e0df07..d77b845 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/resources/META-INF/spring-context-test.xml
@@ -32,7 +32,10 @@
 
   <context:annotation-config/>
   <context:component-scan
-      base-package="org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils"/>
+      base-package="org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils,org.apache.archiva.repository.content.maven2"/>
+  
+  <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
+  <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
 
   <bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
     <property name="properties">

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java b/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java
index 0d61740..25b0ed6 100644
--- a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java
+++ b/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/AbstractSecurityTest.java
@@ -32,6 +32,7 @@ import org.apache.archiva.redback.system.SecuritySystem;
 import org.apache.archiva.redback.users.User;
 import org.apache.archiva.redback.users.UserManager;
 import org.apache.archiva.redback.users.UserManagerException;
+import org.apache.archiva.repository.RepositoryRegistry;
 import org.apache.archiva.security.common.ArchivaRoleConstants;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.commons.io.FileUtils;
@@ -80,6 +81,9 @@ public abstract class AbstractSecurityTest
     private ArchivaConfiguration archivaConfiguration;
 
     @Inject
+    private RepositoryRegistry repositoryRegistry;
+
+    @Inject
     protected UserRepositories userRepos;
 
     protected void setupRepository( String repoId )
@@ -94,6 +98,7 @@ public abstract class AbstractSecurityTest
         {
             archivaConfiguration.getConfiguration().addManagedRepository( repoConfig );
         }
+        repositoryRegistry.reload();
 
         // Add repo roles to security.
         userRepos.createMissingRepositoryRoles( repoId );

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/mock/MockBeanServices.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/mock/MockBeanServices.java b/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/mock/MockBeanServices.java
index d513a35..9480019 100644
--- a/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/mock/MockBeanServices.java
+++ b/archiva-modules/archiva-web/archiva-security/src/test/java/org/apache/archiva/security/mock/MockBeanServices.java
@@ -156,7 +156,7 @@ public class MockBeanServices
     }
 
     @Override
-    public String getFilePath( String requestPath, ManagedRepository managedRepository )
+    public String getFilePath( String requestPath, org.apache.archiva.repository.ManagedRepository managedRepository )
     {
         return null;
     }

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml b/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
index 6965148..fcc22ae 100644
--- a/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-web/archiva-security/src/test/resources/spring-context.xml
@@ -27,6 +27,9 @@
             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"
        default-lazy-init="true">
 
+  <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
+  <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
+
   <bean name="securitySystem#testable" class="org.apache.archiva.redback.system.DefaultSecuritySystem">
     <property name="userManager" ref="userManager#memory"/>
     <property name="keyManager" ref="keyManager#memory"/>

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-test-mocks/src/main/java/org/apache/archiva/web/mocks/MockInvalidRepositoryContentConsumer.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-test-mocks/src/main/java/org/apache/archiva/web/mocks/MockInvalidRepositoryContentConsumer.java b/archiva-modules/archiva-web/archiva-test-mocks/src/main/java/org/apache/archiva/web/mocks/MockInvalidRepositoryContentConsumer.java
index e3981bc..f517957 100644
--- a/archiva-modules/archiva-web/archiva-test-mocks/src/main/java/org/apache/archiva/web/mocks/MockInvalidRepositoryContentConsumer.java
+++ b/archiva-modules/archiva-web/archiva-test-mocks/src/main/java/org/apache/archiva/web/mocks/MockInvalidRepositoryContentConsumer.java
@@ -18,10 +18,10 @@ package org.apache.archiva.web.mocks;
  * under the License.
  */
 
-import org.apache.archiva.admin.model.beans.ManagedRepository;
 import org.apache.archiva.consumers.ConsumerException;
 import org.apache.archiva.consumers.ConsumerMonitor;
 import org.apache.archiva.consumers.InvalidRepositoryContentConsumer;
+import org.apache.archiva.repository.ManagedRepository;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties b/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
index 666d997..bbaf02d 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
+++ b/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
@@ -84,7 +84,7 @@ index.directory=Index Directory
 retentionCount=Retention Count
 snapshots=Snapshots
 blockRedeployments=Block Redeployments
-retentionTime=Days Older
+retentionPeriod=Days Older
 cronExpression=Cron Expression
 cronExpression.help.title=Cron Expression Format
 cronExpression.help.content= Quartz cron is used. Documentation is: <a target="_blank" href="http://quartz-scheduler.org/documentation/quartz-2.1.x/cookbook/">here</a>
@@ -129,8 +129,8 @@ managedRepository.location.help.title=Location
 managedRepository.location.help.content=Location on File System (can be relative to Archiva base directory or absolute path)
 managedRepository.indexDirectory.help.title=Index Directory
 managedRepository.indexDirectory.help.content=Path to the Maven Index directory
-managedRepository.retentionTime.help.title=Days Older
-managedRepository.retentionTime.help.content=For snapshots repositories, maximum file days age you want to keep
+managedRepository.retentionPeriod.help.title=Days Older
+managedRepository.retentionPeriod.help.content=For snapshots repositories, maximum file days age you want to keep
 managedRepository.retentionCount.help.title=Retention Count
 managedRepository.retentionCount.help.content=For snapshots repositories, maximum of files you want to keep.
 managedRepository.description.help.content=A free description for your repository

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadArtifactFromQueryTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadArtifactFromQueryTest.java b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadArtifactFromQueryTest.java
index 94a048f..beedae5 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadArtifactFromQueryTest.java
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadArtifactFromQueryTest.java
@@ -34,6 +34,7 @@ import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.Locale;
 
 /**
  * @author Olivier Lamy
@@ -88,7 +89,7 @@ public class DownloadArtifactFromQueryTest
             FileUtils.deleteDirectory( tmpIndexDir.toFile() );
         }
         String id = Long.toString( System.currentTimeMillis() );
-        ManagedRepository managedRepository = new ManagedRepository();
+        ManagedRepository managedRepository = new ManagedRepository( Locale.getDefault());
         managedRepository.setId( id );
         managedRepository.setName( "name of " + id );
         managedRepository.setLocation( System.getProperty( "basedir" ) + "/src/test/repositories/test-repo" );

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexNonDefaultPathTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexNonDefaultPathTest.java b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexNonDefaultPathTest.java
index 0d0bbab..95f56ab 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexNonDefaultPathTest.java
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexNonDefaultPathTest.java
@@ -39,6 +39,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Locale;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -92,7 +93,7 @@ public class DownloadMergedIndexNonDefaultPathTest
             org.apache.archiva.common.utils.FileUtils.deleteDirectory( tmpIndexDir );
         }
         String id = Long.toString( System.currentTimeMillis() );
-        ManagedRepository managedRepository = new ManagedRepository();
+        ManagedRepository managedRepository = new ManagedRepository( Locale.getDefault());
         managedRepository.setId( id );
         managedRepository.setName( "name of " + id );
         managedRepository.setLocation( System.getProperty( "basedir" ) + "/src/test/repositories/test-repo" );
@@ -138,7 +139,7 @@ public class DownloadMergedIndexNonDefaultPathTest
 
         // create a repo with a remote on the one with index
         id = Long.toString( System.currentTimeMillis() );
-        managedRepository = new ManagedRepository();
+        managedRepository = new ManagedRepository(Locale.getDefault());
         managedRepository.setId( id );
         managedRepository.setName( "name of " + id );
         managedRepository.setLocation( System.getProperty( "basedir" ) + "/src/test/repositories/test-repo" );
@@ -153,7 +154,7 @@ public class DownloadMergedIndexNonDefaultPathTest
 
         String remoteId = Long.toString( System.currentTimeMillis() );
 
-        RemoteRepository remoteRepository = new RemoteRepository();
+        RemoteRepository remoteRepository = new RemoteRepository(Locale.getDefault());
         remoteRepository.setId( remoteId );
         remoteRepository.setName( remoteId );
         remoteRepository.setDownloadRemoteIndex( true );

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexTest.java b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexTest.java
index c5cf891..f870d42 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexTest.java
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadMergedIndexTest.java
@@ -41,6 +41,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Locale;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -98,7 +99,7 @@ public class DownloadMergedIndexTest
             FileUtils.deleteDirectory( tmpIndexDir.toFile() );
         }
         String id = Long.toString( System.currentTimeMillis() );
-        ManagedRepository managedRepository = new ManagedRepository();
+        ManagedRepository managedRepository = new ManagedRepository( Locale.getDefault());
         managedRepository.setId( id );
         managedRepository.setName( "name of " + id );
         managedRepository.setLocation( System.getProperty( "basedir" ) + "/src/test/repositories/test-repo" );
@@ -142,7 +143,7 @@ public class DownloadMergedIndexTest
 
         // create a repo with a remote on the one with index
         id = Long.toString( System.currentTimeMillis() );
-        managedRepository = new ManagedRepository();
+        managedRepository = new ManagedRepository(Locale.getDefault());
         managedRepository.setId( id );
         managedRepository.setName( "name of " + id );
         managedRepository.setLocation( System.getProperty( "basedir" ) + "/src/test/repositories/test-repo" );
@@ -155,7 +156,7 @@ public class DownloadMergedIndexTest
 
         getManagedRepositoriesService().addManagedRepository( managedRepository );
 
-        RemoteRepository remoteRepository = new RemoteRepository();
+        RemoteRepository remoteRepository = new RemoteRepository(Locale.getDefault());
         remoteRepository.setId( "all-merged" );
         remoteRepository.setName( "all-merged" );
         remoteRepository.setDownloadRemoteIndex( true );

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadSnapshotTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadSnapshotTest.java b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadSnapshotTest.java
index f5913b7..024e1b8 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadSnapshotTest.java
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/DownloadSnapshotTest.java
@@ -38,6 +38,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.List;
+import java.util.Locale;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
@@ -82,7 +83,7 @@ public class DownloadSnapshotTest
             org.apache.archiva.common.utils.FileUtils.deleteDirectory( tmpIndexDir );
         }
         String id = Long.toString( System.currentTimeMillis() );
-        ManagedRepository managedRepository = new ManagedRepository();
+        ManagedRepository managedRepository = new ManagedRepository( Locale.getDefault());
         managedRepository.setId( id );
         managedRepository.setName( "name of " + id );
         managedRepository.setLocation( System.getProperty( "basedir" ) + "/src/test/repositories/snapshot-repo" );

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/RemoteRepositoryConnectivityCheckTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/RemoteRepositoryConnectivityCheckTest.java b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/RemoteRepositoryConnectivityCheckTest.java
index 256a9be..e9d156c 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/RemoteRepositoryConnectivityCheckTest.java
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/java/org/apache/archiva/remotedownload/RemoteRepositoryConnectivityCheckTest.java
@@ -36,6 +36,7 @@ import org.junit.Test;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.Locale;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -184,7 +185,7 @@ public class RemoteRepositoryConnectivityCheckTest
 
     RemoteRepository getRemoteRepository()
     {
-        return new RemoteRepository( "id-new", "new one", "http://foo.com", "default", "foo", "foopassword", 120,
+        return new RemoteRepository( Locale.getDefault( ), "id-new", "new one", "http://foo.com", "default", "foo", "foopassword", 120,
                                      "cool repo" );
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml
index 570eeb5..cdec7b4 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-artifacts-download.xml
@@ -30,6 +30,11 @@
 
   <context:property-placeholder system-properties-mode="OVERRIDE"/>
 
+  <context:component-scan base-package="org.apache.archiva.repository.content.maven2" />
+  
+  <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
+  <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
+
   <bean name="commons-configuration" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry">
     <property name="properties">
       <value>

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml
index 7a06a88..7388de1 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-merge-index-download.xml
@@ -29,6 +29,10 @@
        default-lazy-init="true">
 
   <context:property-placeholder system-properties-mode="OVERRIDE"/>
+  <context:component-scan base-package="org.apache.archiva.repository.content.maven2" />
+
+  <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
+  <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
 
 
   <bean name="commons-configuration" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry">

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml
index 5f9f771..e35f0ac 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-rss-servlet.xml
@@ -30,7 +30,11 @@
   <context:property-placeholder system-properties-mode="OVERRIDE"/>
 
   <context:annotation-config/>
-  <context:component-scan base-package="org.apache.archiva.webtest.memory"/>
+  <context:component-scan base-package="org.apache.archiva.webtest.memory,org.apache.archiva.repository.content.maven2"/>
+
+  <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
+  <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
+
 
   <alias name="repositorySessionFactory#test" alias="repositorySessionFactory"/>
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml
index d62446b..d7083d2 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-test-common.xml
@@ -29,7 +29,9 @@
 
   <context:annotation-config/>
   <context:component-scan
-      base-package="org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils"/>
+      base-package="org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils,org.apache.archiva.repository.content.maven2"/>
+  <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
+  <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
 
   <bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler">
     <property name="properties">

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml
index f29dbcb..7eb9645 100644
--- a/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml
+++ b/archiva-modules/archiva-web/archiva-web-common/src/test/resources/spring-context-with-jcr.xml
@@ -37,6 +37,10 @@
   </bean>
   -->
 
+  <alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" />
+  <alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" />
+
+
   <alias name="repositorySessionFactory#jcr" alias="repositorySessionFactory"/>
 
   <bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.TestRepositorySessionFactoryBean">

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/maven2/repositories.js
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/maven2/repositories.js b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/maven2/repositories.js
index 0e70372..b169712 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/maven2/repositories.js
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/maven2/repositories.js
@@ -32,7 +32,7 @@ function(jquery,i18n,jqueryTmpl,bootstrap,jqueryValidate,ko) {
             ];
 
   ManagedRepository=function(id,name,layout,indexDirectory,location,snapshots,releases,blockRedeployments,cronExpression,
-                             scanned,retentionTime,retentionCount,deleteReleasedSnapshots,stageRepoNeeded,description,
+                             scanned,retentionPeriod,retentionCount,deleteReleasedSnapshots,stageRepoNeeded,description,
                              skipPackedIndexCreation,feedsUrl,url){
 
     var self=this;
@@ -63,9 +63,9 @@ function(jquery,i18n,jqueryTmpl,bootstrap,jqueryValidate,ko) {
 
     //private ManagedRepository stagingRepository;
 
-    //private int retentionTime = 100;
-    this.retentionTime=ko.observable(retentionTime);
-    this.retentionTime.subscribe(function(newValue){self.modified(true)});
+    //private int retentionPeriod = 100;
+    this.retentionPeriod=ko.observable(retentionPeriod);
+    this.retentionPeriod.subscribe(function(newValue){self.modified(true)});
 
     //private int retentionCount = 2;
     this.retentionCount=ko.observable(retentionCount);
@@ -167,7 +167,7 @@ function(jquery,i18n,jqueryTmpl,bootstrap,jqueryValidate,ko) {
     return new ManagedRepository(data.id,data.name,data.layout,data.indexDirectory,data.location,data.snapshots
                                  ,data.releases,
                                  data.blockRedeployments,data.cronExpression,
-                                 data.scanned,data.retentionTime,data.retentionCount,data.deleteReleasedSnapshots,
+                                 data.scanned,data.retentionPeriod,data.retentionCount,data.deleteReleasedSnapshots,
                                  data.stageRepoNeeded,data.description,data.skipPackedIndexCreation);
   }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/repositories.html
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/repositories.html b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/repositories.html
index 5629b55..17735c6 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/repositories.html
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/repositories.html
@@ -282,14 +282,14 @@
         </div>
       </div>
       <div class="control-group">
-        <label class="control-label" for="retentionTime">${$.i18n.prop('retentionTime')}</label>
+        <label class="control-label" for="retentionPeriod">${$.i18n.prop('retentionPeriod')}</label>
 
         <div class="controls">
-          <input type="text" id="retentionTime" class="digits" name="retentionTime" size="5"
-                 data-bind="value: managedRepository.retentionTime"/>
-          <a class="btn btn-warning btn-mini popover-doc" id="managedRepository-retentionTime-info-button"
-             data-original-title="${$.i18n.prop('managedRepository.retentionTime.help.title')}"
-             data-content="${$.i18n.prop('managedRepository.retentionTime.help.content')}">
+          <input type="text" id="retentionPeriod" class="digits" name="retentionPeriod" size="5"
+                 data-bind="value: managedRepository.retentionPeriod"/>
+          <a class="btn btn-warning btn-mini popover-doc" id="managedRepository-retentionPeriod-info-button"
+             data-original-title="${$.i18n.prop('managedRepository.retentionPeriod.help.title')}"
+             data-content="${$.i18n.prop('managedRepository.retentionPeriod.help.content')}">
             <i class="icon-question-sign icon-white"></i>
           </a>
         </div>
@@ -604,7 +604,7 @@
         <label class="control-label" for="timeout">${$.i18n.prop('timeout')}</label>
 
         <div class="controls">
-          <input type="text" id="timeout" class="digits" name="retentionTime" size="5"
+          <input type="text" id="timeout" class="digits" name="retentionPeriod" size="5"
                  data-bind="value: remoteRepository.timeout"/>
           <a class="btn btn-warning btn-mini popover-doc" id="remoteRepository-timeout-info-button"
              data-original-title="${$.i18n.prop('remoteRepository.timeout.help.title')}"

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResource.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResource.java b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResource.java
index b152e89..c13f039 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResource.java
+++ b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResource.java
@@ -19,7 +19,6 @@ package org.apache.archiva.webdav;
  * under the License.
  */
 
-import org.apache.archiva.admin.model.beans.ManagedRepository;
 import org.apache.archiva.common.filelock.FileLockException;
 import org.apache.archiva.common.filelock.FileLockManager;
 import org.apache.archiva.common.filelock.FileLockTimeoutException;
@@ -35,11 +34,28 @@ import org.apache.archiva.webdav.util.MimeTypes;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.util.Text;
-import org.apache.jackrabbit.webdav.*;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResourceIterator;
+import org.apache.jackrabbit.webdav.DavResourceIteratorImpl;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavSession;
+import org.apache.jackrabbit.webdav.MultiStatusResponse;
 import org.apache.jackrabbit.webdav.io.InputContext;
 import org.apache.jackrabbit.webdav.io.OutputContext;
-import org.apache.jackrabbit.webdav.lock.*;
-import org.apache.jackrabbit.webdav.property.*;
+import org.apache.jackrabbit.webdav.lock.ActiveLock;
+import org.apache.jackrabbit.webdav.lock.LockInfo;
+import org.apache.jackrabbit.webdav.lock.LockManager;
+import org.apache.jackrabbit.webdav.lock.Scope;
+import org.apache.jackrabbit.webdav.lock.Type;
+import org.apache.jackrabbit.webdav.property.DavProperty;
+import org.apache.jackrabbit.webdav.property.DavPropertyName;
+import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
+import org.apache.jackrabbit.webdav.property.DavPropertySet;
+import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
+import org.apache.jackrabbit.webdav.property.ResourceType;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormatter;
 import org.joda.time.format.ISODateTimeFormat;
@@ -80,7 +96,7 @@ public class ArchivaDavResource
 
     private String remoteAddr;
 
-    private final ManagedRepository repository;
+    private final org.apache.archiva.repository.ManagedRepository repository;
 
     private final MimeTypes mimeTypes;
 
@@ -96,7 +112,7 @@ public class ArchivaDavResource
 
     private Logger log = LoggerFactory.getLogger( ArchivaDavResource.class );
 
-    public ArchivaDavResource( String localResource, String logicalResource, ManagedRepository repository,
+    public ArchivaDavResource( String localResource, String logicalResource, org.apache.archiva.repository.ManagedRepository repository,
                                DavSession session, ArchivaDavResourceLocator locator, DavResourceFactory factory,
                                MimeTypes mimeTypes, List<AuditListener> auditListeners,
                                RepositoryArchivaTaskScheduler scheduler, FileLockManager fileLockManager )
@@ -117,7 +133,7 @@ public class ArchivaDavResource
         this.fileLockManager = fileLockManager;
     }
 
-    public ArchivaDavResource( String localResource, String logicalResource, ManagedRepository repository,
+    public ArchivaDavResource( String localResource, String logicalResource, org.apache.archiva.repository.ManagedRepository repository,
                                String remoteAddr, String principal, DavSession session,
                                ArchivaDavResourceLocator locator, DavResourceFactory factory, MimeTypes mimeTypes,
                                List<AuditListener> auditListeners, RepositoryArchivaTaskScheduler scheduler,

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
index 1f5e0be..6774e85 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
+++ b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
@@ -20,7 +20,6 @@ package org.apache.archiva.webdav;
  */
 
 import org.apache.archiva.admin.model.RepositoryAdminException;
-import org.apache.archiva.admin.model.beans.ManagedRepository;
 import org.apache.archiva.admin.model.beans.RemoteRepository;
 import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
 import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
@@ -32,7 +31,12 @@ import org.apache.archiva.common.utils.PathUtil;
 import org.apache.archiva.common.utils.VersionUtil;
 import org.apache.archiva.configuration.ArchivaConfiguration;
 import org.apache.archiva.configuration.RepositoryGroupConfiguration;
-import org.apache.archiva.indexer.merger.*;
+import org.apache.archiva.indexer.merger.IndexMerger;
+import org.apache.archiva.indexer.merger.IndexMergerException;
+import org.apache.archiva.indexer.merger.IndexMergerRequest;
+import org.apache.archiva.indexer.merger.MergedRemoteIndexesTask;
+import org.apache.archiva.indexer.merger.MergedRemoteIndexesTaskRequest;
+import org.apache.archiva.indexer.merger.TemporaryGroupIndex;
 import org.apache.archiva.indexer.search.RepositorySearch;
 import org.apache.archiva.maven2.metadata.MavenMetadataReader;
 import org.apache.archiva.metadata.model.facets.AuditEvent;
@@ -52,12 +56,16 @@ import org.apache.archiva.redback.policy.MustChangePasswordException;
 import org.apache.archiva.redback.system.SecuritySession;
 import org.apache.archiva.redback.users.User;
 import org.apache.archiva.redback.users.UserManager;
+import org.apache.archiva.repository.ManagedRepository;
 import org.apache.archiva.repository.ManagedRepositoryContent;
+import org.apache.archiva.repository.ReleaseScheme;
 import org.apache.archiva.repository.RepositoryContentFactory;
 import org.apache.archiva.repository.RepositoryException;
 import org.apache.archiva.repository.RepositoryNotFoundException;
+import org.apache.archiva.repository.RepositoryRegistry;
 import org.apache.archiva.repository.content.maven2.RepositoryRequest;
 import org.apache.archiva.repository.events.AuditListener;
+import org.apache.archiva.repository.features.IndexCreationFeature;
 import org.apache.archiva.repository.layout.LayoutException;
 import org.apache.archiva.repository.metadata.MetadataTools;
 import org.apache.archiva.repository.metadata.RepositoryMetadataException;
@@ -72,7 +80,13 @@ import org.apache.archiva.xml.XMLException;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.SystemUtils;
-import org.apache.jackrabbit.webdav.*;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResource;
+import org.apache.jackrabbit.webdav.DavResourceFactory;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletRequest;
+import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.DavSession;
 import org.apache.jackrabbit.webdav.lock.LockManager;
 import org.apache.jackrabbit.webdav.lock.SimpleLockManager;
 import org.apache.maven.index.context.IndexingContext;
@@ -94,7 +108,13 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  *
@@ -143,6 +163,9 @@ public class ArchivaDavResourceFactory
     private ManagedRepositoryAdmin managedRepositoryAdmin;
 
     @Inject
+    private RepositoryRegistry repositoryRegistry;
+
+    @Inject
     private IndexMerger indexMerger;
 
     @Inject
@@ -283,40 +306,28 @@ public class ArchivaDavResourceFactory
                            archivaLocator.getRepositoryId(), e.getMessage() );
             }
 
-            ManagedRepositoryContent managedRepositoryContent = null;
 
-            try
-            {
-                managedRepositoryContent =
-                    repositoryFactory.getManagedRepositoryContent( archivaLocator.getRepositoryId() );
-            }
-            catch ( RepositoryNotFoundException e )
-            {
+            ManagedRepository repo = repositoryRegistry.getManagedRepository( archivaLocator.getRepositoryId() );
+            if (repo==null) {
                 throw new DavException( HttpServletResponse.SC_NOT_FOUND,
-                                        "Invalid repository: " + archivaLocator.getRepositoryId() );
+                    "Invalid repository: " + archivaLocator.getRepositoryId() );
             }
-            catch ( RepositoryException e )
-            {
-                throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e );
+            ManagedRepositoryContent managedRepositoryContent = repo.getContent( );
+            if (managedRepositoryContent==null) {
+                log.error("Inconsistency detected. Repository content not found for '{}'", archivaLocator.getRepositoryId());
+                throw new DavException( HttpServletResponse.SC_NOT_FOUND,
+                    "Invalid repository: " + archivaLocator.getRepositoryId() );
             }
 
             log.debug( "Managed repository '{}' accessed by '{}'", managedRepositoryContent.getId(), activePrincipal );
 
-            try
-            {
-                resource = processRepository( request, archivaLocator, activePrincipal, managedRepositoryContent,
-                                              managedRepositoryAdmin.getManagedRepository(
-                                                  archivaLocator.getRepositoryId() ) );
+            resource = processRepository( request, archivaLocator, activePrincipal, managedRepositoryContent,
+                                          repo);
 
-                String logicalResource = getLogicalResource( archivaLocator, null, false );
-                resourcesInAbsolutePath.add(
-                    Paths.get( managedRepositoryContent.getRepoRoot(), logicalResource ).toAbsolutePath().toString() );
+            String logicalResource = getLogicalResource( archivaLocator, null, false );
+            resourcesInAbsolutePath.add(
+                Paths.get( managedRepositoryContent.getRepoRoot(), logicalResource ).toAbsolutePath().toString() );
 
-            }
-            catch ( RepositoryAdminException e )
-            {
-                throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e );
-            }
         }
 
         String requestedResource = request.getRequestURI();
@@ -457,22 +468,17 @@ public class ArchivaDavResourceFactory
             for ( String repositoryId : repositories )
             {
                 ManagedRepositoryContent managedRepositoryContent;
-                try
-                {
-                    managedRepositoryContent = repositoryFactory.getManagedRepositoryContent( repositoryId );
+                ManagedRepository managedRepository = repositoryRegistry.getManagedRepository( repositoryId );
+                if (managedRepository==null) {
+                    throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Could not find repository with id "+repositoryId );
                 }
-                catch ( RepositoryNotFoundException e )
-                {
-                    throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e );
-                }
-                catch ( RepositoryException e )
-                {
-                    throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e );
+                managedRepositoryContent = managedRepository.getContent();
+                if (managedRepositoryContent==null) {
+                    log.error("Inconsistency detected. Repository content not found for '{}'",repositoryId);
+                    throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Could not find repository content with id "+repositoryId );
                 }
-
                 try
                 {
-                    ManagedRepository managedRepository = managedRepositoryAdmin.getManagedRepository( repositoryId );
                     DavResource updatedResource =
                         processRepository( request, archivaLocator, activePrincipal, managedRepositoryContent,
                                            managedRepository );
@@ -493,10 +499,6 @@ public class ArchivaDavResourceFactory
                 {
                     storedExceptions.add( e );
                 }
-                catch ( RepositoryAdminException e )
-                {
-                    storedExceptions.add( new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e ) );
-                }
             }
         }
         if ( resource == null )
@@ -522,12 +524,12 @@ public class ArchivaDavResourceFactory
         return resource;
     }
 
-    private String getLogicalResource( ArchivaDavResourceLocator archivaLocator, ManagedRepository managedRepository,
+    private String getLogicalResource( ArchivaDavResourceLocator archivaLocator, org.apache.archiva.repository.ManagedRepository managedRepository,
                                        boolean useOrigResourcePath )
     {
         // FIXME remove this hack
         // but currently managedRepository can be null in case of group
-        String layout = managedRepository == null ? new ManagedRepository().getLayout() : managedRepository.getLayout();
+        String layout = managedRepository == null ? "default" : managedRepository.getLayout();
         RepositoryStorage repositoryStorage =
             this.applicationContext.getBean( "repositoryStorage#" + layout, RepositoryStorage.class );
         String path = repositoryStorage.getFilePath(
@@ -545,7 +547,7 @@ public class ArchivaDavResourceFactory
         throws DavException
     {
         String layout = managedRepositoryContent.getRepository() == null
-            ? new ManagedRepository().getLayout()
+            ? "default"
             : managedRepositoryContent.getRepository().getLayout();
         RepositoryStorage repositoryStorage =
             this.applicationContext.getBean( "repositoryStorage#" + layout, RepositoryStorage.class );
@@ -570,7 +572,7 @@ public class ArchivaDavResourceFactory
 
     private DavResource processRepository( final DavServletRequest request, ArchivaDavResourceLocator archivaLocator,
                                            String activePrincipal, ManagedRepositoryContent managedRepositoryContent,
-                                           ManagedRepository managedRepository )
+                                           org.apache.archiva.repository.ManagedRepository managedRepository )
         throws DavException
     {
         DavResource resource = null;
@@ -659,7 +661,7 @@ public class ArchivaDavResourceFactory
 
                 // check if target repo is enabled for releases
                 // we suppose that release-artifacts can be deployed only to repos enabled for releases
-                if ( managedRepositoryContent.getRepository().isReleases() && !repositoryRequest.isMetadata(
+                if ( managedRepositoryContent.getRepository().getActiveReleaseSchemes().contains( ReleaseScheme.RELEASE ) && !repositoryRequest.isMetadata(
                     resourcePath ) && !repositoryRequest.isSupportFile( resourcePath ) )
                 {
                     ArtifactReference artifact = null;
@@ -671,7 +673,7 @@ public class ArchivaDavResourceFactory
                         {
                             // check if artifact already exists and if artifact re-deployment to the repository is allowed
                             if ( managedRepositoryContent.hasContent( artifact )
-                                && managedRepositoryContent.getRepository().isBlockRedeployments() )
+                                && managedRepositoryContent.getRepository().blocksRedeployments())
                             {
                                 log.warn( "Overwriting released artifacts in repository '{}' is not allowed.",
                                           managedRepositoryContent.getId() );
@@ -727,41 +729,30 @@ public class ArchivaDavResourceFactory
         ArchivaDavResourceLocator archivaLocator = checkLocatorIsInstanceOfRepositoryLocator( locator );
 
         ManagedRepositoryContent managedRepositoryContent;
-        try
-        {
-            managedRepositoryContent =
-                repositoryFactory.getManagedRepositoryContent( archivaLocator.getRepositoryId() );
-        }
-        catch ( RepositoryNotFoundException e )
-        {
+        ManagedRepository repo = repositoryRegistry.getManagedRepository( archivaLocator.getRepositoryId( ) );
+        if (repo==null) {
             throw new DavException( HttpServletResponse.SC_NOT_FOUND,
-                                    "Invalid repository: " + archivaLocator.getRepositoryId() );
+                "Invalid repository: " + archivaLocator.getRepositoryId() );
         }
-        catch ( RepositoryException e )
-        {
-            throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e );
+        managedRepositoryContent = repo.getContent();
+        if (managedRepositoryContent==null) {
+            log.error("Inconsistency detected. Repository content not found for '{}'", archivaLocator.getRepositoryId());
+            throw new DavException( HttpServletResponse.SC_NOT_FOUND,
+                "Invalid repository: " + archivaLocator.getRepositoryId() );
         }
 
         DavResource resource = null;
-        try
-        {
-            String logicalResource = getLogicalResource( archivaLocator, managedRepositoryAdmin.getManagedRepository(
-                archivaLocator.getRepositoryId() ), false );
-            if ( logicalResource.startsWith( "/" ) )
-            {
-                logicalResource = logicalResource.substring( 1 );
-            }
-            Path resourceFile = Paths.get( managedRepositoryContent.getRepoRoot(), logicalResource );
-            resource = new ArchivaDavResource( resourceFile.toAbsolutePath().toString(), logicalResource,
-                                               managedRepositoryContent.getRepository(), davSession, archivaLocator,
-                                               this, mimeTypes, auditListeners, scheduler, fileLockManager );
-
-            resource.addLockManager( lockManager );
-        }
-        catch ( RepositoryAdminException e )
+        String logicalResource = getLogicalResource( archivaLocator, repo, false );
+        if ( logicalResource.startsWith( "/" ) )
         {
-            throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e );
+            logicalResource = logicalResource.substring( 1 );
         }
+        Path resourceFile = Paths.get( managedRepositoryContent.getRepoRoot(), logicalResource );
+        resource = new ArchivaDavResource( resourceFile.toAbsolutePath().toString(), logicalResource,
+                                           repo, davSession, archivaLocator,
+                                           this, mimeTypes, auditListeners, scheduler, fileLockManager );
+
+        resource.addLockManager( lockManager );
         return resource;
     }
 
@@ -1027,7 +1018,7 @@ public class ArchivaDavResourceFactory
         // FIXME add a method with group in the repository storage
         String firstRepoId = repositoryGroupConfiguration.getRepositories().get( 0 );
 
-        String path = getLogicalResource( locator, managedRepositoryAdmin.getManagedRepository( firstRepoId ), false );
+        String path = getLogicalResource( locator, repositoryRegistry.getManagedRepository( firstRepoId ), false );
         if ( path.startsWith( "/" ) )
         {
             path = path.substring( 1 );
@@ -1084,32 +1075,28 @@ public class ArchivaDavResourceFactory
                 for ( String repository : repositories )
                 {
                     ManagedRepositoryContent managedRepository = null;
-
-                    try
-                    {
-                        managedRepository = repositoryFactory.getManagedRepositoryContent( repository );
-                    }
-                    catch ( RepositoryNotFoundException e )
-                    {
+                    ManagedRepository repo = repositoryRegistry.getManagedRepository( repository );
+                    if (repo == null) {
                         throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
-                                                "Invalid managed repository <" + repository + ">: " + e.getMessage() );
+                            "Invalid managed repository <" + repository + ">");
                     }
-                    catch ( RepositoryException e )
-                    {
+                    managedRepository = repo.getContent();
+                    if (managedRepository==null) {
+                        log.error("Inconsistency detected. Repository content not found for '{}'",repository);
                         throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
-                                                "Invalid managed repository <" + repository + ">: " + e.getMessage() );
+                            "Invalid managed repository <" + repository + ">");
                     }
-
                     Path resourceFile = Paths.get( managedRepository.getRepoRoot(), logicalResource.getPath() );
                     if ( Files.exists(resourceFile) )
                     {
                         // in case of group displaying index directory doesn't have sense !!
-                        String repoIndexDirectory = managedRepository.getRepository().getIndexDirectory();
+                        IndexCreationFeature idf = managedRepository.getRepository().getFeature(IndexCreationFeature.class).get();
+                        String repoIndexDirectory = idf.getIndexPath().toString();
                         if ( StringUtils.isNotEmpty( repoIndexDirectory ) )
                         {
                             if ( !Paths.get( repoIndexDirectory ).isAbsolute() )
                             {
-                                repoIndexDirectory = Paths.get( managedRepository.getRepository().getLocation(),
+                                repoIndexDirectory = Paths.get( managedRepository.getRepository().getLocation() ).resolve(
                                                                StringUtils.isEmpty( repoIndexDirectory )
                                                                    ? ".indexer"
                                                                    : repoIndexDirectory ).toAbsolutePath().toString();
@@ -1117,7 +1104,7 @@ public class ArchivaDavResourceFactory
                         }
                         if ( StringUtils.isEmpty( repoIndexDirectory ) )
                         {
-                            repoIndexDirectory = Paths.get( managedRepository.getRepository().getLocation(),
+                            repoIndexDirectory = Paths.get( managedRepository.getRepository().getLocation() ).resolve(
                                                            ".indexer" ).toAbsolutePath().toString();
                         }
 
@@ -1460,4 +1447,14 @@ public class ArchivaDavResourceFactory
     {
         this.managedRepositoryAdmin = managedRepositoryAdmin;
     }
+
+    public RepositoryRegistry getRepositoryRegistry( )
+    {
+        return repositoryRegistry;
+    }
+
+    public void setRepositoryRegistry( RepositoryRegistry repositoryRegistry )
+    {
+        this.repositoryRegistry = repositoryRegistry;
+    }
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/RepositoryServlet.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/RepositoryServlet.java b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/RepositoryServlet.java
index 27a9036..24f2db3 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/RepositoryServlet.java
+++ b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/RepositoryServlet.java
@@ -204,7 +204,7 @@ public class RepositoryServlet
 
         long end = System.currentTimeMillis();
 
-        log.info( "initServers done in {} ms", (end - start) );
+        log.debug( "initServers done in {} ms", (end - start) );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/archiva/blob/d6120d6c/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java
index 1fbe417..ce2d851 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java
+++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java
@@ -28,6 +28,7 @@ import org.apache.archiva.configuration.ArchivaConfiguration;
 import org.apache.archiva.configuration.Configuration;
 import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
+import org.apache.archiva.repository.RepositoryRegistry;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.archiva.webdav.httpunit.MkColMethodWebRequest;
 import org.apache.archiva.webdav.util.MavenIndexerCleaner;
@@ -99,6 +100,9 @@ public abstract class AbstractRepositoryServletTestCase
     @Inject
     protected ManagedRepositoryAdmin managedRepositoryAdmin;
 
+    @Inject
+    RepositoryRegistry repositoryRegistry;
+
     protected Logger log = LoggerFactory.getLogger( getClass() );
 
 
@@ -106,6 +110,7 @@ public abstract class AbstractRepositoryServletTestCase
         throws Exception
     {
         saveConfiguration( archivaConfiguration );
+        repositoryRegistry.reload();
     }
 
     @Before
@@ -135,6 +140,7 @@ public abstract class AbstractRepositoryServletTestCase
 
         config.addManagedRepository(
             createManagedRepository( REPOID_INTERNAL, "Internal Test Repo", repoRootInternal, true ) );
+        repositoryRegistry.reload();
 
         managedRepositoryAdmin.createIndexContext( managedRepositoryAdmin.getManagedRepository( REPOID_INTERNAL ) );
 
@@ -776,6 +782,7 @@ public abstract class AbstractRepositoryServletTestCase
     protected void saveConfiguration( ArchivaConfiguration archivaConfiguration )
         throws Exception
     {
+        repositoryRegistry.reload();
         archivaConfiguration.save( archivaConfiguration.getConfiguration() );
     }