You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/06/14 17:25:48 UTC

svn commit: r547277 [14/16] - in /maven/archiva/trunk: archiva-base/ archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ archiva-base/archiva-dependency-graph/ archiva-base/archiva-depend...

Added: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/WagonManagerMemoryRepository.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/WagonManagerMemoryRepository.java?view=auto&rev=547277
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/WagonManagerMemoryRepository.java (added)
+++ maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/WagonManagerMemoryRepository.java Thu Jun 14 08:25:42 2007
@@ -0,0 +1,772 @@
+package org.apache.maven.archiva.dependency.graph;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.archiva.model.ArchivaProjectModel;
+import org.apache.maven.archiva.model.Dependency;
+import org.apache.maven.archiva.model.VersionedReference;
+
+/**
+ * WagonManagerMemoryRepository
+ * 
+ * MemoryRepository for testing <code>org.apache.maven.wagon:wagon-manager:2.0-SNAPSHOT</code>
+ *
+ * Generated by <code>archivadev:generate-dependency-tests</code> plugin
+ * @version $Id$
+ */
+public class WagonManagerMemoryRepository
+   extends AbstractMemoryRepository
+{
+   public void initialize()
+   {
+      ArchivaProjectModel model;
+      Dependency dep;
+
+      model = toModel( "org.apache.maven.wagon:wagon-manager:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-9::jar", "test" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-api:2.0-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-file:2.0-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-ftp:2.0-SNAPSHOT::jar", "test" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-http-lightweight:2.0-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-ssh:2.0-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-ssh-external:2.0-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-webdav:2.0-SNAPSHOT::jar", "test" ) );
+      dep = toDependency( "org.codehaus.plexus.webdav:plexus-webdav-simple:1.0-alpha-1::jar", "test" );
+      addExclusion( dep, "org.codehaus.plexus:plexus-component-api" );
+      model.addDependency( dep );
+      model.addDependency( toDependency( "org.mortbay.jetty:jetty:6.0.2::jar", "test" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-provider-api:2.0-SNAPSHOT::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-provider-test:2.0-SNAPSHOT::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-ssh-common-test:2.0-SNAPSHOT::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-ssh-common:2.0-SNAPSHOT::jar" ) );
+      model.addDependencyManagement( toDependency( "junit:junit:3.8.1::jar" ) );
+      dep = toDependency( "org.codehaus.plexus:plexus-interactivity-api:1.0-alpha-6::jar" );
+      addExclusion( dep, "plexus:plexus-utils" );
+      addExclusion( dep, "org.codehaus.plexus:plexus-container-default" );
+      addExclusion( dep, "classworlds:classworlds" );
+      model.addDependencyManagement( dep );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-9::jar", "test" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-utils:1.4.2-SNAPSHOT::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven:maven-parent:5" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-provider-api:2.0-SNAPSHOT::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-provider-test:2.0-SNAPSHOT::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-ssh-common-test:2.0-SNAPSHOT::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-ssh-common:2.0-SNAPSHOT::jar" ) );
+      model.addDependencyManagement( toDependency( "junit:junit:3.8.1::jar" ) );
+      dep = toDependency( "org.codehaus.plexus:plexus-interactivity-api:1.0-alpha-6::jar" );
+      addExclusion( dep, "plexus:plexus-utils" );
+      addExclusion( dep, "org.codehaus.plexus:plexus-container-default" );
+      addExclusion( dep, "classworlds:classworlds" );
+      model.addDependencyManagement( dep );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-9::jar", "test" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-utils:1.4.2-SNAPSHOT::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-parent:5" );
+      model.setParentProject( toParent( "org.apache:apache:3" ) );
+      addModel( model );
+
+      model = toModel( "org.apache:apache:3" );
+      addModel( model );
+
+      model = toModel( "junit:junit:3.8.1" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-provider-api:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.4.2-SNAPSHOT::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-utils:1.4.2-SNAPSHOT" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.11" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus:1.0.11" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-provider-test:2.0-SNAPSHOT" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-ssh-common-test:2.0-SNAPSHOT" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-ssh-common:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon-providers:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.4.2-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-interactivity-api:1.0-alpha-6::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-providers:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-api:2.0-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-test:2.0-SNAPSHOT::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-interactivity-api:1.0-alpha-6" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus-interactivity:1.0-alpha-6" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.4::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-interactivity:1.0-alpha-6" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus-components:1.1.9" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-components:1.1.9" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.10" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-component-api:1.0-alpha-16::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-16::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus:1.0.10" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-component-api:1.0-alpha-16" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus-containers:1.0-alpha-16" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-classworlds:1.2-alpha-7::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-containers:1.0-alpha-16" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.9" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "compile" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-classworlds:1.2-alpha-7::jar" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-component-api:1.0-alpha-16::jar" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-utils:1.3::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus:1.0.9" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-classworlds:1.2-alpha-7" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.9" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "compile" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-utils:1.3" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.8" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus:1.0.8" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-container-default:1.0-alpha-16" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus-containers:1.0-alpha-16" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-component-api:1.0-alpha-16::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.3::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-classworlds:1.2-alpha-7::jar" ) );
+      model.addDependency( toDependency( "jmock:jmock:1.0.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "jmock:jmock:1.0.1" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-utils:1.4" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.9" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-container-default:1.0-alpha-9" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus-containers:1.0.3" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "compile" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar" ) );
+      model.addDependency( toDependency( "classworlds:classworlds:1.1-alpha-2::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-containers:1.0.3" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.4" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus:1.0.4" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-utils:1.0.4" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "classworlds:classworlds:1.1-alpha-2" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-file:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon-providers:2.0-SNAPSHOT" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-ftp:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon-providers:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "commons-net:commons-net:1.4.1::jar" ) );
+      dep = toDependency( "org.codehaus.plexus:plexus-ftpd:1.0-alpha-1::jar", "test" );
+      addExclusion( dep, "plexus:plexus-container-default" );
+      model.addDependency( dep );
+      addModel( model );
+
+      model = toModel( "commons-net:commons-net:1.4.1" );
+      model.addDependency( toDependency( "oro:oro:2.0.8::jar" ) );
+      addModel( model );
+
+      model = toModel( "oro:oro:2.0.8" );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-ftpd:1.0-alpha-1" );
+      model.addDependency( toDependency( "concurrent:concurrent:1.3.4::jar", "compile" ) );
+      model.addDependency( toDependency( "cornerstone-threads:cornerstone-threads-api:1.0::jar", "compile" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependency( toDependency( "cornerstone-sockets:cornerstone-sockets-api:1.0::jar", "compile" ) );
+      model.addDependency( toDependency( "cornerstone-connection:cornerstone-connection-impl:1.0::jar", "compile" ) );
+      model.addDependency( toDependency( "excalibur-pool:excalibur-pool-impl:2.0::jar", "compile" ) );
+      model.addDependency( toDependency( "excalibur-thread:excalibur-thread:1.1.1::jar", "compile" ) );
+      model.addDependency( toDependency( "cornerstone-sockets:cornerstone-sockets-impl:1.0::jar", "compile" ) );
+      model.addDependency( toDependency( "cornerstone-connection:cornerstone-connection-api:1.0::jar", "compile" ) );
+      model.addDependency( toDependency( "commons-collections:commons-collections:3.0::jar", "compile" ) );
+      model.addDependency( toDependency( "avalon:avalon-framework:4.1.4::jar", "compile" ) );
+      model.addDependency( toDependency( "cornerstone-threads:cornerstone-threads-impl:1.0::jar", "compile" ) );
+      model.addDependency( toDependency( "excalibur-pool:excalibur-pool-api:2.0::jar", "compile" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-avalon-personality:0.13::jar", "compile" ) );
+      model.addDependency( toDependency( "plexus:plexus-container-default:1.0-alpha-2::jar", "compile" ) );
+      addModel( model );
+
+      model = toModel( "concurrent:concurrent:1.3.4" );
+      addModel( model );
+
+      model = toModel( "cornerstone-threads:cornerstone-threads-api:1.0" );
+      addModel( model );
+
+      model = toModel( "cornerstone-sockets:cornerstone-sockets-api:1.0" );
+      addModel( model );
+
+      model = toModel( "cornerstone-connection:cornerstone-connection-impl:1.0" );
+      addModel( model );
+
+      model = toModel( "excalibur-pool:excalibur-pool-impl:2.0" );
+      addModel( model );
+
+      model = toModel( "excalibur-thread:excalibur-thread:1.1.1" );
+      addModel( model );
+
+      model = toModel( "cornerstone-sockets:cornerstone-sockets-impl:1.0" );
+      addModel( model );
+
+      model = toModel( "cornerstone-connection:cornerstone-connection-api:1.0" );
+      addModel( model );
+
+      model = toModel( "commons-collections:commons-collections:3.0" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "avalon:avalon-framework:4.1.4" );
+      addModel( model );
+
+      model = toModel( "cornerstone-threads:cornerstone-threads-impl:1.0" );
+      addModel( model );
+
+      model = toModel( "excalibur-pool:excalibur-pool-api:2.0" );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-avalon-personality:0.13" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependency( toDependency( "avalon:avalon-framework:4.1.4::jar", "compile" ) );
+      model.addDependency( toDependency( "plexus:plexus-container-default:1.0-alpha-2::jar", "compile" ) );
+      addModel( model );
+
+      model = toModel( "plexus:plexus-container-default:1.0-alpha-2" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-http-lightweight:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon-providers:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-http-shared:2.0-SNAPSHOT::jar" ) );
+      dep = toDependency( "plexus:plexus-jetty-httpd:1.0-beta-1::jar", "test" );
+      addExclusion( dep, "plexus:plexus-container-default" );
+      model.addDependency( dep );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-http-shared:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon-providers:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "jtidy:jtidy:4aug2000r7-dev::jar" ) );
+      addModel( model );
+
+      model = toModel( "jtidy:jtidy:4aug2000r7-dev" );
+      addModel( model );
+
+      model = toModel( "plexus:plexus-jetty-httpd:1.0-beta-1" );
+      model.setParentProject( toParent( "plexus:plexus-components:1.0" ) );
+      model.addDependency( toDependency( "jetty:jetty:4.2.10::jar" ) );
+      model.addDependency( toDependency( "servletapi:servletapi:2.3::jar" ) );
+      addModel( model );
+
+      model = toModel( "plexus:plexus-components:1.0" );
+      model.setParentProject( toParent( "plexus:plexus-root:1.0" ) );
+      model.addDependency( toDependency( "plexus:plexus-container-default:1.0-alpha-2::jar" ) );
+      addModel( model );
+
+      model = toModel( "plexus:plexus-root:1.0" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "jetty:jetty:4.2.10" );
+      model.addDependency( toDependency( "javax.servlet:servlet-api:2.3::jar", "runtime" ) );
+      addModel( model );
+
+      model = toModel( "javax.servlet:servlet-api:2.3" );
+      addModel( model );
+
+      model = toModel( "servletapi:servletapi:2.3" );
+      model.setRelocation( new VersionedReference() );
+      model.getRelocation().setGroupId( "javax.servlet" );
+      model.getRelocation().setArtifactId( "servlet-api" );
+      model.getRelocation().setVersion( "2.3" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-ssh:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon-providers:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "com.jcraft:jsch:0.1.27::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-interactivity-api:1.0-alpha-6::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.4.2-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-ssh-common:2.0-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-ssh-common-test:2.0-SNAPSHOT::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "com.jcraft:jsch:0.1.27" );
+      dep = toDependency( "com.jcraft:jzlib:1.0.7::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      addModel( model );
+
+      model = toModel( "com.jcraft:jzlib:1.0.7" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-ssh-external:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon-providers:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.4.2-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-ssh-common:2.0-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-ssh-common-test:2.0-SNAPSHOT::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-webdav:2.0-SNAPSHOT" );
+      model.setParentProject( toParent( "org.apache.maven.wagon:wagon-providers:2.0-SNAPSHOT" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.4.2-SNAPSHOT::jar" ) );
+      model.addDependency( toDependency( "slide:slide-webdavlib:2.1::jar" ) );
+      model.addDependency( toDependency( "commons-logging:commons-logging:1.0.4::jar", "runtime" ) );
+      model.addDependency( toDependency( "it.could:webdav:0.4::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "slide:slide-webdavlib:2.1" );
+      model.addDependency( toDependency( "commons-httpclient:commons-httpclient:2.0.2::jar" ) );
+      model.addDependency( toDependency( "jdom:jdom:1.0::jar" ) );
+      model.addDependency( toDependency( "de.zeigermann.xml:xml-im-exporter:1.1::jar" ) );
+      addModel( model );
+
+      model = toModel( "commons-httpclient:commons-httpclient:2.0.2" );
+      model.addDependency( toDependency( "commons-logging:commons-logging:1.0.3::jar" ) );
+      addModel( model );
+
+      model = toModel( "commons-logging:commons-logging:1.0.3" );
+      dep = toDependency( "log4j:log4j:1.2.6::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      dep = toDependency( "logkit:logkit:1.0.1::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      model.addDependency( toDependency( "junit:junit:3.7::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "log4j:log4j:1.2.6" );
+      addModel( model );
+
+      model = toModel( "logkit:logkit:1.0.1" );
+      addModel( model );
+
+      model = toModel( "junit:junit:3.7" );
+      addModel( model );
+
+      model = toModel( "jdom:jdom:1.0" );
+      dep = toDependency( "xerces:xercesImpl:2.6.0::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      dep = toDependency( "xml-apis:xml-apis:1.0.b2::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      dep = toDependency( "jaxen:jaxen:1.0-FCS::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      dep = toDependency( "saxpath:saxpath:1.0-FCS::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      dep = toDependency( "xalan:xalan:2.5.0::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      addModel( model );
+
+      model = toModel( "xerces:xercesImpl:2.6.0" );
+      addModel( model );
+
+      model = toModel( "xml-apis:xml-apis:1.0.b2" );
+      addModel( model );
+
+      model = toModel( "jaxen:jaxen:1.0-FCS" );
+      addModel( model );
+
+      model = toModel( "saxpath:saxpath:1.0-FCS" );
+      addModel( model );
+
+      model = toModel( "xalan:xalan:2.5.0" );
+      addModel( model );
+
+      model = toModel( "de.zeigermann.xml:xml-im-exporter:1.1" );
+      addModel( model );
+
+      model = toModel( "commons-logging:commons-logging:1.0.4" );
+      dep = toDependency( "log4j:log4j:1.2.6::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      dep = toDependency( "logkit:logkit:1.0.1::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      model.addDependency( toDependency( "junit:junit:3.7::jar", "test" ) );
+      dep = toDependency( "avalon-framework:avalon-framework:4.1.3::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      addModel( model );
+
+      model = toModel( "avalon-framework:avalon-framework:4.1.3" );
+      addModel( model );
+
+      model = toModel( "it.could:webdav:0.4" );
+      model.addDependency( toDependency( "javax.servlet:servlet-api:2.3::jar", "runtime" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus.webdav:plexus-webdav-simple:1.0-alpha-1" );
+      model.setParentProject( toParent( "org.codehaus.plexus.webdav:plexus-webdav-providers-parent:1.0-alpha-1" ) );
+      model.addDependency( toDependency( "commons-lang:commons-lang:2.1::jar" ) );
+      model.addDependency( toDependency( "it.could:webdav:0.4::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus.webdav:plexus-webdav-providers-parent:1.0-alpha-1" );
+      model.setParentProject( toParent( "org.codehaus.plexus.webdav:plexus-webdav-parent:1.0-alpha-1" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus.webdav:plexus-webdav-api:1.0-alpha-1::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus.webdav:plexus-webdav-test:1.0-alpha-1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus.webdav:plexus-webdav-parent:1.0-alpha-1" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus-components:1.1.8" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-components:1.1.8" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.9" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-component-api:1.0-alpha-15::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-15::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-component-api:1.0-alpha-15" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus-containers:1.0-alpha-15" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-classworlds:1.2-alpha-6::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-containers:1.0-alpha-15" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.9" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "compile" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-classworlds:1.2-alpha-6::jar" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-component-api:1.0-alpha-15::jar" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-utils:1.3::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-classworlds:1.2-alpha-6" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus:1.0.9" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "compile" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-container-default:1.0-alpha-15" );
+      model.setParentProject( toParent( "org.codehaus.plexus:plexus-containers:1.0-alpha-15" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-component-api:1.0-alpha-15::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.3::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-classworlds:1.2-alpha-6::jar" ) );
+      model.addDependency( toDependency( "jmock:jmock:1.0.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus.webdav:plexus-webdav-api:1.0-alpha-1" );
+      model.setParentProject( toParent( "org.codehaus.plexus.webdav:plexus-webdav-parent:1.0-alpha-1" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-component-api:1.0-alpha-16::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-16::jar" ) );
+      model.addDependency( toDependency( "javax.servlet:servlet-api:2.3::jar" ) );
+      model.addDependency( toDependency( "commons-lang:commons-lang:2.1::jar" ) );
+      addModel( model );
+
+      model = toModel( "commons-lang:commons-lang:2.1" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus.webdav:plexus-webdav-test:1.0-alpha-1" );
+      addModel( model );
+
+      model = toModel( "org.mortbay.jetty:jetty:6.0.2" );
+      model.setParentProject( toParent( "org.mortbay.jetty:project:6.0.2" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependency( toDependency( "org.mortbay.jetty:jetty-util:6.0.2::jar" ) );
+      model.addDependency( toDependency( "org.mortbay.jetty:servlet-api-2.5:6.0.2::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.mortbay.jetty:project:6.0.2" );
+      model.addDependencyManagement( toDependency( "org.apache.maven:maven-plugin-tools-api:2.0::jar" ) );
+      model.addDependencyManagement( toDependency( "junit:junit:3.8.1::jar" ) );
+      model.addDependencyManagement( toDependency( "org.slf4j:jcl104-over-slf4j:1.0.1::jar" ) );
+      model.addDependencyManagement( toDependency( "org.slf4j:slf4j-simple:1.0.1::jar" ) );
+      model.addDependencyManagement( toDependency( "mx4j:mx4j:3.0.1::jar" ) );
+      model.addDependencyManagement( toDependency( "mx4j:mx4j-tools:3.0.1::jar" ) );
+      model.addDependencyManagement( toDependency( "xerces:xercesImpl:${xerces-version}::jar" ) );
+      model.addDependencyManagement( toDependency( "commons-el:commons-el:1.0::jar" ) );
+      model.addDependencyManagement( toDependency( "ant:ant:1.6.5::jar" ) );
+      model.addDependencyManagement( toDependency( "javax.mail:mail:1.4::jar" ) );
+      model.addDependencyManagement( toDependency( "javax.activation:activation:1.1::jar" ) );
+      model.addProperty( "jasper-version", "5.5.15" );
+      model.addProperty( "junit-version", "3.8.1" );
+      model.addProperty( "ant-version", "1.6.5" );
+      model.addProperty( "mail-version", "1.4" );
+      model.addProperty( "commons-el-version", "1.0" );
+      model.addProperty( "slf4j-version", "1.0.1" );
+      model.addProperty( "eclipse-compiler-version", "3.1.1" );
+      model.addProperty( "mx4j-version", "3.0.1" );
+      model.addProperty( "jta-spec-version", "1.0.1B-rc4" );
+      model.addProperty( "activation-version", "1.1" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-plugin-tools-api:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven-plugin-tools:2.0" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-project:2.0::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-plugin-descriptor:2.0::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-plugin-tools:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven:2.0" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven:2.0" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8::jar" ) );
+      model.addDependencyManagement( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-provider-api:1.0-alpha-5::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-ssh:1.0-alpha-5::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-file:1.0-alpha-5::jar" ) );
+      model.addDependencyManagement( toDependency( "org.apache.maven.wagon:wagon-http-lightweight:1.0-alpha-5::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8" );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar", "compile" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "compile" ) );
+      model.addDependency( toDependency( "classworlds:classworlds:1.1-alpha-2::jar", "compile" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-provider-api:1.0-alpha-5" );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar", "compile" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-ssh:1.0-alpha-5" );
+      model.addDependency( toDependency( "com.jcraft:jsch:0.1.23::jar", "compile" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar", "compile" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-api:1.0-alpha-5::jar", "compile" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8::jar", "compile" ) );
+      model.addDependency( toDependency( "classworlds:classworlds:1.1-alpha-2::jar", "compile" ) );
+      model.addDependency( toDependency( "plexus:plexus-utils:1.0.2::jar", "compile" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-interactivity-api:1.0-alpha-4::jar", "compile" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-test:1.0-alpha-5::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "com.jcraft:jsch:0.1.23" );
+      addModel( model );
+
+      model = toModel( "plexus:plexus-utils:1.0.2" );
+      model.setParentProject( toParent( "plexus:plexus-root:1.0.3" ) );
+      addModel( model );
+
+      model = toModel( "plexus:plexus-root:1.0.3" );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-interactivity-api:1.0-alpha-4" );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-7::jar", "compile" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependency( toDependency( "classworlds:classworlds:1.1-alpha-2::jar", "compile" ) );
+      model.addDependency( toDependency( "plexus:plexus-utils:1.0.2::jar", "compile" ) );
+      addModel( model );
+
+      model = toModel( "org.codehaus.plexus:plexus-container-default:1.0-alpha-7" );
+      model.setParentProject( toParent( "plexus:plexus-containers:1.0.2" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "compile" ) );
+      model.addDependency( toDependency( "plexus:plexus-utils:1.0.2::jar" ) );
+      model.addDependency( toDependency( "classworlds:classworlds:1.1-alpha-2::jar" ) );
+      addModel( model );
+
+      model = toModel( "plexus:plexus-containers:1.0.2" );
+      model.setParentProject( toParent( "plexus:plexus-root:1.0.3" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-provider-test:1.0-alpha-5" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-file:1.0-alpha-5" );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar", "compile" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-api:1.0-alpha-5::jar", "compile" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8::jar", "test" ) );
+      model.addDependency( toDependency( "classworlds:classworlds:1.1-alpha-2::jar", "test" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-test:1.0-alpha-5::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven.wagon:wagon-http-lightweight:1.0-alpha-5" );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar", "compile" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-api:1.0-alpha-5::jar", "compile" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8::jar", "test" ) );
+      model.addDependency( toDependency( "servletapi:servletapi:2.3::jar", "test" ) );
+      model.addDependency( toDependency( "classworlds:classworlds:1.1-alpha-2::jar", "test" ) );
+      model.addDependency( toDependency( "jetty:jetty:4.2.10::jar", "test" ) );
+      model.addDependency( toDependency( "plexus:plexus-jetty-httpd:1.0-beta-1::jar", "test" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-test:1.0-alpha-5::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-project:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven:2.0" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-artifact-test:2.0::jar", "test" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-profile:2.0::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-model:2.0::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-artifact-manager:2.0::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-artifact:2.0::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-artifact-test:2.0" );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-profile:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven:2.0" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-model:2.0::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-model:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven:2.0" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-artifact-manager:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven:2.0" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-repository-metadata:2.0::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-file:1.0-alpha-5::jar", "test" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-artifact:2.0::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven.wagon:wagon-provider-api:1.0-alpha-5::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-repository-metadata:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven:2.0" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-artifact:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven:2.0" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-utils:1.0.4::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-plugin-descriptor:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven:2.0" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-plugin-api:2.0::jar" ) );
+      model.addDependency( toDependency( "org.apache.maven:maven-artifact:2.0::jar" ) );
+      model.addDependency( toDependency( "org.codehaus.plexus:plexus-container-default:1.0-alpha-8::jar" ) );
+      addModel( model );
+
+      model = toModel( "org.apache.maven:maven-plugin-api:2.0" );
+      model.setParentProject( toParent( "org.apache.maven:maven:2.0" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      addModel( model );
+
+      model = toModel( "org.slf4j:jcl104-over-slf4j:1.0.1" );
+      addModel( model );
+
+      model = toModel( "org.slf4j:slf4j-simple:1.0.1" );
+      addModel( model );
+
+      model = toModel( "mx4j:mx4j:3.0.1" );
+      addModel( model );
+
+      model = toModel( "mx4j:mx4j-tools:3.0.1" );
+      addModel( model );
+
+      model = toModel( "xerces:xercesImpl:${xerces-version}" );
+      addModel( model );
+
+      model = toModel( "commons-el:commons-el:1.0" );
+      model.addDependency( toDependency( "servletapi:servletapi:2.4-20040521::jar", "provided" ) );
+      model.addDependency( toDependency( "jspapi:jsp-api:2.0-20040521::jar", "provided" ) );
+      model.addDependency( toDependency( "commons-logging:commons-logging:1.0.3::jar" ) );
+      addModel( model );
+
+      model = toModel( "servletapi:servletapi:2.4-20040521" );
+      addModel( model );
+
+      model = toModel( "jspapi:jsp-api:2.0-20040521" );
+      addModel( model );
+
+      model = toModel( "ant:ant:1.6.5" );
+      dep = toDependency( "xerces:xerces-impl:2.6.2::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      dep = toDependency( "xml-apis:xml-apis:2.6.2::jar" );
+      dep.setOptional( true );
+      model.addDependency( dep );
+      addModel( model );
+
+      model = toModel( "xerces:xerces-impl:2.6.2" );
+      addModel( model );
+
+      model = toModel( "xml-apis:xml-apis:2.6.2" );
+      addModel( model );
+
+      model = toModel( "javax.mail:mail:1.4" );
+      model.addDependency( toDependency( "javax.activation:activation:1.1::jar" ) );
+      addModel( model );
+
+      model = toModel( "javax.activation:activation:1.1" );
+      addModel( model );
+
+      model = toModel( "org.mortbay.jetty:jetty-util:6.0.2" );
+      model.setParentProject( toParent( "org.mortbay.jetty:project:6.0.2" ) );
+      model.addDependency( toDependency( "junit:junit:3.8.1::jar", "test" ) );
+      model.addDependency( toDependency( "org.mortbay.jetty:servlet-api-2.5:6.0.2::jar", "provided" ) );
+      addModel( model );
+
+      model = toModel( "org.mortbay.jetty:servlet-api-2.5:6.0.2" );
+      model.setParentProject( toParent( "org.mortbay.jetty:project:6.0.2" ) );
+      addModel( model );
+
+   }
+}

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/WagonManagerMemoryRepository.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/WagonManagerMemoryRepository.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/WagonManagerMemoryRepository.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/functors/ToKeyTransformer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/functors/ToKeyTransformer.java?view=auto&rev=547277
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/functors/ToKeyTransformer.java (added)
+++ maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/functors/ToKeyTransformer.java Thu Jun 14 08:25:42 2007
@@ -0,0 +1,67 @@
+package org.apache.maven.archiva.dependency.graph.functors;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.commons.collections.Transformer;
+import org.apache.maven.archiva.dependency.graph.DependencyGraphEdge;
+import org.apache.maven.archiva.dependency.graph.DependencyGraphKeys;
+import org.apache.maven.archiva.dependency.graph.DependencyGraphNode;
+import org.apache.maven.archiva.dependency.graph.Keys;
+import org.apache.maven.archiva.model.ArchivaProjectModel;
+import org.apache.maven.archiva.model.ArtifactReference;
+
+/**
+ * ToKeyTransformer 
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ToKeyTransformer
+    implements Transformer
+{
+
+    public Object transform( Object input )
+    {
+        if ( input instanceof ArchivaProjectModel )
+        {
+            return Keys.toKey( (ArchivaProjectModel) input );
+        }
+
+        if ( input instanceof DependencyGraphNode )
+        {
+            return DependencyGraphKeys.toKey( ((DependencyGraphNode) input).getArtifact() );
+        }
+
+        if ( input instanceof DependencyGraphEdge )
+        {
+            DependencyGraphEdge edge = (DependencyGraphEdge) input;
+            // Potentially Confusing, but this is called "To"KeyTransformer after all.
+            return DependencyGraphKeys.toKey( edge.getNodeTo() );
+        }
+
+        if ( input instanceof ArtifactReference )
+        {
+            return DependencyGraphKeys.toKey( ((ArtifactReference) input) );
+        }
+
+        return input;
+    }
+
+}

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/functors/ToKeyTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/functors/ToKeyTransformer.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/functors/ToKeyTransformer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/tasks/DependencyManagementStackTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/tasks/DependencyManagementStackTest.java?view=auto&rev=547277
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/tasks/DependencyManagementStackTest.java (added)
+++ maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/tasks/DependencyManagementStackTest.java Thu Jun 14 08:25:42 2007
@@ -0,0 +1,227 @@
+package org.apache.maven.archiva.dependency.graph.tasks;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.archiva.dependency.graph.DependencyGraphNode;
+import org.apache.maven.archiva.dependency.graph.tasks.DependencyManagementStack;
+import org.apache.maven.archiva.dependency.graph.tasks.DependencyManagementStack.Rules;
+import org.apache.maven.archiva.model.ArtifactReference;
+import org.apache.maven.archiva.model.Dependency;
+
+import junit.framework.TestCase;
+
+/**
+ * DependencyManagementStackTest 
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class DependencyManagementStackTest
+    extends TestCase
+{
+    public DependencyGraphNode toNode( String key )
+    {
+        String parts[] = StringUtils.splitPreserveAllTokens( key, ":" );
+        assertEquals( "toNode(" + key + ") requires 5 parts", 5, parts.length );
+
+        ArtifactReference ref = new ArtifactReference();
+        ref.setGroupId( parts[0] );
+        ref.setArtifactId( parts[1] );
+        ref.setVersion( parts[2] );
+        ref.setClassifier( parts[3] );
+        ref.setType( parts[4] );
+
+        return new DependencyGraphNode( ref );
+    }
+
+    protected Dependency toDependency( String key )
+    {
+        String parts[] = StringUtils.splitPreserveAllTokens( key, ':' );
+
+        assertEquals( "Dependency key [" + key + "] should be 5 parts.", 5, parts.length );
+
+        Dependency dep = new Dependency();
+
+        dep.setGroupId( parts[0] );
+        dep.setArtifactId( parts[1] );
+        dep.setVersion( parts[2] );
+        dep.setClassifier( parts[3] );
+        dep.setType( parts[4] );
+
+        return dep;
+    }
+
+    public void testPushPopSimple()
+    {
+        DependencyGraphNode node = toNode( "org.apache.maven.archiva:depmanstack-testcase:1.0::jar" );
+        Dependency dep = toDependency( "junit:junit:3.8.1::jar" );
+        dep.setScope( "test" );
+        node.addDependencyManagement( dep );
+
+        DependencyManagementStack stack = new DependencyManagementStack();
+        stack.push( node );
+        DependencyGraphNode oldnode = stack.pop();
+        assertEquals( "added node to old node", node, oldnode );
+    }
+
+    public void testPushPopTwoDeep()
+    {
+        DependencyManagementStack stack = new DependencyManagementStack();
+        Dependency dep;
+
+        // top node.
+        DependencyGraphNode projectNode = toNode( "org.apache.maven.archiva:depmanstack-testcase:1.0::jar" );
+        dep = toDependency( "junit:junit:3.8.1::jar" );
+        dep.setScope( "test" );
+        projectNode.addDependencyManagement( dep );
+        stack.push( projectNode );
+
+        // direct node.
+        DependencyGraphNode directNode = toNode( "org.apache.maven.archiva:depmanstack-common:1.0::jar" );
+        dep = toDependency( "junit:junit:3.7::jar" );
+        dep.setScope( "test" );
+        directNode.addDependencyManagement( dep );
+        stack.push( directNode );
+
+        // transitive node.
+        DependencyGraphNode transNode = toNode( "org.apache.maven.archiva:depmanstack-model:1.0::jar" );
+        dep = toDependency( "junit:junit:3.7::jar" );
+        transNode.addDependencyManagement( dep );
+        stack.push( transNode );
+
+        // Test it
+        assertEquals( "popped node is trans node", transNode, stack.pop() );
+        assertEquals( "popped node is direct node", directNode, stack.pop() );
+        assertEquals( "popped node is project node", projectNode, stack.pop() );
+    }
+
+    public void testApplyNodeVersionParentWins()
+    {
+        DependencyManagementStack stack = new DependencyManagementStack();
+        Dependency dep;
+
+        // top node.
+        DependencyGraphNode projectNode = toNode( "org.apache.maven.archiva:depmanstack-testcase:1.0::jar" );
+        dep = toDependency( "junit:junit:3.8.1::jar" );
+        dep.setScope( "test" );
+        projectNode.addDependencyManagement( dep );
+        stack.push( projectNode );
+
+        // direct node.
+        DependencyGraphNode directNode = toNode( "org.apache.maven.archiva:depmanstack-common:1.0::jar" );
+        dep = toDependency( "junit:junit:3.7::jar" );
+        dep.setScope( "test" );
+        directNode.addDependencyManagement( dep );
+        stack.push( directNode );
+
+        // transitive node.
+        DependencyGraphNode transNode = toNode( "org.apache.maven.archiva:depmanstack-model:1.0::jar" );
+        dep = toDependency( "junit:junit:3.7.1::jar" );
+        transNode.addDependencyManagement( dep );
+        stack.push( transNode );
+
+        // Test it
+        DependencyGraphNode junitNode = toNode( "junit:junit:1.0::jar" );
+
+        assertRules( "junit (lvl:trans)", stack, junitNode, "3.8.1", "test", null );
+        stack.pop();
+        assertRules( "junit (lvl:direct)", stack, junitNode, "3.8.1", "test", null );
+        stack.pop();
+        assertRules( "junit (lvl:project)", stack, junitNode, "3.8.1", "test", null );
+    }
+
+    /**
+     * This test is based off of Carlos Sanchez's depman example use case.
+     *
+     * In a simple project chain of A:1.0 -&gt; B:1.0 -&gt; C:1.0 -&gt; D:1.0
+     * If B:1.0 has a dependency management section stating dep D should be version 2.0
+     * Then the dep D when viewed from A should be version 2.0 
+     */
+    public void testApplyNodeVersionCarlosABCD()
+    {
+        DependencyManagementStack stack = new DependencyManagementStack();
+        Dependency dep;
+
+        // project node, A
+        DependencyGraphNode nodeA = toNode( "org.apache.maven.archiva:carlos-A:1.0::jar" );
+        stack.push( nodeA );
+
+        // sub node, B
+        DependencyGraphNode nodeB = toNode( "org.apache.maven.archiva:carlos-B:1.0::jar" );
+        dep = toDependency( "org.apache.maven.archiva:carlos-D:2.0::jar" );
+        nodeB.addDependencyManagement( dep );
+        stack.push( nodeB );
+
+        // sub node, C
+        DependencyGraphNode nodeC = toNode( "org.apache.maven.archiva:carlos-C:1.0::jar" );
+        stack.push( nodeC );
+
+        // sub node, D
+        // Not added to the stack, as this is the node that is having the rules applied to it.
+        DependencyGraphNode nodeD = toNode( "org.apache.maven.archiva:carlos-D:1.0::jar" );
+
+        // Test it
+        assertRules( "node D (lvl:C)", stack, nodeD, "2.0", null, null );
+        stack.pop();
+        assertRules( "node D (lvl:B)", stack, nodeD, "2.0", null, null );
+        stack.pop();
+        assertNoRules( "node D (lvl:A)", stack, nodeD, "2.0", null, null );
+    }
+
+    /**
+     * Test for expected rules, that should be enforced for the provided node.
+     * NOTE: This test will update the node.artifact.version to whatever is stated in the rules.
+     */
+    private void assertRules( String msg, DependencyManagementStack stack, DependencyGraphNode node,
+                              String expectedVersion, String expectedScope, String expectedExclusions[] )
+    {
+        Rules rules = stack.getRules( node );
+        assertNotNull( msg + " rules should not be null.", rules );
+
+        node.getArtifact().setVersion( rules.artifact.getVersion() );
+
+        assertEquals( msg + ": version", expectedVersion, rules.artifact.getVersion() );
+        assertEquals( msg + ": scope", expectedScope, rules.scope );
+
+        if ( expectedExclusions != null )
+        {
+            // TODO: test for exclusion settings.
+        }
+    }
+
+    /**
+     * Test for when there are no rules being enforced for the provided node.
+     * Similar to assertRules() above.
+     */
+    private void assertNoRules( String msg, DependencyManagementStack stack, DependencyGraphNode node,
+                                String expectedVersion, String expectedScope, String expectedExclusions[] )
+    {
+        Rules rules = stack.getRules( node );
+        assertNull( msg + " rules should be null.", rules );
+
+        assertEquals( msg + ": version", expectedVersion, node.getArtifact().getVersion() );
+
+        if ( expectedExclusions != null )
+        {
+            // TODO: test for exclusion settings.
+        }
+    }
+}

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/tasks/DependencyManagementStackTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/tasks/DependencyManagementStackTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/tasks/DependencyManagementStackTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/DependencyGraphWalkerTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/DependencyGraphWalkerTest.java?view=auto&rev=547277
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/DependencyGraphWalkerTest.java (added)
+++ maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/DependencyGraphWalkerTest.java Thu Jun 14 08:25:42 2007
@@ -0,0 +1,231 @@
+package org.apache.maven.archiva.dependency.graph.walk;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.archiva.dependency.graph.DependencyGraph;
+import org.apache.maven.archiva.dependency.graph.DependencyGraphEdge;
+import org.apache.maven.archiva.dependency.graph.DependencyGraphKeys;
+import org.apache.maven.archiva.dependency.graph.DependencyGraphNode;
+import org.apache.maven.archiva.dependency.graph.tasks.FlagCyclicEdgesTask;
+import org.apache.maven.archiva.dependency.graph.walk.DependencyGraphWalker;
+import org.apache.maven.archiva.dependency.graph.walk.WalkDepthFirstSearch;
+import org.apache.maven.archiva.model.ArtifactReference;
+
+import java.util.List;
+
+import junit.framework.TestCase;
+
+/**
+ * DependencyGraphWalkerTest 
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class DependencyGraphWalkerTest
+    extends TestCase
+{
+    /**
+     * <pre>
+     *  [foo-util] ---&gt; [foo-common]
+     *      \
+     *       ---------&gt; [foo-xml] ---&gt; [xercesImpl] ---&gt; [xmlParserAPIs]
+     *                        \  \
+     *                         \  ---&gt; [jdom] ----+
+     *                          \                 |
+     *                           ----&gt; [jaxen] &lt;--+
+     * </pre>
+     */
+    public void testModerateWalk()
+    {
+        DependencyGraph graph = new DependencyGraph( "org.foo", "foo-util", "1.0" );
+        String rootKey = DependencyGraphKeys.toKey( graph.getRootNode().getArtifact() );
+        addEdgeAndNodes( graph, toEdge( rootKey, "org.foo:foo-common:1.0::jar" ) );
+        addEdgeAndNodes( graph, toEdge( rootKey, "org.foo:foo-xml:1.0::jar" ) );
+
+        addEdgeAndNodes( graph, toEdge( "org.foo:foo-xml:1.0::jar", "xerces:xercesImpl:2.2.1::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "xerces:xercesImpl:2.2.1::jar", "xerces:xmlParserAPIs:2.2.1::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "org.foo:foo-xml:1.0::jar", "jdom:jdom:1.0::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "org.foo:foo-xml:1.0::jar", "jaxen:jaxen:1.0::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "jdom:jdom:1.0::jar", "jaxen:jaxen:1.0::jar" ) );
+
+        DependencyGraphWalker walker = new WalkDepthFirstSearch();
+        WalkCollector walkCollector = new WalkCollector();
+        walker.visit( graph, walkCollector );
+
+        String expectedPath[] = new String[] {
+            rootKey,
+            "org.foo:foo-common:1.0::jar",
+            "org.foo:foo-xml:1.0::jar",
+            "jaxen:jaxen:1.0::jar",
+            "xerces:xercesImpl:2.2.1::jar",
+            "xerces:xmlParserAPIs:2.2.1::jar",
+            "jdom:jdom:1.0::jar" };
+
+        assertVisitor( walkCollector, 1, 7, 7 );
+        assertPath( expectedPath, walkCollector.getCollectedPath() );
+    }
+
+    /**
+     * <pre>
+     *  [foo-util] ---&gt; [foo-common]
+     *      \
+     *       ---------&gt; [foo-xml] ---&gt; [xercesImpl] ---&gt; [xmlParserAPIs]
+     * </pre>
+     */
+    public void testSimpleWalk()
+    {
+        DependencyGraph graph = new DependencyGraph( "org.foo", "foo-util", "1.0" );
+        String rootKey = DependencyGraphKeys.toKey( graph.getRootNode().getArtifact() );
+        addEdgeAndNodes( graph, toEdge( rootKey, "org.foo:foo-common:1.0::jar" ) );
+        addEdgeAndNodes( graph, toEdge( rootKey, "org.foo:foo-xml:1.0::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "org.foo:foo-xml:1.0::jar", "xerces:xercesImpl:2.2.1::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "xerces:xercesImpl:2.2.1::jar", "xerces:xmlParserAPIs:2.2.1::jar" ) );
+
+        DependencyGraphWalker walker = new WalkDepthFirstSearch();
+        WalkCollector walkCollector = new WalkCollector();
+        walker.visit( graph, walkCollector );
+
+        String expectedPath[] = new String[] {
+            rootKey,
+            "org.foo:foo-common:1.0::jar",
+            "org.foo:foo-xml:1.0::jar",
+            "xerces:xercesImpl:2.2.1::jar",
+            "xerces:xmlParserAPIs:2.2.1::jar" };
+
+        assertVisitor( walkCollector, 1, 5, 4 );
+        assertPath( expectedPath, walkCollector.getCollectedPath() );
+    }
+
+    /**
+     * <pre>
+     *  [foo-util] ---&gt; [foo-common]
+     *      \
+     *       \              +----------------------------------------+
+     *        \             v                                        |
+     *         -------&gt; [foo-xml] ---&gt; [xercesImpl] ---&gt; [xmlParserAPIs]
+     *                        \  \
+     *                         \  ---&gt; [jdom] ----+
+     *                          \                 |
+     *                           ----&gt; [jaxen] &lt;--+
+     * </pre>
+     */
+    public void testDeepNodeWalk()
+    {
+        DependencyGraph graph = new DependencyGraph( "org.foo", "foo-util", "1.0" );
+        String rootKey = DependencyGraphKeys.toKey( graph.getRootNode().getArtifact() );
+        addEdgeAndNodes( graph, toEdge( rootKey, "org.foo:foo-common:1.0::jar" ) );
+        addEdgeAndNodes( graph, toEdge( rootKey, "org.foo:foo-xml:1.0::jar" ) );
+
+        addEdgeAndNodes( graph, toEdge( "org.foo:foo-xml:1.0::jar", "xerces:xercesImpl:2.2.1::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "xerces:xercesImpl:2.2.1::jar", "xerces:xmlParserAPIs:2.2.1::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "org.foo:foo-xml:1.0::jar", "jdom:jdom:1.0::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "org.foo:foo-xml:1.0::jar", "jaxen:jaxen:1.0::jar" ) );
+        addEdgeAndNodes( graph, toEdge( "jdom:jdom:1.0::jar", "jaxen:jaxen:1.0::jar" ) );
+        // introduce cyclic dep. intentional. should only result in walking to foo-xml once. 
+        addEdgeAndNodes( graph, toEdge( "xerces:xmlParserAPIs:2.2.1::jar", "org.foo:foo-xml:1.0::jar" ) );
+
+        new FlagCyclicEdgesTask().executeTask( graph );
+
+        DependencyGraphWalker walker = new WalkDepthFirstSearch();
+        WalkCollector walkCollector = new WalkCollector();
+        ArtifactReference startRef = toArtifactReference( "org.foo:foo-xml:1.0::jar" );
+        DependencyGraphNode startNode = new DependencyGraphNode( startRef );
+        walker.visit( graph, startNode, walkCollector );
+
+        String expectedPath[] = new String[] {
+            "org.foo:foo-xml:1.0::jar",
+            "jaxen:jaxen:1.0::jar",
+            "xerces:xercesImpl:2.2.1::jar",
+            "xerces:xmlParserAPIs:2.2.1::jar",
+            "jdom:jdom:1.0::jar" };
+
+        assertVisitor( walkCollector, 1, 5, 6 );
+        assertPath( expectedPath, walkCollector.getCollectedPath() );
+    }
+
+    private void addEdgeAndNodes( DependencyGraph graph, DependencyGraphEdge edge )
+    {
+        ensureNodeExists( graph, edge.getNodeFrom() );
+        ensureNodeExists( graph, edge.getNodeTo() );
+        graph.addEdge( edge );
+    }
+
+    private void ensureNodeExists( DependencyGraph graph, ArtifactReference artifact )
+    {
+        DependencyGraphNode node = graph.getNode( artifact );
+        if ( node == null )
+        {
+            node = new DependencyGraphNode( artifact );
+            graph.addNode( node );
+        }
+    }
+
+    private void assertPath( String[] expectedPath, List collectedPath )
+    {
+        assertEquals( "Path.length", expectedPath.length, collectedPath.size() );
+
+        for ( int i = 0; i < expectedPath.length; i++ )
+        {
+            assertEquals( "Walk path[" + i + "]", expectedPath[i], (String) collectedPath.get( i ) );
+        }
+    }
+
+    private void assertVisitor( WalkCollector walkCollector, int countGraphs, int countNodes, int countEdges )
+    {
+        assertEquals( "Count of graph discovery.", countGraphs, walkCollector.getCountDiscoverGraph() );
+        assertEquals( "Count of graph finished.", countGraphs, walkCollector.getCountFinishGraph() );
+        assertEquals( "Discover - Finish = 0 (on graph counts)", 0,
+                      ( walkCollector.getCountDiscoverGraph() - walkCollector.getCountFinishGraph() ) );
+
+        assertEquals( "Count of node discovery.", countNodes, walkCollector.getCountDiscoverNode() );
+        assertEquals( "Count of node finished.", countNodes, walkCollector.getCountFinishNode() );
+        assertEquals( "Discover - Finish = 0 (on node counts)", 0,
+                      ( walkCollector.getCountDiscoverNode() - walkCollector.getCountFinishNode() ) );
+
+        assertEquals( "Count of edge discovery.", countEdges, walkCollector.getCountDiscoverEdge() );
+        assertEquals( "Count of edge finished.", countEdges, walkCollector.getCountFinishEdge() );
+        assertEquals( "Discover - Finish = 0 (on edge counts)", 0,
+                      ( walkCollector.getCountDiscoverEdge() - walkCollector.getCountFinishEdge() ) );
+    }
+
+    private DependencyGraphEdge toEdge( String fromKey, String toKey )
+    {
+        ArtifactReference nodeFrom = toArtifactReference( fromKey );
+        ArtifactReference nodeTo = toArtifactReference( toKey );
+
+        return new DependencyGraphEdge( nodeFrom, nodeTo );
+    }
+
+    private ArtifactReference toArtifactReference( String key )
+    {
+        String parts[] = StringUtils.splitPreserveAllTokens( key, ':' );
+        assertEquals( "ArtifactReference [" + key + "] parts should equal 5", 5, parts.length );
+
+        ArtifactReference artifact = new ArtifactReference();
+        artifact.setGroupId( parts[0] );
+        artifact.setArtifactId( parts[1] );
+        artifact.setVersion( parts[2] );
+        artifact.setClassifier( parts[3] );
+        artifact.setType( parts[4] );
+
+        return artifact;
+    }
+}

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/DependencyGraphWalkerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/DependencyGraphWalkerTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/DependencyGraphWalkerTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/WalkCollector.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/WalkCollector.java?view=auto&rev=547277
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/WalkCollector.java (added)
+++ maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/WalkCollector.java Thu Jun 14 08:25:42 2007
@@ -0,0 +1,98 @@
+/**
+ * 
+ */
+package org.apache.maven.archiva.dependency.graph.walk;
+
+import org.apache.maven.archiva.dependency.graph.DependencyGraph;
+import org.apache.maven.archiva.dependency.graph.DependencyGraphEdge;
+import org.apache.maven.archiva.dependency.graph.DependencyGraphNode;
+import org.apache.maven.archiva.dependency.graph.walk.DependencyGraphVisitor;
+import org.apache.maven.archiva.model.ArtifactReference;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class WalkCollector
+    implements DependencyGraphVisitor
+{
+    private List walkPath = new ArrayList();
+
+    private int countDiscoverGraph = 0;
+
+    private int countFinishGraph = 0;
+
+    private int countDiscoverNode = 0;
+
+    private int countFinishNode = 0;
+
+    private int countDiscoverEdge = 0;
+
+    private int countFinishEdge = 0;
+
+    public void discoverEdge( DependencyGraphEdge edge )
+    {
+        countDiscoverEdge++;
+    }
+
+    public void discoverGraph( DependencyGraph graph )
+    {
+        countDiscoverGraph++;
+    }
+
+    public void discoverNode( DependencyGraphNode node )
+    {
+        countDiscoverNode++;
+        walkPath.add( ArtifactReference.toKey( node.getArtifact() ) );
+    }
+
+    public void finishEdge( DependencyGraphEdge edge )
+    {
+        countFinishEdge++;
+    }
+
+    public void finishGraph( DependencyGraph graph )
+    {
+        countFinishGraph++;
+    }
+
+    public void finishNode( DependencyGraphNode node )
+    {
+        countFinishNode++;
+    }
+
+    public List getCollectedPath()
+    {
+        return walkPath;
+    }
+
+    public int getCountDiscoverEdge()
+    {
+        return countDiscoverEdge;
+    }
+
+    public int getCountDiscoverGraph()
+    {
+        return countDiscoverGraph;
+    }
+
+    public int getCountDiscoverNode()
+    {
+        return countDiscoverNode;
+    }
+
+    public int getCountFinishEdge()
+    {
+        return countFinishEdge;
+    }
+
+    public int getCountFinishGraph()
+    {
+        return countFinishGraph;
+    }
+
+    public int getCountFinishNode()
+    {
+        return countFinishNode;
+    }
+
+}
\ No newline at end of file

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/WalkCollector.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/WalkCollector.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/archiva/trunk/archiva-base/archiva-dependency-graph/src/test/java/org/apache/maven/archiva/dependency/graph/walk/WalkCollector.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: maven/archiva/trunk/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/DependencyScope.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/DependencyScope.java?view=diff&rev=547277&r1=547276&r2=547277
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/DependencyScope.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/DependencyScope.java Thu Jun 14 08:25:42 2007
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.commons.collections.map.MultiValueMap;
 import org.apache.commons.lang.StringUtils;
 
 /**
@@ -39,8 +40,64 @@
 
     public static final String TEST = "test";
 
+    private static final MultiValueMap scopeMap;
+
+    static
+    {
+        // Store the map of scopes to what other scopes are 'within' that scope.
+        scopeMap = new MultiValueMap();
+
+        scopeMap.put( COMPILE, COMPILE );
+        scopeMap.put( COMPILE, RUNTIME );
+        scopeMap.put( COMPILE, PROVIDED );
+        scopeMap.put( COMPILE, SYSTEM );
+
+        scopeMap.put( TEST, COMPILE );
+        scopeMap.put( TEST, RUNTIME );
+        scopeMap.put( TEST, PROVIDED );
+        scopeMap.put( TEST, SYSTEM );
+        scopeMap.put( TEST, TEST );
+        
+        scopeMap.put( RUNTIME, RUNTIME );
+        scopeMap.put( RUNTIME, PROVIDED );
+        scopeMap.put( RUNTIME, SYSTEM );
+        
+        scopeMap.put( PROVIDED, RUNTIME );
+        scopeMap.put( PROVIDED, PROVIDED );
+        scopeMap.put( PROVIDED, SYSTEM );
+        
+        scopeMap.put( SYSTEM, SYSTEM );
+    }
+
     public static boolean isSystemScoped( Dependency dep )
     {
         return StringUtils.equals( SYSTEM, dep.getScope() );
+    }
+
+    /**
+     * Test the provided scope against the desired scope to see if it is
+     * within that scope's pervue.
+     * 
+     * Examples: 
+     * actual:compile,  desired:test = true
+     * actual:compile,  desired:compile = true
+     * actual:test,     desired:compile = false
+     * actual:provided, desired:compile = false
+     * 
+     * @param actualScope
+     * @param desiredScope
+     * @return
+     */
+    public static boolean isWithinScope( String actualScope, String desiredScope )
+    {
+        if ( StringUtils.isBlank( desiredScope ) )
+        {
+            // nothing desired? everything should fail.
+            return false;
+        }
+
+        String scope = StringUtils.defaultIfEmpty( actualScope, COMPILE );
+
+        return scopeMap.containsValue( desiredScope, scope );
     }
 }

Modified: maven/archiva/trunk/archiva-base/archiva-model/src/main/mdo/archiva-base.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-model/src/main/mdo/archiva-base.xml?view=diff&rev=547277&r1=547276&r2=547277
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-model/src/main/mdo/archiva-base.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-model/src/main/mdo/archiva-base.xml Thu Jun 14 08:25:42 2007
@@ -979,6 +979,104 @@
     }
           ]]></code>
         </codeSegment>
+        <codeSegment>
+          <version>1.0.0+</version>
+          <code><![CDATA[
+    public int hashCode()
+    {
+        final int PRIME = 31;
+        int result = 1;
+        result = PRIME * result + ( ( groupId == null ) ? 0 : groupId.hashCode() );
+        result = PRIME * result + ( ( artifactId == null ) ? 0 : artifactId.hashCode() );
+        result = PRIME * result + ( ( version == null ) ? 0 : version.hashCode() );
+        result = PRIME * result + ( ( classifier == null ) ? 0 : classifier.hashCode() );
+        result = PRIME * result + ( ( type == null ) ? 0 : type.hashCode() );
+        return result;
+    }
+
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        
+        if ( obj == null )
+        {
+            return false;
+        }
+        
+        if ( getClass() != obj.getClass() )
+        {
+            return false;
+        }
+
+        final ArtifactReference other = (ArtifactReference) obj;
+
+        if ( groupId == null )
+        {
+            if ( other.groupId != null )
+            {
+                return false;
+            }
+        }
+        else if ( !groupId.equals( other.groupId ) )
+        {
+            return false;
+        }
+
+        if ( artifactId == null )
+        {
+            if ( other.artifactId != null )
+            {
+                return false;
+            }
+        }
+        else if ( !artifactId.equals( other.artifactId ) )
+        {
+            return false;
+        }
+
+        if ( version == null )
+        {
+            if ( other.version != null )
+            {
+                return false;
+            }
+        }
+        else if ( !version.equals( other.version ) )
+        {
+            return false;
+        }
+
+        if ( classifier == null )
+        {
+            if ( other.classifier != null )
+            {
+                return false;
+            }
+        }
+        else if ( !classifier.equals( other.classifier ) )
+        {
+            return false;
+        }
+        
+        if ( type == null )
+        {
+            if ( other.type != null )
+            {
+                return false;
+            }
+        }
+        else if ( !type.equals( other.type ) )
+        {
+            return false;
+        }
+        
+        return true;
+    }          
+          ]]></code>
+        </codeSegment>
       </codeSegments>
     </class>
 
@@ -1269,6 +1367,16 @@
             <multiplicity>*</multiplicity>
           </association>
         </field>
+        <field>
+          <name>relocation</name>
+          <version>1.0.0+</version>
+          <description>If relocated, this is the new location reference</description>
+          <association stash.part="true"
+                       jpox.join="false">
+            <type>VersionedReference</type>
+            <multiplicity>1</multiplicity>
+          </association>
+        </field>
       </fields>
       <codeSegments>
         <codeSegment>
@@ -1678,10 +1786,18 @@
         <field>
           <name>transitive</name>
           <version>1.0.0+</version>
-          <required>true</required>
-          <description>True if the dependency node is only here due a transitive lookup</description>
+          <required>false</required>
+          <description>True if the dependency is only here due a transitive resolution</description>
+          <type>boolean</type>
+          <!-- <defaultValue>false</defaultValue> -->
+        </field>
+        <field>
+          <name>fromParent</name>
+          <version>1.0.0+</version>
+          <required>false</required>
+          <description>True if the dependency is only here due a parent pom</description>
           <type>boolean</type>
-          <defaultValue>false</defaultValue>
+          <!-- <defaultValue>false</defaultValue> -->
         </field>
         <field stash.maxsize="256">
           <name>url</name>

Added: maven/archiva/trunk/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/DependencyScopeTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/DependencyScopeTest.java?view=auto&rev=547277
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/DependencyScopeTest.java (added)
+++ maven/archiva/trunk/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/DependencyScopeTest.java Thu Jun 14 08:25:42 2007
@@ -0,0 +1,73 @@
+package org.apache.maven.archiva.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * DependencyScopeTest 
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class DependencyScopeTest
+    extends TestCase
+{
+    public void testIsWithinScope()
+    {
+        // Test on blank / empty desired scopes.
+        assertFalse( DependencyScope.isWithinScope( "compile", null ) );
+        assertFalse( DependencyScope.isWithinScope( "test", null ) );
+        assertFalse( DependencyScope.isWithinScope( "runtime", null ) );
+        assertFalse( DependencyScope.isWithinScope( "provided", null ) );
+        assertFalse( DependencyScope.isWithinScope( "compile", "" ) );
+        assertFalse( DependencyScope.isWithinScope( "test", "" ) );
+        assertFalse( DependencyScope.isWithinScope( "runtime", "" ) );
+        assertFalse( DependencyScope.isWithinScope( "provided", "" ) );
+
+        // Tests on blank / empty actual scopes.
+        assertTrue( DependencyScope.isWithinScope( "", DependencyScope.COMPILE ) );
+        assertTrue( DependencyScope.isWithinScope( null, DependencyScope.COMPILE ) );
+        assertTrue( DependencyScope.isWithinScope( "", DependencyScope.TEST ) );
+        assertTrue( DependencyScope.isWithinScope( null, DependencyScope.TEST ) );
+        assertFalse( DependencyScope.isWithinScope( "", DependencyScope.PROVIDED ) );
+        assertFalse( DependencyScope.isWithinScope( null, DependencyScope.PROVIDED ) );
+        assertFalse( DependencyScope.isWithinScope( "", DependencyScope.RUNTIME ) );
+        assertFalse( DependencyScope.isWithinScope( null, DependencyScope.RUNTIME ) );
+
+        // Tests on compile desired scopes.
+        assertTrue( DependencyScope.isWithinScope( "compile", DependencyScope.COMPILE ) );
+        assertFalse( DependencyScope.isWithinScope( "test", DependencyScope.COMPILE ) );
+
+        // Tests on test desired scopes.
+        assertTrue( DependencyScope.isWithinScope( "compile", DependencyScope.TEST ) );
+        assertTrue( DependencyScope.isWithinScope( "test", DependencyScope.TEST ) );
+
+        // Tests on oddball scopes.
+        assertFalse( DependencyScope.isWithinScope( "compile", DependencyScope.PROVIDED ) );
+        assertFalse( DependencyScope.isWithinScope( "test", DependencyScope.PROVIDED ) );
+        assertTrue( DependencyScope.isWithinScope( "provided", DependencyScope.PROVIDED ) );
+
+        assertFalse( DependencyScope.isWithinScope( "compile", DependencyScope.RUNTIME ) );
+        assertFalse( DependencyScope.isWithinScope( "test", DependencyScope.RUNTIME ) );
+        assertTrue( DependencyScope.isWithinScope( "provided", DependencyScope.RUNTIME ) );
+        assertTrue( DependencyScope.isWithinScope( "runtime", DependencyScope.RUNTIME ) );
+    }
+}

Propchange: maven/archiva/trunk/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/DependencyScopeTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/DependencyScopeTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/archiva/trunk/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/DependencyScopeTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/pom.xml?view=diff&rev=547277&r1=547276&r2=547277
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/pom.xml (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/pom.xml Thu Jun 14 08:25:42 2007
@@ -34,6 +34,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.maven.archiva</groupId>
+      <artifactId>archiva-dependency-graph</artifactId>
+      <version>1.0-alpha-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.archiva</groupId>
       <artifactId>archiva-consumer-api</artifactId>
     </dependency>
     <dependency>