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 2008/03/31 07:56:10 UTC

svn commit: r642890 - in /archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src: main/java/org/apache/maven/archiva/configuration/ test/conf/ test/java/org/apache/maven/archiva/configuration/

Author: brett
Date: Sun Mar 30 22:56:09 2008
New Revision: 642890

URL: http://svn.apache.org/viewvc?rev=642890&view=rev
Log:
[MRM-758] cron expressions with a comma are not being scheduled after configuration save
Merged from: r642886

Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
    archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/conf/escape-cron-expressions.xml
    archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java?rev=642890&r1=642889&r2=642890&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java Sun Mar 30 22:56:09 2008
@@ -145,7 +145,7 @@
         if ( configuration == null )
         {
             configuration = load();
-            configuration = processExpressions( configuration );
+            configuration = unescapeExpressions( configuration );
         }
 
         return configuration;
@@ -432,19 +432,7 @@
         }
 
         // escape all cron expressions to handle ','
-        for ( Iterator<ManagedRepositoryConfiguration> i = configuration.getManagedRepositories().iterator(); i
-            .hasNext(); )
-        {
-            ManagedRepositoryConfiguration c = i.next();
-            c.setRefreshCronExpression( escapeCronExpression( c.getRefreshCronExpression() ) );
-        }
-
-        if ( configuration.getDatabaseScanning() != null )
-        {
-            configuration.getDatabaseScanning().setCronExpression(
-                                                                   escapeCronExpression( configuration
-                                                                       .getDatabaseScanning().getCronExpression() ) );
-        }
+        escapeCronExpressions( configuration );
 
         // [MRM-661] Due to a bug in the modello registry writer, we need to take these out by hand. They'll be put back by the writer.
         if ( configuration.getManagedRepositories().isEmpty() )
@@ -493,9 +481,23 @@
         new ConfigurationRegistryWriter().write( configuration, section );
         section.save();
 
+        this.configuration = unescapeExpressions( configuration );
+
         triggerEvent( ConfigurationEvent.SAVED );
+    }
+
+    private void escapeCronExpressions( Configuration configuration )
+    {
+        for ( ManagedRepositoryConfiguration c : (List<ManagedRepositoryConfiguration>) configuration.getManagedRepositories() )
+        {
+            c.setRefreshCronExpression( escapeCronExpression( c.getRefreshCronExpression() ) );
+        }
 
-        this.configuration = processExpressions( configuration );
+        DatabaseScanningConfiguration scanning = configuration.getDatabaseScanning();
+        if ( scanning != null )
+        {
+            scanning.setCronExpression( escapeCronExpression( scanning.getCronExpression() ) );
+        }
     }
 
     private Registry createDefaultConfigurationFile()
@@ -576,14 +578,7 @@
         ConfigurationEvent evt = new ConfigurationEvent( type );
         for ( ConfigurationListener listener : listeners )
         {
-            try
-            {
-                listener.configurationEvent( evt );
-            }
-            catch ( Throwable t )
-            {
-                log.warn( "Unable to notify of saved configuration event.", t );
-            }
+            listener.configurationEvent( evt );
         }
     }
 
@@ -678,7 +673,7 @@
         return StringUtils.replace( cronExpression, ",", "\\," );
     }
 
-    private Configuration processExpressions( Configuration config )
+    private Configuration unescapeExpressions( Configuration config )
     {
         // TODO: for commons-configuration 1.3 only
         for ( Iterator<ManagedRepositoryConfiguration> i = config.getManagedRepositories().iterator(); i.hasNext(); )

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/conf/escape-cron-expressions.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/conf/escape-cron-expressions.xml?rev=642890&r1=642889&r2=642890&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/conf/escape-cron-expressions.xml (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/conf/escape-cron-expressions.xml Sun Mar 30 22:56:09 2008
@@ -26,7 +26,7 @@
       <location>file://${appserver.base}/repositories/internal</location>
       <releases>false</releases>
       <snapshots>true</snapshots>
-      <refreshCronExpression>0 0\,30 * * ?</refreshCronExpression>
+      <refreshCronExpression>0 0\,30 * * * ?</refreshCronExpression>
     </managedRepository>
   </managedRepositories>
   <databaseScanning>

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java?rev=642890&r1=642889&r2=642890&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java Sun Mar 30 22:56:09 2008
@@ -618,7 +618,7 @@
         userFile.getParentFile().mkdirs();
         FileUtils.writeStringToFile( userFile, "<configuration/>", null );
 
-        ArchivaConfiguration archivaConfiguration =
+        final ArchivaConfiguration archivaConfiguration =
             (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-cron-expressions" );
 
         Configuration configuration = archivaConfiguration.getConfiguration();
@@ -626,9 +626,27 @@
         ManagedRepositoryConfiguration repository =
             (ManagedRepositoryConfiguration) configuration.getManagedRepositories().get( 0 );
 
-        assertEquals( "check cron expression", "0 0,30 * * ?", repository.getRefreshCronExpression().trim() );
+        assertEquals( "check cron expression", "0 0,30 * * * ?", repository.getRefreshCronExpression().trim() );
 
         configuration.getDatabaseScanning().setCronExpression( "0 0,15 0 * * ?" );
+
+        // add a test listener to confirm it doesn't see the escaped format. We don't need to test the number of calls,
+        // etc. as it's done in other tests
+        archivaConfiguration.addListener( new ConfigurationListener()
+        {
+            public void configurationEvent( ConfigurationEvent event )
+            {
+                assertEquals( ConfigurationEvent.SAVED, event.getType() );
+
+                Configuration configuration = archivaConfiguration.getConfiguration();
+
+                ManagedRepositoryConfiguration repository =
+                    (ManagedRepositoryConfiguration) configuration.getManagedRepositories().get( 0 );
+
+                assertEquals( "check cron expression", "0 0,15 0 * * ?",
+                              configuration.getDatabaseScanning().getCronExpression() );
+            }
+        } );
 
         archivaConfiguration.save( configuration );