diff options
author | Joakim Erdfelt <joakime@apache.org> | 2007-10-11 00:14:43 +0000 |
---|---|---|
committer | Joakim Erdfelt <joakime@apache.org> | 2007-10-11 00:14:43 +0000 |
commit | 731955abe900adcae2711289fcbdfba295840b16 (patch) | |
tree | 0b87a46fc39fc75fdd6de1ec33fa65eec3360ed4 | |
parent | 1e08c78cada423ff532fa66c2b2f94fd28ae1666 (diff) | |
download | archiva-731955abe900adcae2711289fcbdfba295840b16.tar.gz archiva-731955abe900adcae2711289fcbdfba295840b16.zip |
[MRM-493] Downloaded artifacts are stored in incorrect archiva-managed repository
Fixed by reseting dav servers on configuration save properly.
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@583646 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java index da902e58a..3ea6931b2 100644 --- a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java +++ b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java @@ -20,7 +20,8 @@ package org.apache.maven.archiva.web.repository; */ import org.apache.maven.archiva.configuration.ArchivaConfiguration; -import org.apache.maven.archiva.configuration.ConfigurationNames; +import org.apache.maven.archiva.configuration.ConfigurationEvent; +import org.apache.maven.archiva.configuration.ConfigurationListener; import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.security.ArchivaRoleConstants; import org.codehaus.plexus.redback.authentication.AuthenticationException; @@ -32,21 +33,21 @@ import org.codehaus.plexus.redback.policy.MustChangePasswordException; import org.codehaus.plexus.redback.system.SecuritySession; import org.codehaus.plexus.redback.system.SecuritySystem; import org.codehaus.plexus.redback.xwork.filter.authentication.HttpAuthenticator; -import org.codehaus.plexus.registry.Registry; -import org.codehaus.plexus.registry.RegistryListener; import org.codehaus.plexus.webdav.DavServerComponent; import org.codehaus.plexus.webdav.DavServerException; +import org.codehaus.plexus.webdav.DavServerManager; import org.codehaus.plexus.webdav.servlet.DavServerRequest; import org.codehaus.plexus.webdav.servlet.multiplexed.MultiplexedWebDavServlet; import org.codehaus.plexus.webdav.util.WebdavMethodUtil; +import java.io.File; +import java.io.IOException; +import java.util.Map; + import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.util.Map; /** * RepositoryServlet @@ -56,7 +57,7 @@ import java.util.Map; */ public class RepositoryServlet extends MultiplexedWebDavServlet - implements RegistryListener + implements ConfigurationListener { private SecuritySystem securitySystem; @@ -78,7 +79,7 @@ public class RepositoryServlet audit = (AuditLog) lookup( AuditLog.ROLE ); configuration = (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName() ); - configuration.addChangeListener( this ); + configuration.addListener( this ); repositoryMap = configuration.getConfiguration().getManagedRepositoriesAsMap(); } @@ -206,19 +207,38 @@ public class RepositoryServlet return true; } - - public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue ) + + public void configurationEvent( ConfigurationEvent event ) { - // nothing to do + if( event.getType() == ConfigurationEvent.SAVED ) + { + initRepositories(); + } } - public synchronized void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue ) + private void initRepositories() { - if ( ConfigurationNames.isManagedRepositories( propertyName ) ) + synchronized ( repositoryMap ) { - synchronized ( repositoryMap ) + repositoryMap.clear(); + repositoryMap.putAll( configuration.getConfiguration().getManagedRepositoriesAsMap() ); + } + + DavServerManager davManager = getDavManager(); + + synchronized ( davManager ) + { + // Clear out the old servers. + davManager.removeAllServers(); + + // Create new servers. + try + { + initServers( getServletConfig() ); + } + catch ( DavServerException e ) { - repositoryMap.clear(); + log( "Unable to init servers: " + e.getMessage(), e ); } } } |