You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2007/02/12 06:34:24 UTC

svn commit: r506292 - in /maven/archiva/trunk: archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/ archiva-configuration/src/main/mdo/ archiva-core/src/main/java/org/apache/maven/archiva/repositories/ archiva-core/src/main/java/...

Author: brett
Date: Sun Feb 11 21:34:22 2007
New Revision: 506292

URL: http://svn.apache.org/viewvc?view=rev&rev=506292
Log:
more practical use of configuration change listeners

Modified:
    maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
    maven/archiva/trunk/archiva-configuration/src/main/mdo/configuration.mdo
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositories.java
    maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java
    maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java

Modified: maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java?view=diff&rev=506292&r1=506291&r2=506292
==============================================================================
--- maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java (original)
+++ maven/archiva/trunk/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java Sun Feb 11 21:34:22 2007
@@ -69,17 +69,23 @@
 
     public void addChangeListener( RegistryListener listener )
     {
-        registry.addChangeListener( listener );
-    }
-
-    public synchronized void notifyOfConfigurationChange( Registry registry )
-    {
-        configuration = null;
+        Registry section = registry.getSection( KEY );
+        section.addChangeListener( listener );
     }
 
     public void initialize()
         throws InitializationException
     {
         registry.addChangeListener( this );
+    }
+
+    public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+    {
+        // nothing to do here
+    }
+
+    public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+    {
+        configuration = null;
     }
 }

Modified: maven/archiva/trunk/archiva-configuration/src/main/mdo/configuration.mdo
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-configuration/src/main/mdo/configuration.mdo?view=diff&rev=506292&r1=506291&r2=506292
==============================================================================
--- maven/archiva/trunk/archiva-configuration/src/main/mdo/configuration.mdo (original)
+++ maven/archiva/trunk/archiva-configuration/src/main/mdo/configuration.mdo Sun Feb 11 21:34:22 2007
@@ -156,7 +156,7 @@
         for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
         {
             RepositoryConfiguration repository = (RepositoryConfiguration) i.next();
-            if ( repository.getUrlName().equals( urlName ) )
+            if ( urlName.equals( repository.getUrlName() ) )
             {
                 return repository;
             }
@@ -169,7 +169,7 @@
         for ( java.util.Iterator i = getRepositories().iterator(); i.hasNext(); )
         {
             RepositoryConfiguration repository = (RepositoryConfiguration) i.next();
-            if ( repository.getId().equals( id ) )
+            if ( id.equals( repository.getId() ) )
             {
                 return repository;
             }
@@ -182,7 +182,7 @@
         for ( java.util.Iterator i = getSyncedRepositories().iterator(); i.hasNext(); )
         {
             SyncedRepositoryConfiguration repository = (SyncedRepositoryConfiguration) i.next();
-            if ( repository.getId().equals( id ) )
+            if ( id.equals( repository.getId() ) )
             {
                 return repository;
             }
@@ -195,7 +195,7 @@
         for ( java.util.Iterator i = getProxiedRepositories().iterator(); i.hasNext(); )
         {
             ProxiedRepositoryConfiguration repository = (ProxiedRepositoryConfiguration) i.next();
-            if ( repository.getId().equals( id ) )
+            if ( id.equals( repository.getId() ) )
             {
                 return repository;
             }

Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositories.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositories.java?view=diff&rev=506292&r1=506291&r2=506292
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositories.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/repositories/DefaultActiveManagedRepositories.java Sun Feb 11 21:34:22 2007
@@ -36,6 +36,7 @@
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
 import org.codehaus.plexus.cache.Cache;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.codehaus.plexus.registry.Registry;
@@ -53,6 +54,7 @@
  * @plexus.component role="org.apache.maven.archiva.repositories.ActiveManagedRepositories"
  */
 public class DefaultActiveManagedRepositories
+    extends AbstractLogEnabled
     implements ActiveManagedRepositories, Initializable, RegistryListener
 {
     /**
@@ -267,8 +269,22 @@
         return path;
     }
 
-    public void notifyOfConfigurationChange( Registry registry )
+    public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue )
     {
-        configureSelf( archivaConfiguration.getConfiguration() );
+        // nothing to do
+    }
+
+    public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+    {
+        if ( propertyName.startsWith( "repositories" ) || propertyName.startsWith( "localRepository" ) )
+        {
+            getLogger().debug( "Triggering managed repository configuration change with " + propertyName + " set to " +
+                propertyValue );
+            configureSelf( archivaConfiguration.getConfiguration() );
+        }
+        else
+        {
+            getLogger().debug( "Not triggering managed repository configuration change with " + propertyName );
+        }
     }
 }

Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java?view=diff&rev=506292&r1=506291&r2=506292
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/DefaultRepositoryTaskScheduler.java Sun Feb 11 21:34:22 2007
@@ -92,7 +92,7 @@
 
         try
         {
-            scheduleJobs( configuration );
+            scheduleJobs( configuration.getIndexPath(), configuration.getIndexerCronExpression() );
         }
         catch ( ParseException e )
         {
@@ -104,16 +104,15 @@
         }
     }
 
-    private void scheduleJobs( Configuration configuration )
+    private void scheduleJobs( String indexPath, String indexerCronExpression )
         throws ParseException, SchedulerException
     {
-        if ( configuration.getIndexPath() != null )
+        if ( indexPath != null )
         {
             JobDetail jobDetail = createJobDetail( INDEXER_JOB );
 
-            getLogger().info( "Scheduling indexer: " + configuration.getIndexerCronExpression() );
-            CronTrigger trigger =
-                new CronTrigger( INDEXER_JOB + "Trigger", DISCOVERER_GROUP, configuration.getIndexerCronExpression() );
+            getLogger().info( "Scheduling indexer: " + indexerCronExpression );
+            CronTrigger trigger = new CronTrigger( INDEXER_JOB + "Trigger", DISCOVERER_GROUP, indexerCronExpression );
             scheduler.scheduleJob( jobDetail, trigger );
 
             try
@@ -156,30 +155,47 @@
         }
     }
 
-    public void notifyOfConfigurationChange( Registry registry )
+
+    public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue )
     {
-        try
-        {
-            stop();
-        }
-        catch ( StoppingException e )
-        {
-            getLogger().warn( "Error stopping task scheduler: " + e.getMessage(), e );
-        }
+        // nothing to do
+    }
 
-        try
-        {
-            scheduleJobs( archivaConfiguration.getConfiguration() );
-        }
-        catch ( ParseException e )
+    public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+    {
+        if ( "indexPath".equals( propertyName ) || "indexerCronExpression".equals( propertyName ) )
         {
-            getLogger().error(
-                "Error restarting task scheduler after configuration change, due to configuration error: " +
-                    e.getMessage(), e );
+            getLogger().debug( "Restarting task scheduler with new configuration after property change: " +
+                propertyName + " to " + propertyValue );
+            try
+            {
+                stop();
+            }
+            catch ( StoppingException e )
+            {
+                getLogger().warn( "Error stopping task scheduler: " + e.getMessage(), e );
+            }
+
+            try
+            {
+                Configuration configuration = archivaConfiguration.getConfiguration();
+                scheduleJobs( configuration.getIndexPath(), configuration.getIndexerCronExpression() );
+            }
+            catch ( ParseException e )
+            {
+                getLogger().error(
+                    "Error restarting task scheduler after configuration change, due to configuration error: " +
+                        e.getMessage(), e );
+            }
+            catch ( SchedulerException e )
+            {
+                getLogger().error( "Error restarting task scheduler after configuration change: " + e.getMessage(), e );
+            }
         }
-        catch ( SchedulerException e )
+        else
         {
-            getLogger().error( "Error restarting task scheduler after configuration change: " + e.getMessage(), e );
+            getLogger().debug(
+                "Not restarting task scheduler with new configuration after property change: " + propertyName );
         }
     }
 

Modified: maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java?view=diff&rev=506292&r1=506291&r2=506292
==============================================================================
--- maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java (original)
+++ maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java Sun Feb 11 21:34:22 2007
@@ -90,7 +90,6 @@
         archivaConfiguration = (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName() );
         configuration = archivaConfiguration.getConfiguration();
         archivaConfiguration.addChangeListener( this );
-
     }
 
     public void initServers( ServletConfig servletConfig )
@@ -205,19 +204,34 @@
         return true;
     }
 
-    public void notifyOfConfigurationChange( Registry registry )
+    public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue )
     {
-        configuration = archivaConfiguration.getConfiguration();
+        // nothing to do
+    }
 
-        getDavManager().removeAllServers();
+    public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+    {
+        configuration = archivaConfiguration.getConfiguration();
 
-        try
+        if ( propertyName.startsWith( "repositories" ) )
         {
-            initServers( getServletConfig() );
+            log( "Triggering managed repository configuration change with " + propertyName + " set to " +
+                propertyValue );
+            getDavManager().removeAllServers();
+
+            try
+            {
+                initServers( getServletConfig() );
+            }
+            catch ( DavServerException e )
+            {
+                log( "Error restarting WebDAV server after configuration change - service disabled: " + e.getMessage(),
+                     e );
+            }
         }
-        catch ( DavServerException e )
+        else
         {
-            log( "Error restarting WebDAV server after configuration change - service disabled: " + e.getMessage(), e );
+            log( "Not triggering managed repository configuration change with " + propertyName );
         }
     }
 }