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/>" );