Author: brett
Date: Mon Feb 25 07:38:01 2008
New Revision: 630880

URL: http://svn.apache.org/viewvc?rev=630880&view=rev
Log:
[MRM-661] fix handling of removing the last element from a list
Merged from: r630878

Added:
    
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/conf/conf-single-list-elements.xml
      - copied unchanged from r630878, 
maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-single-list-elements.xml
Modified:
    
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
    
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
    
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml

Modified: 
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java?rev=630880&r1=630879&r2=630880&view=diff
==============================================================================
--- 
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
 (original)
+++ 
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/DefaultArchivaConfiguration.java
 Mon Feb 25 07:38:01 2008
@@ -53,8 +53,8 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
+import java.util.Set;
 
 /**
  * <p>
@@ -440,6 +440,50 @@
             configuration.getDatabaseScanning().setCronExpression(
                                                                    
escapeCronExpression( configuration
                                                                        
.getDatabaseScanning().getCronExpression() ) );
+        }
+
+        // [MRM-661] Due to a bug in the modello registry writer, we need to 
take these out by hand. They'll be put back by the writer.
+        if ( configuration.getManagedRepositories().isEmpty() )
+        {
+            section.removeSubset( "managedRepositories" );
+        }
+        if ( configuration.getRemoteRepositories().isEmpty() )
+        {
+            section.removeSubset( "remoteRepositories" );
+        }
+        if ( configuration.getProxyConnectors().isEmpty() )
+        {
+            section.removeSubset( "proxyConnectors" );
+        }
+        if ( configuration.getNetworkProxies().isEmpty() )
+        {
+            section.removeSubset( "networkProxies" );
+        }
+        if ( configuration.getLegacyArtifactPaths().isEmpty() )
+        {
+            section.removeSubset( "legacyArtifactPaths" );
+        }
+        if ( configuration.getRepositoryScanning() != null )
+        {
+            if ( 
configuration.getRepositoryScanning().getKnownContentConsumers().isEmpty() )
+            {
+                section.removeSubset( 
"repositoryScanning.knownContentConsumers" );
+            }
+            if ( 
configuration.getRepositoryScanning().getInvalidContentConsumers().isEmpty() )
+            {
+                section.removeSubset( 
"repositoryScanning.invalidContentConsumers" );
+            }
+        }
+        if ( configuration.getDatabaseScanning() != null )
+        {
+            if ( 
configuration.getDatabaseScanning().getCleanupConsumers().isEmpty() )
+            {
+                section.removeSubset( "databaseScanning.cleanupConsumers" );
+            }
+            if ( 
configuration.getDatabaseScanning().getUnprocessedConsumers().isEmpty() )
+            {
+                section.removeSubset( "databaseScanning.unprocessedConsumers" 
);
+            }
         }
 
         new ConfigurationRegistryWriter().write( configuration, section );

Modified: 
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java?rev=630880&r1=630879&r2=630880&view=diff
==============================================================================
--- 
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
 (original)
+++ 
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.java
 Mon Feb 25 07:38:01 2008
@@ -637,6 +637,93 @@
         assertEquals( "check cron expression", "0 0,20 0 * * ?", 
repository.getRefreshCronExpression() );
     }
 
+    public void testRemoveLastElements()
+        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-single-list-elements.xml" ), baseFile );
+
+        userFile.getParentFile().mkdirs();
+        FileUtils.writeStringToFile( userFile, "<configuration/>", null );
+
+        ArchivaConfiguration archivaConfiguration =
+            (ArchivaConfiguration) lookup( 
ArchivaConfiguration.class.getName(), "test-remove-central" );
+
+        Configuration configuration = archivaConfiguration.getConfiguration();
+
+        RemoteRepositoryConfiguration repository = 
configuration.getRemoteRepositoriesAsMap().get( "central" );
+        assertNotNull( repository );
+        configuration.removeRemoteRepository( repository );
+        assertTrue( configuration.getRemoteRepositories().isEmpty() );
+
+        ManagedRepositoryConfiguration managedRepository =
+            configuration.getManagedRepositoriesAsMap().get( "snapshots" );
+        assertNotNull( managedRepository );
+        configuration.removeManagedRepository( managedRepository );
+        assertTrue( configuration.getManagedRepositories().isEmpty() );
+
+        ProxyConnectorConfiguration proxyConnector =
+            (ProxyConnectorConfiguration) 
configuration.getProxyConnectors().get( 0 );
+        assertNotNull( proxyConnector );
+        configuration.removeProxyConnector( proxyConnector );
+        assertTrue( configuration.getProxyConnectors().isEmpty() );
+
+        NetworkProxyConfiguration networkProxy = 
configuration.getNetworkProxiesAsMap().get( "proxy" );
+        assertNotNull( networkProxy );
+        configuration.removeNetworkProxy( networkProxy );
+        assertTrue( configuration.getNetworkProxies().isEmpty() );
+
+        LegacyArtifactPath path = (LegacyArtifactPath) 
configuration.getLegacyArtifactPaths().get( 0 );
+        assertNotNull( path );
+        configuration.removeLegacyArtifactPath( path );
+        assertTrue( configuration.getLegacyArtifactPaths().isEmpty() );
+
+        RepositoryScanningConfiguration scanning = 
configuration.getRepositoryScanning();
+        String consumer = (String) scanning.getKnownContentConsumers().get( 0 
);
+        assertNotNull( consumer );
+        scanning.removeKnownContentConsumer( consumer );
+        assertTrue( scanning.getKnownContentConsumers().isEmpty() );
+        consumer = (String) scanning.getInvalidContentConsumers().get( 0 );
+        assertNotNull( consumer );
+        scanning.removeInvalidContentConsumer( consumer );
+        assertTrue( scanning.getInvalidContentConsumers().isEmpty() );
+
+        DatabaseScanningConfiguration databaseScanning = 
configuration.getDatabaseScanning();
+        consumer = (String) databaseScanning.getCleanupConsumers().get( 0 );
+        assertNotNull( consumer );
+        databaseScanning.removeCleanupConsumer( consumer );
+        assertTrue( databaseScanning.getCleanupConsumers().isEmpty() );
+        consumer = (String) databaseScanning.getUnprocessedConsumers().get( 0 
);
+        assertNotNull( consumer );
+        databaseScanning.removeUnprocessedConsumer( consumer );
+        assertTrue( databaseScanning.getUnprocessedConsumers().isEmpty() );
+
+        archivaConfiguration.save( configuration );
+
+        archivaConfiguration =
+            (ArchivaConfiguration) lookup( 
ArchivaConfiguration.class.getName(), "test-read-saved" );
+        configuration = archivaConfiguration.getConfiguration();
+        assertNull( configuration.getRemoteRepositoriesAsMap().get( "central" 
) );
+        assertNull( configuration.getManagedRepositoriesAsMap().get( 
"snapshots" ) );
+        assertTrue( configuration.getProxyConnectors().isEmpty() );
+        assertNull( configuration.getNetworkProxiesAsMap().get( "proxy" ) );
+        assertTrue( configuration.getLegacyArtifactPaths().isEmpty() );
+        scanning = configuration.getRepositoryScanning();
+        assertTrue( scanning.getKnownContentConsumers().isEmpty() );
+        assertTrue( scanning.getInvalidContentConsumers().isEmpty() );
+        databaseScanning = configuration.getDatabaseScanning();
+        assertTrue( databaseScanning.getCleanupConsumers().isEmpty() );
+        assertTrue( databaseScanning.getUnprocessedConsumers().isEmpty() );
+    }
+
     /**
      * [MRM-582] Remote Repositories with empty <username> and <password> 
fields shouldn't be created in configuration.
      */

Modified: 
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml?rev=630880&r1=630879&r2=630880&view=diff
==============================================================================
--- 
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml
 (original)
+++ 
maven/archiva/branches/archiva-1.0.x/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml
 Mon Feb 25 07:38:01 2008
@@ -345,6 +345,40 @@
     
     <component>
       <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
+      <role-hint>test-remove-central</role-hint>
+      
<implementation>org.apache.maven.archiva.configuration.DefaultArchivaConfiguration</implementation>
+      <requirements>
+        <requirement>
+          <role>org.codehaus.plexus.registry.Registry</role>
+          <role-hint>remove-central</role-hint>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.archiva.policies.PreDownloadPolicy</role>
+          <field-name>prePolicies</field-name>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.archiva.policies.PostDownloadPolicy</role>
+          <field-name>postPolicies</field-name>
+        </requirement>
+      </requirements>
+      <configuration>
+        
<userConfigFilename>${basedir}/target/test/test-file.xml</userConfigFilename>
+      </configuration>
+    </component>
+    <component>
+      <role>org.codehaus.plexus.registry.Registry</role>
+      <role-hint>remove-central</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"/>
+        </properties>
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
       <role-hint>test-not-allowed-to-write-to-both</role-hint>
       
<implementation>org.apache.maven.archiva.configuration.DefaultArchivaConfiguration</implementation>
       <requirements>


Reply via email to