start using new repo admin module in webdav : need some other refactoring to remove it completely

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1166148 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Olivier Lamy 2011-09-07 12:18:55 +00:00
parent 2a795aa6bf
commit 1032b3d5d1
6 changed files with 68 additions and 20 deletions

View File

@ -39,16 +39,20 @@
<groupId>org.apache.archiva</groupId>
<artifactId>audit</artifactId>
</dependency>
<dependency>
<groupId>org.apache.archiva</groupId>
<artifactId>archiva-repository-scanner</artifactId>
</dependency>
<dependency>
<groupId>org.apache.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
<!-- TODO uncomment when repository admin will be finished
<!-- should be runtime but currently not possible due ConfigurationListener
<scope>runtime</scope>
-->
</dependency>
<dependency>
<groupId>org.apache.archiva</groupId>
<artifactId>archiva-repository-scanner</artifactId>
<artifactId>archiva-repository-admin</artifactId>
</dependency>
<dependency>
<groupId>org.apache.archiva</groupId>
@ -166,6 +170,8 @@
<argLine>-Xmx512m -Xms512m -client</argLine>
<systemPropertyVariables>
<appserver.base>${basedir}/target/appserver-base</appserver.base>
<plexus.home>${project.build.outputDirectory}</plexus.home>
<java.io.tmpdir>${project.build.outputDirectory}</java.io.tmpdir>
</systemPropertyVariables>
<forkMode>${webdav.forkMode}</forkMode>
</configuration>

View File

@ -19,6 +19,10 @@
* under the License.
*/
import org.apache.archiva.admin.repository.RepositoryAdminException;
import org.apache.archiva.admin.repository.managed.ManagedRepository;
import org.apache.archiva.admin.repository.managed.ManagedRepositoryAdmin;
import org.apache.archiva.security.ServletAuthenticator;
import org.apache.jackrabbit.webdav.DavException;
import org.apache.jackrabbit.webdav.DavLocatorFactory;
import org.apache.jackrabbit.webdav.DavMethods;
@ -34,8 +38,6 @@
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.ConfigurationEvent;
import org.apache.maven.archiva.configuration.ConfigurationListener;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.archiva.security.ServletAuthenticator;
import org.codehaus.redback.integration.filter.authentication.HttpAuthenticator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -62,7 +64,9 @@ public class RepositoryServlet
private ArchivaConfiguration configuration;
private Map<String, ManagedRepositoryConfiguration> repositoryMap;
private ManagedRepositoryAdmin managedRepositoryAdmin;
private Map<String, ManagedRepository> repositoryMap;
private DavLocatorFactory locatorFactory;
@ -76,7 +80,15 @@ public void init( javax.servlet.ServletConfig servletConfig )
throws ServletException
{
super.init( servletConfig );
initServers( servletConfig );
try
{
initServers( servletConfig );
}
catch ( RepositoryAdminException e )
{
log.error( e.getMessage(), e );
throw new ServletException( e.getMessage(), e );
}
}
/**
@ -156,6 +168,7 @@ else if ( e.getCause() != null )
}
public synchronized void initServers( ServletConfig servletConfig )
throws RepositoryAdminException
{
WebApplicationContext wac =
WebApplicationContextUtils.getRequiredWebApplicationContext( servletConfig.getServletContext() );
@ -163,9 +176,11 @@ public synchronized void initServers( ServletConfig servletConfig )
configuration = wac.getBean( "archivaConfiguration#default", ArchivaConfiguration.class );
configuration.addListener( this );
repositoryMap = configuration.getConfiguration().getManagedRepositoriesAsMap();
managedRepositoryAdmin = wac.getBean( ManagedRepositoryAdmin.class );
for ( ManagedRepositoryConfiguration repo : repositoryMap.values() )
repositoryMap = managedRepositoryAdmin.getManagedRepositoriesAsMap();
for ( ManagedRepository repo : repositoryMap.values() )
{
File repoDir = new File( repo.getLocation() );
@ -180,7 +195,7 @@ public synchronized void initServers( ServletConfig servletConfig )
}
}
resourceFactory = wac.getBean("davResourceFactory#archiva", DavResourceFactory.class );
resourceFactory = wac.getBean( "davResourceFactory#archiva", DavResourceFactory.class );
locatorFactory = new ArchivaDavLocatorFactory();
ServletAuthenticator servletAuth = wac.getBean( ServletAuthenticator.class );
@ -195,16 +210,25 @@ public void configurationEvent( ConfigurationEvent event )
{
if ( event.getType() == ConfigurationEvent.SAVED )
{
initRepositories();
try
{
initRepositories();
}
catch ( RepositoryAdminException e )
{
log.error( e.getMessage(), e );
throw new RuntimeException( e.getMessage(), e );
}
}
}
private void initRepositories()
throws RepositoryAdminException
{
synchronized ( repositoryMap )
{
repositoryMap.clear();
repositoryMap.putAll( configuration.getConfiguration().getManagedRepositoriesAsMap() );
repositoryMap.putAll( managedRepositoryAdmin.getManagedRepositoriesAsMap() );
}
synchronized ( reloadLock )
@ -213,11 +237,12 @@ private void initRepositories()
}
}
public synchronized ManagedRepositoryConfiguration getRepository( String prefix )
public synchronized ManagedRepository getRepository( String prefix )
throws RepositoryAdminException
{
if ( repositoryMap.isEmpty() )
{
repositoryMap.putAll( configuration.getConfiguration().getManagedRepositoriesAsMap() );
repositoryMap.putAll( managedRepositoryAdmin.getManagedRepositoriesAsMap() );
}
return repositoryMap.get( prefix );
}

View File

@ -26,6 +26,7 @@
import junit.framework.Assert;
import junit.framework.TestCase;
import net.sf.ehcache.CacheManager;
import org.apache.archiva.admin.repository.managed.ManagedRepository;
import org.apache.commons.io.FileUtils;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
@ -173,8 +174,9 @@ protected void assertFileContents( String expectedContents, File repoRoot, Strin
}
protected void assertRepositoryValid( RepositoryServlet servlet, String repoId )
throws Exception
{
ManagedRepositoryConfiguration repository = servlet.getRepository( repoId );
ManagedRepository repository = servlet.getRepository( repoId );
assertNotNull( "Archiva Managed Repository id:<" + repoId + "> should exist.", repository );
File repoRoot = new File( repository.getLocation() );
assertTrue( "Archiva Managed Repository id:<" + repoId + "> should have a valid location on disk.",

View File

@ -19,6 +19,7 @@
* under the License.
*/
import org.apache.archiva.admin.repository.managed.ManagedRepository;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
@ -67,7 +68,7 @@ public void testGetRepositoryAfterDelete()
c.removeManagedRepository( c.findManagedRepositoryById( REPOID_INTERNAL ) );
saveConfiguration( archivaConfiguration );
ManagedRepositoryConfiguration repository = servlet.getRepository( REPOID_INTERNAL );
ManagedRepository repository = servlet.getRepository( REPOID_INTERNAL );
assertNull( repository );
}
@ -92,7 +93,7 @@ public void testGetRepositoryAfterAdd()
c.addManagedRepository( repo );
saveConfiguration( archivaConfiguration );
ManagedRepositoryConfiguration repository = servlet.getRepository( NEW_REPOSITORY_ID );
ManagedRepository repository = servlet.getRepository( NEW_REPOSITORY_ID );
assertNotNull( repository );
assertEquals( NEW_REPOSITORY_NAME, repository.getName() );

View File

@ -19,10 +19,12 @@
* under the License.
*/
import org.apache.archiva.admin.repository.RepositoryAdminException;
import javax.servlet.ServletConfig;
/**
* UnauthenticatedRepositoryServlet
* UnauthenticatedRepositoryServlet
*
* @version $Id$
*/
@ -32,9 +34,16 @@ public class UnauthenticatedRepositoryServlet
@Override
public synchronized void initServers( ServletConfig servletConfig )
{
super.initServers(servletConfig);
try
{
super.initServers( servletConfig );
}
catch ( RepositoryAdminException e )
{
throw new RuntimeException( e.getMessage(), e );
}
UnauthenticatedDavSessionProvider sessionProvider = new UnauthenticatedDavSessionProvider();
setDavSessionProvider(sessionProvider);
setDavSessionProvider( sessionProvider );
}
}

View File

@ -1490,6 +1490,11 @@
<version>2.9</version>
<configuration>
<redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>
<systemPropertyVariables>
<appserver.base>${basedir}/target/appserver-base</appserver.base>
<plexus.home>${project.build.outputDirectory}</plexus.home>
<java.io.tmpdir>${project.build.outputDirectory}</java.io.tmpdir>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>