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>