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


Reply via email to