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/08/03 16:17:01 UTC

svn commit: r562474 [2/2] - in /maven/archiva/trunk: archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/ archiva-base/archiva-configuration/src/main/mdo/ archiva-base/archiva-configuration/src/test/conf/ archiva-bas...

Modified: maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java Fri Aug  3 07:16:58 2007
@@ -19,8 +19,8 @@
  * under the License.
  */
 
-import org.apache.commons.io.FileUtils;
 import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
 
 import java.io.File;
 import java.util.List;
@@ -33,32 +33,55 @@
 public class ArchivaConfigurationTest
     extends PlexusTestCase
 {
-    public void testDefaults()
+    public void testGetConfigurationFromRegistryWithASingleNamedConfigurationResource()
         throws Exception
     {
         ArchivaConfiguration archivaConfiguration =
-            (ArchivaConfiguration) lookup( ArchivaConfiguration.class, "test-defaults" );
+            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-configuration" );
 
         Configuration configuration = archivaConfiguration.getConfiguration();
+        assertConfiguration( configuration );
+        assertEquals( "check network proxies", 1, configuration.getNetworkProxies().size() );
+
+        RepositoryConfiguration repository =
+            (RepositoryConfiguration) configuration.getRepositories().iterator().next();
 
-        // check default configuration
-        assertNotNull( "check configuration returned", configuration );
-        assertTrue( "check configuration has default elements", configuration.getRepositories().isEmpty() );
+        assertEquals( "check managed repositories", "file://${appserver.base}/repositories/internal",
+                      repository.getUrl() );
+        assertEquals( "check managed repositories", "Archiva Managed Internal Repository", repository.getName() );
+        assertEquals( "check managed repositories", "internal", repository.getId() );
+        assertEquals( "check managed repositories", "default", repository.getLayout() );
+        assertTrue( "check managed repositories", repository.isIndexed() );
     }
 
-    public void testGetConfiguration()
+    public void testGetConfigurationFromDefaults()
         throws Exception
     {
         ArchivaConfiguration archivaConfiguration =
-            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-configuration" );
-
-        FileTypes filetypes = (FileTypes) lookup( FileTypes.class.getName() );
+            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-defaults" );
 
         Configuration configuration = archivaConfiguration.getConfiguration();
+        assertConfiguration( configuration );
+        assertEquals( "check network proxies", 0, configuration.getNetworkProxies().size() );
+
+        RepositoryConfiguration repository =
+            (RepositoryConfiguration) configuration.getRepositories().iterator().next();
+
+        assertEquals( "check managed repositories", "file://${appserver.base}/data/repositories/internal",
+                      repository.getUrl() );
+        assertEquals( "check managed repositories", "Archiva Managed Internal Repository", repository.getName() );
+        assertEquals( "check managed repositories", "internal", repository.getId() );
+        assertEquals( "check managed repositories", "default", repository.getLayout() );
+        assertTrue( "check managed repositories", repository.isIndexed() );
+    }
+
+    private void assertConfiguration( Configuration configuration )
+        throws Exception
+    {
+        FileTypes filetypes = (FileTypes) lookup( FileTypes.class.getName() );
 
         assertEquals( "check repositories", 4, configuration.getRepositories().size() );
         assertEquals( "check proxy connectors", 2, configuration.getProxyConnectors().size() );
-        assertEquals( "check network proxies", 1, configuration.getNetworkProxies().size() );
 
         RepositoryScanningConfiguration repoScanning = configuration.getRepositoryScanning();
         assertNotNull( "check repository scanning", repoScanning );
@@ -75,37 +98,57 @@
         assertEquals( "check unprocessed consumers", 6, dbScanning.getUnprocessedConsumers().size() );
         assertEquals( "check cleanup consumers", 3, dbScanning.getCleanupConsumers().size() );
 
-        RepositoryConfiguration repository =
-            (RepositoryConfiguration) configuration.getRepositories().iterator().next();
-
-        assertEquals( "check managed repositories", "file://${appserver.base}/repositories/internal",
-                      repository.getUrl() );
-        assertEquals( "check managed repositories", "Archiva Managed Internal Repository", repository.getName() );
-        assertEquals( "check managed repositories", "internal", repository.getId() );
-        assertEquals( "check managed repositories", "default", repository.getLayout() );
-        assertTrue( "check managed repositories", repository.isIndexed() );
-
-        WebappConfiguration webapp = (WebappConfiguration) configuration.getWebapp();
+        WebappConfiguration webapp = configuration.getWebapp();
         assertNotNull( "check webapp", webapp );
 
-        UserInterfaceOptions ui = (UserInterfaceOptions) webapp.getUi();
+        UserInterfaceOptions ui = webapp.getUi();
         assertNotNull( "check webapp ui", ui );
         assertTrue( "check showFindArtifacts", ui.isShowFindArtifacts() );
         assertTrue( "check appletFindEnabled", ui.isAppletFindEnabled() );
     }
 
+    public void testGetConfigurationFromRegistryWithTwoConfigurationResources()
+        throws Exception
+    {
+        ArchivaConfiguration archivaConfiguration =
+            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-configuration-both" );
+
+        Configuration configuration = archivaConfiguration.getConfiguration();
+
+        // from base
+        assertEquals( "check repositories", 4, configuration.getRepositories().size() );
+        // from user
+        assertEquals( "check proxy connectors", 2, configuration.getProxyConnectors().size() );
+
+        WebappConfiguration webapp = configuration.getWebapp();
+        assertNotNull( "check webapp", webapp );
+
+        UserInterfaceOptions ui = webapp.getUi();
+        assertNotNull( "check webapp ui", ui );
+        // from base
+        assertFalse( "check showFindArtifacts", ui.isShowFindArtifacts() );
+        // from user
+        assertFalse( "check appletFindEnabled", ui.isAppletFindEnabled() );
+    }
+
     public void testGetConfigurationSystemOverride()
         throws Exception
     {
         ArchivaConfiguration archivaConfiguration =
             (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-configuration" );
 
-        System.setProperty( "org.apache.maven.archiva.localRepository", "system-repository" );
-
-        Configuration configuration = archivaConfiguration.getConfiguration();
+        System.setProperty( "org.apache.maven.archiva.webapp.ui.appletFindEnabled", "false" );
 
-        //        assertEquals( "check localRepository", "system-repository", configuration.getLocalRepository() );
-        //        assertEquals( "check indexPath", ".index", configuration.getIndexPath() );
+        try
+        {
+            Configuration configuration = archivaConfiguration.getConfiguration();
+
+            assertFalse( "check boolean", configuration.getWebapp().getUi().isAppletFindEnabled() );
+        }
+        finally
+        {
+            System.getProperties().remove( "org.apache.maven.archiva.webapp.ui.appletFindEnabled" );
+        }
     }
 
     public void testStoreConfiguration()
@@ -117,13 +160,16 @@
 
         // TODO: remove with commons-configuration 1.4
         file.getParentFile().mkdirs();
-        org.codehaus.plexus.util.FileUtils.fileWrite( file.getAbsolutePath(), "<configuration/>" );
+        FileUtils.fileWrite( file.getAbsolutePath(), "<configuration/>" );
 
         ArchivaConfiguration archivaConfiguration =
             (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-save" );
 
         Configuration configuration = new Configuration();
-        //        configuration.setIndexPath( "index-path" );
+        configuration.setVersion( "1" );
+        configuration.setWebapp( new WebappConfiguration() );
+        configuration.getWebapp().setUi( new UserInterfaceOptions() );
+        configuration.getWebapp().getUi().setAppletFindEnabled( false );
 
         archivaConfiguration.save( configuration );
 
@@ -131,12 +177,12 @@
 
         // check it
         configuration = archivaConfiguration.getConfiguration();
-        //        assertEquals( "check value", "index-path", configuration.getIndexPath() );
+        assertFalse( "check value", configuration.getWebapp().getUi().isAppletFindEnabled() );
 
         // read it back
         archivaConfiguration = (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-read-saved" );
         configuration = archivaConfiguration.getConfiguration();
-        //        assertEquals( "check value", "index-path", configuration.getIndexPath() );
+        assertFalse( "check value", configuration.getWebapp().getUi().isAppletFindEnabled() );
     }
 
     public void testStoreConfigurationUser()
@@ -150,15 +196,45 @@
         userFile.delete();
         assertFalse( userFile.exists() );
 
-        // TODO: remove with commons-configuration 1.4
         userFile.getParentFile().mkdirs();
-        org.codehaus.plexus.util.FileUtils.fileWrite( userFile.getAbsolutePath(), "<configuration/>" );
+        FileUtils.fileWrite( userFile.getAbsolutePath(), "<configuration/>" );
+
+        ArchivaConfiguration archivaConfiguration =
+            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-save-user" );
+
+        Configuration configuration = new Configuration();
+        configuration.setWebapp( new WebappConfiguration() );
+        configuration.getWebapp().setUi( new UserInterfaceOptions() );
+        configuration.getWebapp().getUi().setAppletFindEnabled( false );
+
+        archivaConfiguration.save( configuration );
+
+        assertTrue( "Check file exists", userFile.exists() );
+        assertFalse( "Check file not created", baseFile.exists() );
+
+        // check it
+        configuration = archivaConfiguration.getConfiguration();
+        assertFalse( "check value", configuration.getWebapp().getUi().isAppletFindEnabled() );
+    }
+
+    public void testStoreConfigurationLoadedFromDefaults()
+        throws Exception
+    {
+        File baseFile = getTestFile( "target/test/test-file.xml" );
+        baseFile.delete();
+        assertFalse( baseFile.exists() );
+
+        File userFile = getTestFile( "target/test/test-file-user.xml" );
+        userFile.delete();
+        assertFalse( userFile.exists() );
 
         ArchivaConfiguration archivaConfiguration =
             (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-save-user" );
 
         Configuration configuration = new Configuration();
-        //        configuration.setIndexPath( "index-path" );
+        configuration.setWebapp( new WebappConfiguration() );
+        configuration.getWebapp().setUi( new UserInterfaceOptions() );
+        configuration.getWebapp().getUi().setAppletFindEnabled( false );
 
         archivaConfiguration.save( configuration );
 
@@ -167,7 +243,17 @@
 
         // check it
         configuration = archivaConfiguration.getConfiguration();
-        //        assertEquals( "check value", "index-path", configuration.getIndexPath() );
+        assertFalse( "check value", configuration.getWebapp().getUi().isAppletFindEnabled() );
+    }
+
+    public void testDefaultUserConfigFilename()
+        throws Exception
+    {
+        DefaultArchivaConfiguration archivaConfiguration =
+            (DefaultArchivaConfiguration) lookup( ArchivaConfiguration.class.getName() );
+
+        assertEquals( System.getProperty( "user.home" ) + "/.m2/archiva.xml",
+                      archivaConfiguration.getFilteredUserConfigFilename() );
     }
 
     public void testStoreConfigurationFallback()
@@ -181,15 +267,16 @@
         userFile.delete();
         assertFalse( userFile.exists() );
 
-        // TODO: remove with commons-configuration 1.4
         baseFile.getParentFile().mkdirs();
-        org.codehaus.plexus.util.FileUtils.fileWrite( baseFile.getAbsolutePath(), "<configuration/>" );
+        FileUtils.fileWrite( baseFile.getAbsolutePath(), "<configuration/>" );
 
         ArchivaConfiguration archivaConfiguration =
             (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-save-user" );
 
         Configuration configuration = new Configuration();
-        //        configuration.setIndexPath( "index-path" );
+        configuration.setWebapp( new WebappConfiguration() );
+        configuration.getWebapp().setUi( new UserInterfaceOptions() );
+        configuration.getWebapp().getUi().setAppletFindEnabled( false );
 
         archivaConfiguration.save( configuration );
 
@@ -198,36 +285,85 @@
 
         // check it
         configuration = archivaConfiguration.getConfiguration();
-        //        assertEquals( "check value", "index-path", configuration.getIndexPath() );
+        assertFalse( "check value", configuration.getWebapp().getUi().isAppletFindEnabled() );
     }
 
-    public void testRemoveProxiedRepositoryAndStoreConfiguration()
+    public void testStoreConfigurationFailsWhenReadFromBothLocations()
         throws Exception
     {
-        // MRM-300
+        File baseFile = getTestFile( "target/test/test-file.xml" );
+        baseFile.delete();
+        assertFalse( baseFile.exists() );
+
+        File userFile = getTestFile( "target/test/test-file-user.xml" );
+        userFile.delete();
+        assertFalse( userFile.exists() );
+
+        baseFile.getParentFile().mkdirs();
+        FileUtils.fileWrite( baseFile.getAbsolutePath(), "<configuration/>" );
+
+        userFile.getParentFile().mkdirs();
+        FileUtils.fileWrite( userFile.getAbsolutePath(), "<configuration/>" );
+
+        ArchivaConfiguration archivaConfiguration =
+            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-save-user" );
 
-        File src = getTestFile( "src/test/conf/with-proxied-repos.xml" );
-        File dest = getTestFile( "target/test/with-proxied-repos.xml" );
-        FileUtils.copyFile( src, dest );
+        Configuration configuration = new Configuration();
+        configuration.setWebapp( new WebappConfiguration() );
+        configuration.getWebapp().setUi( new UserInterfaceOptions() );
+        configuration.getWebapp().getUi().setAppletFindEnabled( false );
+
+        try
+        {
+            archivaConfiguration.save( configuration );
+            fail( "Configuration saving should not succeed if it was loaded from two locations" );
+        }
+        catch ( IndeterminateConfigurationException e )
+        {
+            assertTrue( true );
+        }
+    }
 
+    public void testConfigurationUpgradeFrom09()
+        throws Exception
+    {
         ArchivaConfiguration archivaConfiguration =
-            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-remove-proxied-repo" );
+            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-upgrade-09" );
 
+        // we just use the defaults when upgrading from 0.9 at this point.
         Configuration configuration = archivaConfiguration.getConfiguration();
-        //        configuration.getProxiedRepositories().remove( 0 );
+        assertConfiguration( configuration );
+        assertEquals( "check network proxies", 0, configuration.getNetworkProxies().size() );
 
-        archivaConfiguration.save( configuration );
+        RepositoryConfiguration repository =
+            (RepositoryConfiguration) configuration.getRepositories().iterator().next();
 
-        // check it
-        configuration = archivaConfiguration.getConfiguration();
-        //        assertEquals( 1, configuration.getProxiedRepositories().size() );
+        assertEquals( "check managed repositories", "file://${appserver.base}/data/repositories/internal",
+                      repository.getUrl() );
+        assertEquals( "check managed repositories", "Archiva Managed Internal Repository", repository.getName() );
+        assertEquals( "check managed repositories", "internal", repository.getId() );
+        assertEquals( "check managed repositories", "default", repository.getLayout() );
+        assertTrue( "check managed repositories", repository.isIndexed() );
+    }
 
-        release( archivaConfiguration );
+    public void testAutoDetectV1()
+        throws Exception
+    {
+        ArchivaConfiguration archivaConfiguration =
+            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-autodetect-v1" );
 
-        // read it back
-        archivaConfiguration =
-            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-read-back-remove-proxied-repo" );
-        configuration = archivaConfiguration.getConfiguration();
-        //        assertEquals( 1, configuration.getProxiedRepositories().size() );
+        Configuration configuration = archivaConfiguration.getConfiguration();
+        assertConfiguration( configuration );
+        assertEquals( "check network proxies", 1, configuration.getNetworkProxies().size() );
+
+        RepositoryConfiguration repository =
+            (RepositoryConfiguration) configuration.getRepositories().iterator().next();
+
+        assertEquals( "check managed repositories", "file://${appserver.base}/repositories/internal",
+                      repository.getUrl() );
+        assertEquals( "check managed repositories", "Archiva Managed Internal Repository", repository.getName() );
+        assertEquals( "check managed repositories", "internal", repository.getId() );
+        assertEquals( "check managed repositories", "default", repository.getLayout() );
+        assertTrue( "check managed repositories", repository.isIndexed() );
     }
 }

Modified: maven/archiva/trunk/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml Fri Aug  3 07:16:58 2007
@@ -29,18 +29,36 @@
           <role>org.codehaus.plexus.registry.Registry</role>
           <role-hint>empty</role-hint>
         </requirement>
+      </requirements>
+    </component>
+    <component>
+      <role>org.codehaus.plexus.registry.Registry</role>
+      <role-hint>empty</role-hint>
+      <implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
+      <configuration>
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
+      <role-hint>test-upgrade-09</role-hint>
+      <implementation>org.apache.maven.archiva.configuration.DefaultArchivaConfiguration</implementation>
+      <requirements>
         <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
+          <role>org.codehaus.plexus.registry.Registry</role>
+          <role-hint>upgrade-09</role-hint>
         </requirement>
       </requirements>
     </component>
-    
     <component>
       <role>org.codehaus.plexus.registry.Registry</role>
-      <role-hint>empty</role-hint>
+      <role-hint>upgrade-09</role-hint>
       <implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
       <configuration>
+        <properties>
+          <xml fileName="${basedir}/src/test/conf/archiva-0.9.xml"
+               config-name="org.apache.maven.archiva" config-at="org.apache.maven.archiva"/>
+        </properties>
       </configuration>
     </component>
 
@@ -53,10 +71,6 @@
           <role>org.codehaus.plexus.registry.Registry</role>
           <role-hint>configured</role-hint>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
-        </requirement>
       </requirements>
     </component>
     <component>
@@ -74,54 +88,45 @@
 
     <component>
       <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
-      <role-hint>test-save</role-hint>
+      <role-hint>test-autodetect-v1</role-hint>
       <implementation>org.apache.maven.archiva.configuration.DefaultArchivaConfiguration</implementation>
       <requirements>
         <requirement>
           <role>org.codehaus.plexus.registry.Registry</role>
-          <role-hint>save</role-hint>
-        </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
+          <role-hint>autodetect-v1</role-hint>
         </requirement>
       </requirements>
     </component>
     <component>
       <role>org.codehaus.plexus.registry.Registry</role>
-      <role-hint>save</role-hint>
+      <role-hint>autodetect-v1</role-hint>
       <implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
       <configuration>
         <properties>
-          <xml fileName="${basedir}/target/test/test-file.xml" config-optional="true" config-forceCreate="true"
-               config-name="org.apache.maven.archiva.base" config-at="org.apache.maven.archiva"/>
+          <system/>
+          <xml fileName="${basedir}/src/test/conf/autodetect-v1.xml"
+               config-name="org.apache.maven.archiva" config-at="org.apache.maven.archiva"/>
         </properties>
       </configuration>
     </component>
 
     <component>
       <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
-      <role-hint>test-save-user</role-hint>
+      <role-hint>test-save</role-hint>
       <implementation>org.apache.maven.archiva.configuration.DefaultArchivaConfiguration</implementation>
       <requirements>
         <requirement>
           <role>org.codehaus.plexus.registry.Registry</role>
-          <role-hint>save-user</role-hint>
-        </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
+          <role-hint>save</role-hint>
         </requirement>
       </requirements>
     </component>
     <component>
       <role>org.codehaus.plexus.registry.Registry</role>
-      <role-hint>save-user</role-hint>
+      <role-hint>save</role-hint>
       <implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
       <configuration>
         <properties>
-          <xml fileName="${basedir}/target/test/test-file-user.xml" config-optional="true" config-forceCreate="true"
-               config-name="org.apache.maven.archiva.user" config-at="org.apache.maven.archiva"/>
           <xml fileName="${basedir}/target/test/test-file.xml" config-optional="true" config-forceCreate="true"
                config-name="org.apache.maven.archiva.base" config-at="org.apache.maven.archiva"/>
         </properties>
@@ -130,25 +135,26 @@
 
     <component>
       <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
-      <role-hint>test-read-saved</role-hint>
+      <role-hint>test-save-user</role-hint>
       <implementation>org.apache.maven.archiva.configuration.DefaultArchivaConfiguration</implementation>
       <requirements>
         <requirement>
           <role>org.codehaus.plexus.registry.Registry</role>
-          <role-hint>read-saved</role-hint>
-        </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
+          <role-hint>save-user</role-hint>
         </requirement>
       </requirements>
+      <configuration>
+        <userConfigFilename>${basedir}/target/test/test-file-user.xml</userConfigFilename>
+      </configuration>
     </component>
     <component>
       <role>org.codehaus.plexus.registry.Registry</role>
-      <role-hint>read-saved</role-hint>
+      <role-hint>save-user</role-hint>
       <implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
       <configuration>
         <properties>
+          <xml fileName="${basedir}/target/test/test-file-user.xml" config-optional="true" config-forceCreate="true"
+               config-name="org.apache.maven.archiva.user" config-at="org.apache.maven.archiva"/>
           <xml fileName="${basedir}/target/test/test-file.xml" config-optional="true" config-forceCreate="true"
                config-name="org.apache.maven.archiva.base" config-at="org.apache.maven.archiva"/>
         </properties>
@@ -157,52 +163,50 @@
 
     <component>
       <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
-      <role-hint>test-remove-proxied-repo</role-hint>
+      <role-hint>test-configuration-both</role-hint>
       <implementation>org.apache.maven.archiva.configuration.DefaultArchivaConfiguration</implementation>
       <requirements>
         <requirement>
           <role>org.codehaus.plexus.registry.Registry</role>
-          <role-hint>read-remove-proxied-repo</role-hint>
-        </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
+          <role-hint>configuration-both</role-hint>
         </requirement>
       </requirements>
     </component>
     <component>
       <role>org.codehaus.plexus.registry.Registry</role>
-      <role-hint>read-remove-proxied-repo</role-hint>
+      <role-hint>configuration-both</role-hint>
       <implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
       <configuration>
         <properties>
-          <xml fileName="${basedir}/target/test/with-proxied-repos.xml"
+          <xml fileName="${basedir}/src/test/conf/conf-user.xml" config-optional="true" config-forceCreate="true"
+               config-name="org.apache.maven.archiva.user" config-at="org.apache.maven.archiva"/>
+          <xml fileName="${basedir}/src/test/conf/conf-base.xml" config-optional="true" config-forceCreate="true"
                config-name="org.apache.maven.archiva.base" config-at="org.apache.maven.archiva"/>
         </properties>
       </configuration>
     </component>
+
     <component>
       <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
-      <role-hint>test-read-back-remove-proxied-repo</role-hint>
+      <role-hint>test-read-saved</role-hint>
       <implementation>org.apache.maven.archiva.configuration.DefaultArchivaConfiguration</implementation>
       <requirements>
         <requirement>
           <role>org.codehaus.plexus.registry.Registry</role>
-          <role-hint>read-back-remove-proxied-repo</role-hint>
-        </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
+          <role-hint>read-saved</role-hint>
         </requirement>
       </requirements>
+      <configuration>
+        <userConfigFilename>${basedir}/target/test/test-file.xml</userConfigFilename>
+      </configuration>
     </component>
     <component>
       <role>org.codehaus.plexus.registry.Registry</role>
-      <role-hint>read-back-remove-proxied-repo</role-hint>
+      <role-hint>read-saved</role-hint>
       <implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
       <configuration>
         <properties>
-          <xml fileName="${basedir}/target/test/with-proxied-repos.xml"
+          <xml fileName="${basedir}/target/test/test-file.xml" config-optional="true" config-forceCreate="true"
                config-name="org.apache.maven.archiva.base" config-at="org.apache.maven.archiva"/>
         </properties>
       </configuration>

Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumerUtilTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumerUtilTest.xml?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumerUtilTest.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumerUtilTest.xml Fri Aug  3 07:16:58 2007
@@ -28,10 +28,6 @@
           <role>org.codehaus.plexus.registry.Registry</role>
           <role-hint>configured</role-hint>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
-        </requirement>
       </requirements>
     </component>
     <component>

Modified: maven/archiva/trunk/archiva-database/src/test/resources/org/apache/maven/archiva/database/updater/DatabaseConsumersTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/test/resources/org/apache/maven/archiva/database/updater/DatabaseConsumersTest.xml?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-database/src/test/resources/org/apache/maven/archiva/database/updater/DatabaseConsumersTest.xml (original)
+++ maven/archiva/trunk/archiva-database/src/test/resources/org/apache/maven/archiva/database/updater/DatabaseConsumersTest.xml Fri Aug  3 07:16:58 2007
@@ -10,10 +10,6 @@
           <role>org.codehaus.plexus.registry.Registry</role>
           <role-hint>configured</role-hint>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
-        </requirement>
       </requirements>
     </component>
     <component>

Modified: maven/archiva/trunk/archiva-database/src/test/resources/org/apache/maven/archiva/database/updater/DatabaseUpdaterTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/test/resources/org/apache/maven/archiva/database/updater/DatabaseUpdaterTest.xml?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-database/src/test/resources/org/apache/maven/archiva/database/updater/DatabaseUpdaterTest.xml (original)
+++ maven/archiva/trunk/archiva-database/src/test/resources/org/apache/maven/archiva/database/updater/DatabaseUpdaterTest.xml Fri Aug  3 07:16:58 2007
@@ -10,10 +10,6 @@
           <role>org.codehaus.plexus.registry.Registry</role>
           <role-hint>configured</role-hint>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
-        </requirement>
       </requirements>
     </component>
     <component>

Modified: maven/archiva/trunk/archiva-reporting/archiva-artifact-reports/src/test/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reporting/archiva-artifact-reports/src/test/resources/META-INF/plexus/components.xml?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-reporting/archiva-artifact-reports/src/test/resources/META-INF/plexus/components.xml (original)
+++ maven/archiva/trunk/archiva-reporting/archiva-artifact-reports/src/test/resources/META-INF/plexus/components.xml Fri Aug  3 07:16:58 2007
@@ -21,15 +21,15 @@
       <role-hint>commons-configuration</role-hint>
       <configuration>
         <properties>
-          <system />
+          <system/>
           <xml fileName="${appserver.base}/conf/archiva.xml" config-optional="true"
-            config-name="org.apache.maven.archiva.base" config-at="org.apache.maven.archiva" />
+               config-name="org.apache.maven.archiva.base" config-at="org.apache.maven.archiva"/>
           <xml fileName="${appserver.home}/conf/archiva.xml" config-optional="true"
-            config-at="org.apache.maven.archiva" />
+               config-at="org.apache.maven.archiva"/>
           <xml fileName="${user.home}/.m2/archiva.xml" config-optional="true"
-            config-name="org.apache.maven.archiva.user" config-at="org.apache.maven.archiva" />
-          <xml fileName="org/apache/maven/archiva/configuration/default-archiva.xml" config-optional="true"
-            config-at="org.apache.maven.archiva" />
+               config-name="org.apache.maven.archiva.user" config-at="org.apache.maven.archiva"/>
+          <xml fileName="org/apache/maven/archiva/configuration/default-archiva.xml"
+               config-at="org.apache.maven.archiva"/>
         </properties>
       </configuration>
     </component>
@@ -39,8 +39,8 @@
       <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>
     </component>
   </components>
-  
-    <lifecycle-handler-manager implementation="org.codehaus.plexus.lifecycle.DefaultLifecycleHandlerManager">
+
+  <lifecycle-handler-manager implementation="org.codehaus.plexus.lifecycle.DefaultLifecycleHandlerManager">
     <default-lifecycle-handler-id>plexus</default-lifecycle-handler-id>
     <lifecycle-handlers>
       <lifecycle-handler implementation="org.codehaus.plexus.personality.plexus.PlexusLifecycleHandler">
@@ -70,6 +70,6 @@
       </lifecycle-handler>
     </lifecycle-handlers>
   </lifecycle-handler-manager>
-  
+
 </component-set>
 

Modified: maven/archiva/trunk/archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaDatabaseUpdateTaskExecutorTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaDatabaseUpdateTaskExecutorTest.xml?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaDatabaseUpdateTaskExecutorTest.xml (original)
+++ maven/archiva/trunk/archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaDatabaseUpdateTaskExecutorTest.xml Fri Aug  3 07:16:58 2007
@@ -42,13 +42,9 @@
           <role>org.codehaus.plexus.registry.Registry</role>
           <role-hint>configured</role-hint>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
-        </requirement>
       </requirements>
     </component>
-    
+
     <component>
       <role>org.codehaus.plexus.registry.Registry</role>
       <role-hint>configured</role-hint>
@@ -61,20 +57,20 @@
         </properties>
       </configuration>
     </component>
-    
+
     <component>
       <role>org.apache.maven.archiva.consumers.DatabaseCleanupConsumer</role>
       <role-hint>test-db-cleanup</role-hint>
       <implementation>org.apache.maven.archiva.scheduled.TestDatabaseCleanupConsumer</implementation>
     </component>
-    
+
     <component>
       <role>org.apache.maven.archiva.consumers.DatabaseUnprocessedArtifactConsumer</role>
       <role-hint>test-db-unprocessed</role-hint>
       <implementation>org.apache.maven.archiva.scheduled.TestDatabaseUnprocessedConsumer</implementation>
     </component>
-    
-    
+
+
     <component>
       <role>org.codehaus.plexus.jdo.JdoFactory</role>
       <role-hint>archiva</role-hint>
@@ -89,6 +85,6 @@
         </otherProperties>
       </configuration>
     </component>
- 
+
   </components>
 </component-set>

Modified: maven/archiva/trunk/archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutorTest.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutorTest.xml?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutorTest.xml (original)
+++ maven/archiva/trunk/archiva-scheduled/src/test/resources/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutorTest.xml Fri Aug  3 07:16:58 2007
@@ -23,7 +23,8 @@
     <component>
       <role>org.codehaus.plexus.taskqueue.execution.TaskExecutor</role>
       <role-hint>test-repository-scanning</role-hint>
-      <implementation>org.apache.maven.archiva.scheduled.executors.ArchivaRepositoryScanningTaskExecutor</implementation>
+      <implementation>org.apache.maven.archiva.scheduled.executors.ArchivaRepositoryScanningTaskExecutor
+      </implementation>
       <description></description>
       <requirements>
         <requirement>
@@ -51,13 +52,9 @@
           <role>org.codehaus.plexus.registry.Registry</role>
           <role-hint>configured</role-hint>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.archiva.configuration.ConfigurationUpgrade</role>
-          <field-name>upgrader</field-name>
-        </requirement>
       </requirements>
     </component>
-    
+
     <component>
       <role>org.codehaus.plexus.registry.Registry</role>
       <role-hint>configured</role-hint>
@@ -70,7 +67,7 @@
         </properties>
       </configuration>
     </component>
-    
+
     <component>
       <role>org.codehaus.plexus.jdo.JdoFactory</role>
       <role-hint>archiva</role-hint>
@@ -85,6 +82,6 @@
         </otherProperties>
       </configuration>
     </component>
- 
+
   </components>
 </component-set>

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/ConfigureAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/ConfigureAction.java?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/ConfigureAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/ConfigureAction.java Fri Aug  3 07:16:58 2007
@@ -22,9 +22,9 @@
 import com.opensymphony.xwork.ModelDriven;
 import com.opensymphony.xwork.Preparable;
 import com.opensymphony.xwork.Validateable;
-
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.configuration.InvalidConfigurationException;
 import org.apache.maven.archiva.indexer.RepositoryIndexException;
 import org.apache.maven.archiva.indexer.RepositoryIndexSearchException;
@@ -34,7 +34,6 @@
 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
 import org.codehaus.plexus.registry.RegistryException;
-import org.codehaus.plexus.scheduler.CronExpressionValidator;
 import org.codehaus.plexus.xwork.action.PlexusActionSupport;
 
 import java.io.IOException;
@@ -57,7 +56,7 @@
      * The configuration.
      */
     private Configuration configuration;
-    
+
     public void validate()
     {
         getLogger().info( "validate()" );
@@ -72,10 +71,17 @@
         // TODO: if this didn't come from the form, go to configure.action instead of going through with re-saving what was just loaded
         // TODO: if this is changed, do we move the index or recreate it?
 
-        archivaConfiguration.save( configuration );
-
-        // TODO: if the repository has changed, we need to check if indexing is needed!
-        addActionMessage( "Successfully saved configuration" );
+        try
+        {
+            archivaConfiguration.save( configuration );
+
+            // TODO: if the repository has changed, we need to check if indexing is needed!
+            addActionMessage( "Successfully saved configuration" );
+        }
+        catch ( IndeterminateConfigurationException e )
+        {
+            addActionError( e.getMessage() );
+        }
 
         return SUCCESS;
     }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorAction.java?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorAction.java Fri Aug  3 07:16:58 2007
@@ -20,7 +20,6 @@
  */
 
 import com.opensymphony.xwork.Preparable;
-
 import org.apache.commons.collections.Closure;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.functors.IfClosure;
@@ -28,9 +27,9 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.configuration.NetworkProxyConfiguration;
 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
-import org.apache.maven.archiva.configuration.functors.NetworkProxySelectionPredicate;
 import org.apache.maven.archiva.configuration.functors.ProxyConnectorSelectionPredicate;
 import org.apache.maven.archiva.configuration.functors.RemoteRepositoryPredicate;
 import org.apache.maven.archiva.configuration.functors.RepositoryIdListClosure;
@@ -53,11 +52,10 @@
 import java.util.Map.Entry;
 
 /**
- * ConfigureProxyConnectorAction 
+ * ConfigureProxyConnectorAction
  *
  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
  * @version $Id$
- * 
  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="configureProxyConnectorAction"
  */
 public class ConfigureProxyConnectorAction
@@ -101,7 +99,7 @@
     private String pattern;
 
     /**
-     * The list of possible proxy ids. 
+     * The list of possible proxy ids.
      */
     private List proxyIdOptions = new ArrayList();
 
@@ -154,13 +152,15 @@
             return SUCCESS;
         }
 
-        ProxyConnectorSelectionPredicate proxyConnectorSelection = new ProxyConnectorSelectionPredicate( source, target );
-        ProxyConnectorConfiguration proxyConnectorConfiguration = (ProxyConnectorConfiguration) CollectionUtils.find( config
-            .getProxyConnectors(), proxyConnectorSelection );
+        ProxyConnectorSelectionPredicate proxyConnectorSelection =
+            new ProxyConnectorSelectionPredicate( source, target );
+        ProxyConnectorConfiguration proxyConnectorConfiguration =
+            (ProxyConnectorConfiguration) CollectionUtils.find( config
+                .getProxyConnectors(), proxyConnectorSelection );
         if ( proxyConnectorConfiguration == null )
         {
-            addActionError( "Unable to remove proxy connector, proxy connector with source [" + source + "] and target ["
-                            + target + "] not found." );
+            addActionError( "Unable to remove proxy connector, proxy connector with source [" + source +
+                "] and target [" + target + "] not found." );
             return SUCCESS;
         }
 
@@ -418,8 +418,8 @@
 
         RepositoryIdListClosure remoteRepoIdList = new RepositoryIdListClosure( new ArrayList() );
         RepositoryIdListClosure localRepoIdList = new RepositoryIdListClosure( new ArrayList() );
-        Closure repoIfClosure = IfClosure.getInstance( RemoteRepositoryPredicate.getInstance(), remoteRepoIdList,
-                                                       localRepoIdList );
+        Closure repoIfClosure =
+            IfClosure.getInstance( RemoteRepositoryPredicate.getInstance(), remoteRepoIdList, localRepoIdList );
 
         CollectionUtils.forAllDo( config.getRepositories(), repoIfClosure );
 
@@ -447,8 +447,8 @@
         {
             if ( findProxyConnector( sourceId, targetId ) != null )
             {
-                addActionError( "Unable to add new proxy connector with source [" + sourceId + "] and target ["
-                    + targetId + "] as previously declared proxy connector, go edit that one instead." );
+                addActionError( "Unable to add new proxy connector with source [" + sourceId + "] and target [" +
+                    targetId + "] as previously declared proxy connector, go edit that one instead." );
                 return INPUT;
             }
         }
@@ -559,8 +559,8 @@
 
             if ( !options.contains( value ) )
             {
-                addActionError( "Value of [" + value + "] is invalid for policy [" + policyId + "], valid values: "
-                    + options );
+                addActionError(
+                    "Value of [" + value + "] is invalid for policy [" + policyId + "], valid values: " + options );
                 continue;
             }
         }
@@ -585,6 +585,10 @@
         catch ( RegistryException e )
         {
             addActionError( "Unable to save configuration: " + e.getMessage() );
+        }
+        catch ( IndeterminateConfigurationException e )
+        {
+            addActionError( e.getMessage() );
         }
 
         return SUCCESS;

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java Fri Aug  3 07:16:58 2007
@@ -20,11 +20,11 @@
  */
 
 import com.opensymphony.xwork.Preparable;
-
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.DatabaseScanningConfiguration;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.database.updater.DatabaseConsumers;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.apache.maven.archiva.web.action.admin.scanning.AdminRepositoryConsumerComparator;
@@ -32,17 +32,17 @@
 import org.codehaus.plexus.redback.xwork.interceptor.SecureAction;
 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
+import org.codehaus.plexus.registry.RegistryException;
 import org.codehaus.plexus.xwork.action.PlexusActionSupport;
 
 import java.util.Collections;
 import java.util.List;
 
 /**
- * DatabaseAction 
+ * DatabaseAction
  *
  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
  * @version $Id$
- * 
  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="databaseAction"
  */
 public class DatabaseAction
@@ -65,17 +65,17 @@
      * List of available {@link AdminDatabaseConsumer} objects for unprocessed artifacts.
      */
     private List unprocessedConsumers;
-    
+
     /**
      * List of enabled {@link AdminDatabaseConsumer} objects for unprocessed artifacts.
      */
     private List enabledUnprocessedConsumers;
-    
+
     /**
      * List of {@link AdminDatabaseConsumer} objects for "to cleanup" artifacts.
      */
     private List cleanupConsumers;
-    
+
     /**
      * List of enabled {@link AdminDatabaseConsumer} objects for "to cleanup" artifacts.
      */
@@ -90,7 +90,7 @@
         this.cron = dbscanning.getCronExpression();
 
         AddAdminDatabaseConsumerClosure addAdminDbConsumer;
-        
+
         addAdminDbConsumer = new AddAdminDatabaseConsumerClosure( dbscanning.getUnprocessedConsumers() );
         CollectionUtils.forAllDo( databaseConsumers.getAvailableUnprocessedConsumers(), addAdminDbConsumer );
         this.unprocessedConsumers = addAdminDbConsumer.getList();
@@ -104,25 +104,26 @@
 
     public String updateUnprocessedConsumers()
     {
-        archivaConfiguration.getConfiguration().getDatabaseScanning().setUnprocessedConsumers( enabledUnprocessedConsumers );
-        
+        archivaConfiguration.getConfiguration().getDatabaseScanning().setUnprocessedConsumers(
+            enabledUnprocessedConsumers );
+
         return saveConfiguration();
     }
-    
+
     public String updateCleanupConsumers()
     {
         archivaConfiguration.getConfiguration().getDatabaseScanning().setCleanupConsumers( enabledCleanupConsumers );
-        
+
         return saveConfiguration();
     }
-    
+
     public String updateSchedule()
     {
         archivaConfiguration.getConfiguration().getDatabaseScanning().setCronExpression( cron );
-        
+
         return saveConfiguration();
     }
-    
+
     private String saveConfiguration()
     {
         try
@@ -130,15 +131,21 @@
             archivaConfiguration.save( archivaConfiguration.getConfiguration() );
             addActionMessage( "Successfully saved configuration" );
         }
-        catch ( Exception e)
+        catch ( RegistryException e )
         {
+            getLogger().error( e.getMessage(), e );
             addActionError( "Error in saving configuration" );
             return INPUT;
         }
-    
+        catch ( IndeterminateConfigurationException e )
+        {
+            addActionError( e.getMessage() );
+            return INPUT;
+        }
+
         return SUCCESS;
     }
-    
+
     public SecureActionBundle getSecureActionBundle()
         throws SecureActionException
     {

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java Fri Aug  3 07:16:58 2007
@@ -20,12 +20,12 @@
  */
 
 import com.opensymphony.xwork.Preparable;
-
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.functors.NotPredicate;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.configuration.NetworkProxyConfiguration;
 import org.apache.maven.archiva.configuration.functors.NetworkProxySelectionPredicate;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
@@ -37,11 +37,10 @@
 import org.codehaus.plexus.xwork.action.PlexusActionSupport;
 
 /**
- * ConfigureNetworkProxyAction 
+ * ConfigureNetworkProxyAction
  *
  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
  * @version $Id$
- * 
  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="configureNetworkProxyAction"
  */
 public class ConfigureNetworkProxyAction
@@ -217,6 +216,10 @@
         catch ( RegistryException e )
         {
             addActionError( "Unable to save configuration: " + e.getMessage() );
+        }
+        catch ( IndeterminateConfigurationException e )
+        {
+            addActionError( e.getMessage() );
         }
 
         return SUCCESS;

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java Fri Aug  3 07:16:58 2007
@@ -21,12 +21,12 @@
 
 import com.opensymphony.xwork.ActionContext;
 import com.opensymphony.xwork.Preparable;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.common.utils.PathUtil;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.configuration.InvalidConfigurationException;
 import org.apache.maven.archiva.configuration.RepositoryConfiguration;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
@@ -94,7 +94,8 @@
 
         if ( operationAllowed( ArchivaRoleConstants.OPERATION_DELETE_REPOSITORY, getRepoid() ) )
         {
-            addActionError( "You do not have the appropriate permissions to delete the " + getRepoid() + " repository." );
+            addActionError(
+                "You do not have the appropriate permissions to delete the " + getRepoid() + " repository." );
             return ERROR;
         }
 
@@ -107,7 +108,8 @@
 
         if ( operationAllowed( ArchivaRoleConstants.OPERATION_DELETE_REPOSITORY, getRepoid() ) )
         {
-            addActionError( "You do not have the appropriate permissions to delete the " + getRepoid() + " repository." );
+            addActionError(
+                "You do not have the appropriate permissions to delete the " + getRepoid() + " repository." );
             return ERROR;
         }
 
@@ -218,13 +220,13 @@
 
         getLogger().info( ".save(" + mode + ":" + repoId + ")" );
 
-        containsError = validateFields(mode);
+        containsError = validateFields( mode );
 
         if ( containsError && StringUtils.equalsIgnoreCase( "add", mode ) )
-        {            
+        {
             return INPUT;
         }
-        else if ( containsError && StringUtils.equalsIgnoreCase( "edit", mode )) 
+        else if ( containsError && StringUtils.equalsIgnoreCase( "edit", mode ) )
         {
             return ERROR;
         }
@@ -259,7 +261,7 @@
         return SUCCESS;
     }
 
-    private boolean validateFields(String mode)
+    private boolean validateFields( String mode )
     {
         boolean containsError = false;
         CronExpressionValidator validator = new CronExpressionValidator();
@@ -267,20 +269,21 @@
         String repoId = getRepository().getId();
 
         if ( StringUtils.isBlank( repoId ) )
-        {   
+        {
             addFieldError( "repository.id", "You must enter a repository identifier." );
             containsError = true;
         }
         //if edit mode, do not validate existence of repoId
-        else if ( config.findRepositoryById( repoId ) != null && !StringUtils.equalsIgnoreCase( mode, "edit" )  )
+        else if ( config.findRepositoryById( repoId ) != null && !StringUtils.equalsIgnoreCase( mode, "edit" ) )
         {
-            addFieldError( "repository.id", "Unable to add new repository with id [" + repoId + "], that id already exists." );
+            addFieldError( "repository.id",
+                           "Unable to add new repository with id [" + repoId + "], that id already exists." );
             containsError = true;
         }
 
         if ( StringUtils.isBlank( repository.getUrl() ) )
-        {   
-            
+        {
+
             addFieldError( "repository.url", "You must enter a directory or url." );
             containsError = true;
         }
@@ -324,7 +327,7 @@
         {
             repository.setUrl( PathUtil.toUrl( rawUrlEntry ) );
         }
-        
+
         if ( repository.isManaged() )
         {
             // Normalize the path
@@ -360,9 +363,8 @@
         }
         catch ( AuthorizationException e )
         {
-            getLogger().info(
-                              "Unable to authorize permission: " + permission + " against repo: " + repoid
-                                  + " due to: " + e.getMessage() );
+            getLogger().info( "Unable to authorize permission: " + permission + " against repo: " + repoid +
+                " due to: " + e.getMessage() );
             return false;
         }
     }
@@ -402,9 +404,15 @@
     {
         getLogger().info( ".saveConfiguration()" );
 
-        archivaConfiguration.save( archivaConfiguration.getConfiguration() );
-
-        addActionMessage( "Successfully saved configuration" );
+        try
+        {
+            archivaConfiguration.save( archivaConfiguration.getConfiguration() );
+            addActionMessage( "Successfully saved configuration" );
+        }
+        catch ( IndeterminateConfigurationException e )
+        {
+            addActionError( e.getMessage() );
+        }
 
         return SUCCESS;
     }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java Fri Aug  3 07:16:58 2007
@@ -21,12 +21,12 @@
 
 import com.opensymphony.xwork.Preparable;
 import com.opensymphony.xwork.Validateable;
-
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.FileType;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
 import org.apache.maven.archiva.configuration.functors.FiletypeSelectionPredicate;
 import org.apache.maven.archiva.configuration.functors.FiletypeToMapClosure;
@@ -45,11 +45,10 @@
 import java.util.Map;
 
 /**
- * RepositoryScanningAction 
+ * RepositoryScanningAction
  *
  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
  * @version $Id$
- * 
  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="repositoryScanningAction"
  */
 public class RepositoryScanningAction
@@ -74,7 +73,7 @@
      * List of {@link AdminRepositoryConsumer} objects for consumers of known content.
      */
     private List knownContentConsumers;
-    
+
     /**
      * List of enabled {@link AdminRepositoryConsumer} objects for consumers of known content.
      */
@@ -84,7 +83,7 @@
      * List of {@link AdminRepositoryConsumer} objects for consumers of invalid/unknown content.
      */
     private List invalidContentConsumers;
-    
+
     /**
      * List of enabled {@link AdminRepositoryConsumer} objects for consumers of invalid/unknown content.
      */
@@ -99,13 +98,13 @@
         super.addActionError( anErrorMessage );
         getLogger().warn( "[ActionError] " + anErrorMessage );
     }
-    
+
     public void addActionMessage( String aMessage )
     {
         super.addActionMessage( aMessage );
         getLogger().info( "[ActionMessage] " + aMessage );
     }
-    
+
     public String addFiletypePattern()
     {
         getLogger().info( "Add New File Type Pattern [" + getFileTypeId() + ":" + getPattern() + "]" );
@@ -239,19 +238,21 @@
 
     public String updateInvalidConsumers()
     {
-        addActionMessage("Update Invalid Consumers");
-        
-        archivaConfiguration.getConfiguration().getRepositoryScanning().setInvalidContentConsumers( enabledInvalidContentConsumers );
-        
+        addActionMessage( "Update Invalid Consumers" );
+
+        archivaConfiguration.getConfiguration().getRepositoryScanning().setInvalidContentConsumers(
+            enabledInvalidContentConsumers );
+
         return saveConfiguration();
     }
 
     public String updateKnownConsumers()
     {
-        addActionMessage("Update Known Consumers");
-        
-        archivaConfiguration.getConfiguration().getRepositoryScanning().setKnownContentConsumers( enabledKnownContentConsumers );
-        
+        addActionMessage( "Update Known Consumers" );
+
+        archivaConfiguration.getConfiguration().getRepositoryScanning().setKnownContentConsumers(
+            enabledKnownContentConsumers );
+
         return saveConfiguration();
     }
 
@@ -286,6 +287,11 @@
         catch ( RegistryException e )
         {
             addActionError( "Unable to save configuration: " + e.getMessage() );
+            return INPUT;
+        }
+        catch ( IndeterminateConfigurationException e )
+        {
+            addActionError( e.getMessage() );
             return INPUT;
         }
 

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml?view=diff&rev=562474&r1=562473&r2=562474
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml Fri Aug  3 07:16:58 2007
@@ -59,8 +59,9 @@
         <properties>
           <system/>
           <jndi prefix="java:comp/env" config-optional="true"/>
-          <xml fileName="${user.home}/.m2/archiva.xml" config-optional="true" config-name="org.apache.maven.archiva.user"
-               config-at="org.apache.maven.archiva" />
+          <xml fileName="${user.home}/.m2/archiva.xml" config-optional="true"
+               config-name="org.apache.maven.archiva.user"
+               config-at="org.apache.maven.archiva"/>
           <xml fileName="${user.home}/.m2/shared.xml" config-optional="true"
                config-name="org.apache.maven.shared.app.user" config-at="org.apache.maven.shared.app"
                config-forceCreate="true"/>
@@ -68,7 +69,8 @@
                       config-at="org.codehaus.plexus.redback"/>
           <properties fileName="${user.home}/.m2/archiva.properties" config-optional="true"
                       config-at="org.codehaus.plexus.redback"/>
-          <xml fileName="${appserver.base}/conf/archiva.xml" config-optional="true" config-name="org.apache.maven.archiva.base"
+          <xml fileName="${appserver.base}/conf/archiva.xml" config-optional="true"
+               config-name="org.apache.maven.archiva.base"
                config-at="org.apache.maven.archiva"/>
           <xml fileName="${appserver.base}/conf/shared.xml" config-optional="true"
                config-name="org.apache.maven.shared.app.base" config-at="org.apache.maven.shared.app"/>
@@ -80,7 +82,8 @@
           <xml fileName="${appserver.home}/conf/shared.xml" config-optional="true"
                config-at="org.apache.maven.shared.app"/>
           <xml fileName="${appserver.home}/conf/common.xml" config-optional="true"/>
-          <xml fileName="org/apache/maven/archiva/configuration/default-archiva.xml" config-at="org.apache.maven.archiva.base"/>
+          <xml fileName="org/apache/maven/archiva/configuration/default-archiva.xml"
+               config-at="org.apache.maven.archiva"/>
           <properties fileName="${appserver.home}/conf/security.properties" config-optional="true"
                       config-at="org.codehaus.plexus.redback"/>
           <properties fileName="org/apache/maven/archiva/security.properties" config-at="org.codehaus.plexus.redback"/>
@@ -222,16 +225,17 @@
       <implementation>org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager</implementation>
       <lifecycle-handler>basic</lifecycle-handler>
     </component>
-    
+
     <!-- 
-    PLXREDBACK-81 bad role hint, redefining here until redback alpha-2 is released.
-     -->
+   PLXREDBACK-81 bad role hint, redefining here until redback alpha-2 is released.
+    -->
     <component>
       <role>org.codehaus.plexus.redback.system.check.EnvironmentCheck</role>
       <role-hint>locked-admin-check</role-hint>
       <implementation>org.codehaus.plexus.redback.xwork.checks.security.LockedAdminEnvironmentCheck</implementation>
       <description>LockedAdminEnvironmentCheck: checks if accounts marked as system administrator are locked
-and unlocks them on startup.</description>
+        and unlocks them on startup.
+      </description>
       <requirements>
         <requirement>
           <role>org.codehaus.plexus.redback.users.UserManager</role>