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/09 10:24:41 UTC

svn commit: r564135 - in /maven/archiva/trunk/archiva-base/archiva-configuration/src: main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java

Author: brett
Date: Thu Aug  9 01:24:40 2007
New Revision: 564135

URL: http://svn.apache.org/viewvc?view=rev&rev=564135
Log:
[MRM-456] permit having configuration in both sources as long as it doesn't contain any elements that might not save properly (lists)

Modified:
    maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
    maven/archiva/trunk/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java

Modified: maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java?view=diff&rev=564135&r1=564134&r2=564135
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java Thu Aug  9 01:24:40 2007
@@ -32,6 +32,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -144,20 +145,40 @@
         throws RegistryException, IndeterminateConfigurationException
     {
         Registry section = registry.getSection( KEY + ".user" );
+        Registry baseSection = registry.getSection( KEY + ".base" );
         if ( section == null )
         {
-            section = registry.getSection( KEY + ".base" );
+            section = baseSection;
             if ( section == null )
             {
                 section = createDefaultConfigurationFile();
             }
         }
-        else if ( registry.getSection( KEY + ".base" ) != null )
+        else if ( baseSection != null )
         {
-            this.configuration = null;
+            Collection keys = baseSection.getKeys();
+            boolean foundList = false;
+            for ( Iterator i = keys.iterator(); i.hasNext() && !foundList; )
+            {
+                String key = (String) i.next();
+
+                // a little aggressive with the repositoryScanning and databaseScanning - should be no need to split
+                // that configuration
+                if ( key.startsWith( "repositories" ) || key.startsWith( "proxyConnectors" ) ||
+                    key.startsWith( "networkProxies" ) || key.startsWith( "repositoryScanning" ) ||
+                    key.startsWith( "databaseScanning" ) )
+                {
+                    foundList = true;
+                }
+            }
 
-            throw new IndeterminateConfigurationException(
-                "Configuration can not be saved when it is loaded from two sources" );
+            if ( foundList )
+            {
+                this.configuration = null;
+
+                throw new IndeterminateConfigurationException(
+                    "Configuration can not be saved when it is loaded from two sources" );
+            }
         }
 
         new ConfigurationRegistryWriter().write( configuration, section );

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=564135&r1=564134&r2=564135
==============================================================================
--- 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 Thu Aug  9 01:24:40 2007
@@ -348,7 +348,7 @@
         assertFalse( "check value", configuration.getWebapp().getUi().isAppletFindEnabled() );
     }
 
-    public void testStoreConfigurationFailsWhenReadFromBothLocations()
+    public void testStoreConfigurationFailsWhenReadFromBothLocationsNoLists()
         throws Exception
     {
         File baseFile = getTestFile( "target/test/test-file.xml" );
@@ -361,6 +361,84 @@
 
         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" );
+
+        Configuration configuration = archivaConfiguration.getConfiguration();
+        assertTrue( "check value", configuration.getWebapp().getUi().isAppletFindEnabled() );
+
+        configuration.getWebapp().getUi().setAppletFindEnabled( false );
+
+        archivaConfiguration.save( configuration );
+
+        assertTrue( "Check file exists", baseFile.exists() );
+        assertEquals( "Check base file is unchanged", "<configuration/>",
+                      FileUtils.fileRead( baseFile.getAbsolutePath() ) );
+        assertTrue( "Check file exists", userFile.exists() );
+        assertFalse( "Check base file is changed",
+                     "<configuration/>".equals( FileUtils.fileRead( userFile.getAbsolutePath() ) ) );
+
+        // check it
+        configuration = archivaConfiguration.getConfiguration();
+        assertFalse( "check value", configuration.getWebapp().getUi().isAppletFindEnabled() );
+    }
+
+    public void testStoreConfigurationFailsWhenReadFromBothLocationsUserHasLists()
+        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() );
+
+        userFile.getParentFile().mkdirs();
+        FileUtils.copyFile( getTestFile( "src/test/conf/conf-user.xml" ), userFile );
+
+        baseFile.getParentFile().mkdirs();
+        FileUtils.fileWrite( baseFile.getAbsolutePath(), "<configuration/>" );
+
+        ArchivaConfiguration archivaConfiguration =
+            (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName(), "test-save-user" );
+
+        Configuration configuration = archivaConfiguration.getConfiguration();
+        assertTrue( "check value", configuration.getWebapp().getUi().isShowFindArtifacts() );
+
+        configuration.getWebapp().getUi().setShowFindArtifacts( false );
+
+        archivaConfiguration.save( configuration );
+
+        assertTrue( "Check file exists", baseFile.exists() );
+        assertEquals( "Check base file is unchanged", "<configuration/>",
+                      FileUtils.fileRead( baseFile.getAbsolutePath() ) );
+        assertTrue( "Check file exists", userFile.exists() );
+        assertFalse( "Check base file is changed",
+                     "<configuration/>".equals( FileUtils.fileRead( userFile.getAbsolutePath() ) ) );
+
+        // check it
+        configuration = archivaConfiguration.getConfiguration();
+        assertFalse( "check value", configuration.getWebapp().getUi().isShowFindArtifacts() );
+    }
+
+    public void testStoreConfigurationFailsWhenReadFromBothLocationsAppserverHasLists()
+        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() );
+
+        baseFile.getParentFile().mkdirs();
+        FileUtils.copyFile( getTestFile( "src/test/conf/conf-base.xml" ), baseFile );
 
         userFile.getParentFile().mkdirs();
         FileUtils.fileWrite( userFile.getAbsolutePath(), "<configuration/>" );