aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt <joakime@apache.org>2007-10-11 00:14:43 +0000
committerJoakim Erdfelt <joakime@apache.org>2007-10-11 00:14:43 +0000
commit731955abe900adcae2711289fcbdfba295840b16 (patch)
tree0b87a46fc39fc75fdd6de1ec33fa65eec3360ed4
parent1e08c78cada423ff532fa66c2b2f94fd28ae1666 (diff)
downloadarchiva-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.java50
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 );
}
}
}