瀏覽代碼

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
tags/archiva-1.4-M1
Olivier Lamy 12 年之前
父節點
當前提交
1032b3d5d1

+ 8
- 2
archiva-modules/archiva-web/archiva-webdav/pom.xml 查看文件

@@ -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>

+ 36
- 11
archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/RepositoryServlet.java 查看文件

@@ -19,6 +19,10 @@ package org.apache.maven.archiva.webdav;
* 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.jackrabbit.webdav.server.AbstractWebdavServlet;
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 class RepositoryServlet
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 @@ public class RepositoryServlet
}

public synchronized void initServers( ServletConfig servletConfig )
throws RepositoryAdminException
{
WebApplicationContext wac =
WebApplicationContextUtils.getRequiredWebApplicationContext( servletConfig.getServletContext() );
@@ -163,9 +176,11 @@ public class RepositoryServlet
configuration = wac.getBean( "archivaConfiguration#default", ArchivaConfiguration.class );
configuration.addListener( this );

repositoryMap = configuration.getConfiguration().getManagedRepositoriesAsMap();
managedRepositoryAdmin = wac.getBean( ManagedRepositoryAdmin.class );

repositoryMap = managedRepositoryAdmin.getManagedRepositoriesAsMap();

for ( ManagedRepositoryConfiguration repo : repositoryMap.values() )
for ( ManagedRepository repo : repositoryMap.values() )
{
File repoDir = new File( repo.getLocation() );

@@ -180,7 +195,7 @@ public class RepositoryServlet
}
}

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 class RepositoryServlet
{
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 @@ public class RepositoryServlet
}
}

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 );
}

+ 3
- 1
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/AbstractRepositoryServletTestCase.java 查看文件

@@ -26,6 +26,7 @@ import com.meterware.servletunit.ServletUnitClient;
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 @@ public abstract class AbstractRepositoryServletTestCase
}

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.",

+ 3
- 2
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletTest.java 查看文件

@@ -19,6 +19,7 @@ package org.apache.maven.archiva.webdav;
* 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 class RepositoryServletTest
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 class RepositoryServletTest
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() );


+ 13
- 4
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/UnauthenticatedRepositoryServlet.java 查看文件

@@ -19,10 +19,12 @@ package org.apache.maven.archiva.webdav;
* 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 );
}
}

+ 5
- 0
pom.xml 查看文件

@@ -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>

Loading…
取消
儲存