Author: joakime
Date: Wed Oct 10 17:14:43 2007
New Revision: 583646
URL: http://svn.apache.org/viewvc?rev=583646&view=rev
Log:
[MRM-493] Downloaded artifacts are stored in incorrect archiva-managed
repository
Fixed by reseting dav servers on configuration save properly.
Modified:
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java
Modified:
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java?rev=583646&r1=583645&r2=583646&view=diff
==============================================================================
---
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java
(original)
+++
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java
Wed Oct 10 17:14:43 2007
@@ -20,7 +20,8 @@
*/
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.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 @@
*/
public class RepositoryServlet
extends MultiplexedWebDavServlet
- implements RegistryListener
+ implements ConfigurationListener
{
private SecuritySystem securitySystem;
@@ -78,7 +79,7 @@
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 @@
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 );
}
}
}