Return-Path: Delivered-To: apmail-maven-archiva-commits-archive@locus.apache.org Received: (qmail 36883 invoked from network); 9 Aug 2007 08:25:03 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 9 Aug 2007 08:25:03 -0000 Received: (qmail 93412 invoked by uid 500); 9 Aug 2007 08:25:01 -0000 Delivered-To: apmail-maven-archiva-commits-archive@maven.apache.org Received: (qmail 93357 invoked by uid 500); 9 Aug 2007 08:25:01 -0000 Mailing-List: contact archiva-commits-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: archiva-dev@maven.apache.org Delivered-To: mailing list archiva-commits@maven.apache.org Received: (qmail 93346 invoked by uid 99); 9 Aug 2007 08:25:01 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Aug 2007 01:25:01 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Aug 2007 08:25:02 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id CB1F01A981A; Thu, 9 Aug 2007 01:24:41 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Thu, 09 Aug 2007 08:24:41 -0000 To: archiva-commits@maven.apache.org From: brett@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070809082441.CB1F01A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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(), "" ); + + userFile.getParentFile().mkdirs(); + FileUtils.fileWrite( userFile.getAbsolutePath(), "" ); + + 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", "", + FileUtils.fileRead( baseFile.getAbsolutePath() ) ); + assertTrue( "Check file exists", userFile.exists() ); + assertFalse( "Check base file is changed", + "".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(), "" ); + + 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", "", + FileUtils.fileRead( baseFile.getAbsolutePath() ) ); + assertTrue( "Check file exists", userFile.exists() ); + assertFalse( "Check base file is changed", + "".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(), "" );