Author: brett
Date: Mon Feb 25 07:33:42 2008
New Revision: 630878

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

Added:
    
maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-single-list-elements.xml
   (contents, props changed)
      - copied, changed from r630739, 
maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-base.xml
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
    
maven/archiva/trunk/archiva-base/archiva-configuration/src/test/resources/org/apache/maven/archiva/configuration/ArchivaConfigurationTest.xml

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?rev=630878&r1=630877&r2=630878&view=diff
==============================================================================
--- 
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
 Mon Feb 25 07:33:42 2008
@@ -19,19 +19,6 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.io.FileUtils;
@@ -57,6 +44,19 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
 /**
  * <p>
  * Implementation of configuration holder that retrieves it from the registry.
@@ -442,6 +442,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 );

Copied: 
maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-single-list-elements.xml
 (from r630739, 
maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-base.xml)
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-single-list-elements.xml?p2=maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-single-list-elements.xml&p1=maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-base.xml&r1=630739&r2=630878&rev=630878&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-base.xml
 (original)
+++ 
maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-single-list-elements.xml
 Mon Feb 25 07:33:42 2008
@@ -22,16 +22,6 @@
   <version>2</version>
   <managedRepositories>
     <managedRepository>
-      <id>internal</id>
-      <name>Archiva Managed Internal Repository</name>
-      <location>${appserver.base}/repositories/internal</location>
-      <layout>default</layout>
-      <releases>true</releases>
-      <snapshots>false</snapshots>
-      <scanned>true</scanned>
-      <refreshCronExpression>0 0 * * ?</refreshCronExpression>
-    </managedRepository>
-    <managedRepository>
       <id>snapshots</id>
       <name>Archiva Managed Snapshot Repository</name>
       <location>${appserver.base}/repositories/snapshots</location>
@@ -49,17 +39,51 @@
       <url>http://repo1.maven.org/maven2</url>
       <layout>default</layout>
     </remoteRepository>
-    <remoteRepository>
-      <id>maven2-repository.dev.java.net</id>
-      <name>Java.net Repository for Maven 2</name>
-      <url>https://maven2-repository.dev.java.net/nonav/repository</url>
-      <layout>default</layout>
-    </remoteRepository>
   </remoteRepositories>
-
-  <webapp>
-    <ui>
-      <showFindArtifacts>false</showFindArtifacts>
-    </ui>
-  </webapp>
+  <proxyConnectors>
+    <proxyConnector>
+      <order>2</order>
+      <sourceRepoId>internal</sourceRepoId>
+      <targetRepoId>maven2-repository.dev.java.net</targetRepoId>
+      <proxyId/>
+      <whiteListPatterns>
+        <whiteListPattern>javax/**</whiteListPattern>
+      </whiteListPatterns>
+      <policies>
+        <releases>once</releases>
+        <checksum>fix</checksum>
+        <snapshots>never</snapshots>
+        <cache-failures>yes</cache-failures>
+      </policies>
+    </proxyConnector>
+  </proxyConnectors>
+  <networkProxies>
+    <networkProxy>
+      <id>proxy</id>
+      <host>proxy</host>
+      <port>8080</port>
+    </networkProxy>
+  </networkProxies>
+  <legacyArtifactPaths>
+    <legacyArtifactPath>
+      <path>jaxen/jars/jaxen-1.0-FCS-full.jar</path>
+      <artifact>jaxen:jaxen:1.0-FCS:full:jar</artifact>
+    </legacyArtifactPath>
+  </legacyArtifactPaths>
+  <repositoryScanning>
+    <knownContentConsumers>
+      <knownContentConsumer>auto-remove</knownContentConsumer>
+    </knownContentConsumers>
+    <invalidContentConsumers>
+      <invalidContentConsumer>update-db-bad-content</invalidContentConsumer>
+    </invalidContentConsumers>
+  </repositoryScanning>
+  <databaseScanning>
+    <unprocessedConsumers>
+      <unprocessedConsumer>update-db-bytecode-stats</unprocessedConsumer>
+    </unprocessedConsumers>
+    <cleanupConsumers>
+      <cleanupConsumer>not-present-remove-db-project</cleanupConsumer>
+    </cleanupConsumers>
+  </databaseScanning>
 </configuration>

Propchange: 
maven/archiva/trunk/archiva-base/archiva-configuration/src/test/conf/conf-single-list-elements.xml
------------------------------------------------------------------------------
    svn:eol-style = native

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?rev=630878&r1=630877&r2=630878&view=diff
==============================================================================
--- 
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
 Mon Feb 25 07:33:42 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/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?rev=630878&r1=630877&r2=630878&view=diff
==============================================================================
--- 
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
 Mon Feb 25 07:33:42 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