You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/07/06 19:10:57 UTC

svn commit: r553960 - in /maven/shared/trunk/maven-repository-builder: ./ src/main/java/org/apache/maven/shared/repository/ src/main/java/org/apache/maven/shared/repository/model/ src/test/java/org/apache/maven/shared/repository/ src/test/resources/pro...

Author: jdcasey
Date: Fri Jul  6 10:10:55 2007
New Revision: 553960

URL: http://svn.apache.org/viewvc?view=rev&rev=553960
Log:
first unit tests succeeds now.

Added:
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-SNAPSHOT.jar
      - copied unchanged from r553936, maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.jar
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-SNAPSHOT.pom
      - copied unchanged from r553936, maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.pom
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-SNAPSHOT.pom
      - copied unchanged from r553936, maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225814-3.pom
Removed:
    maven/shared/trunk/maven-repository-builder/src/test/resources/projects/massembly-210-direct-parent/src/main/java/
    maven/shared/trunk/maven-repository-builder/src/test/resources/projects/massembly-210-direct-parent/src/test/
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.jar
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.jar.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.jar.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.pom
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.pom.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.pom.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.jar
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.jar.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.jar.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.pom
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.pom.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.pom.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/maven-metadata.xml.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/maven-metadata.xml.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/maven-metadata.xml.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/maven-metadata.xml.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/maven-metadata.xml.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/maven-metadata.xml.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225538-1.pom
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225538-1.pom.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225538-1.pom.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225707-2.pom
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225707-2.pom.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225707-2.pom.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225814-3.pom
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225814-3.pom.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225814-3.pom.sha1
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/maven-metadata.xml.md5
    maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/maven-metadata.xml.sha1
Modified:
    maven/shared/trunk/maven-repository-builder/pom.xml
    maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java
    maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java
    maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java

Modified: maven/shared/trunk/maven-repository-builder/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-repository-builder/pom.xml?view=diff&rev=553960&r1=553959&r2=553960
==============================================================================
--- maven/shared/trunk/maven-repository-builder/pom.xml (original)
+++ maven/shared/trunk/maven-repository-builder/pom.xml Fri Jul  6 10:10:55 2007
@@ -54,6 +54,12 @@
       <version>1.0-beta-2</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-http-lightweight</artifactId>
+      <version>1.0-beta-2</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <plugins>
@@ -62,7 +68,7 @@
         <version>2.3</version>
         <configuration>
           <excludes>
-            <exclude>**/DefaultRepositoryBuilderTest.java</exclude>
+            <exclude>**/TestRepositoryBuilderConfigSource.java</exclude>
           </excludes>
         </configuration>
       </plugin>

Modified: maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java?view=diff&rev=553960&r1=553959&r2=553960
==============================================================================
--- maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java (original)
+++ maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java Fri Jul  6 10:10:55 2007
@@ -64,6 +64,7 @@
 import org.apache.maven.shared.repository.utils.DigestUtils;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 
@@ -121,12 +122,15 @@
                                        ArtifactRepositoryFactory artifactRepositoryFactory,
                                        ArtifactMetadataSource metadataSource, MavenProjectBuilder projectBuilder )
     {
+        // used for testing, primarily.
         this.artifactFactory = artifactFactory;
         this.artifactResolver = artifactResolver;
         this.repositoryLayout = repositoryLayout;
         this.artifactRepositoryFactory = artifactRepositoryFactory;
         this.metadataSource = metadataSource;
         this.projectBuilder = projectBuilder;
+
+        enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG, getClass().getName() + "::Internal" ) );
     }
 
     public void buildRemoteRepository( File repositoryDirectory, RepositoryInfo repository,
@@ -203,7 +207,7 @@
         }
 
         addPomWithAncestry( project.getArtifact(), project.getRemoteArtifactRepositories(), localRepository,
-                            targetRepository, groupVersionAlignments );
+                            targetRepository, groupVersionAlignments, project.getFile() );
     }
 
     private ArtifactFilter buildRepositoryFilter( RepositoryInfo repository, MavenProject project )
@@ -222,7 +226,9 @@
         // descriptor everytime the POM is updated.
         // ----------------------------------------------------------------------------
 
-        if ( repository.getIncludes().isEmpty() )
+        List includes = repository.getIncludes();
+
+        if ( ( includes == null ) || includes.isEmpty() )
         {
             List patterns = new ArrayList();
 
@@ -255,7 +261,9 @@
         // up everything.
         // ----------------------------------------------------------------------------
 
-        if ( !repository.getExcludes().isEmpty() )
+        List excludes = repository.getExcludes();
+
+        if ( ( excludes != null ) && !excludes.isEmpty() )
         {
             filter.add( new PatternExcludesArtifactFilter( repository.getExcludes(), true ) );
         }
@@ -299,7 +307,7 @@
 
                     writeChecksums( targetFile );
 
-                    addPomWithAncestry( a, project.getRemoteArtifactRepositories(), localRepository, targetRepository, groupVersionAlignments );
+                    addPomWithAncestry( a, project.getRemoteArtifactRepositories(), localRepository, targetRepository, groupVersionAlignments, null );
                 }
             }
         }
@@ -317,29 +325,44 @@
         }
     }
 
+    /**
+     *
+     * @param pomFileOverride This is used to allow injection of a POM's file directly, for
+     *         cases where the POM has not been installed into the repository yet.
+     */
     private void addPomWithAncestry( Artifact artifact, List remoteArtifactRepositories,
                                      ArtifactRepository localRepository, ArtifactRepository targetRepository,
-                                     Map groupVersionAlignments )
+                                     Map groupVersionAlignments, File pomFileOverride )
         throws RepositoryAssemblyException
     {
-        artifact = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+        String type = artifact.getType();
 
         MavenProject p;
         try
         {
-            p = projectBuilder.buildFromRepository( artifact,
-                                                                 remoteArtifactRepositories,
-                                                                 localRepository );
+            if ( pomFileOverride == null )
+            {
+                artifact = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+                p = projectBuilder.buildFromRepository( artifact, remoteArtifactRepositories, localRepository );
+            }
+            else
+            {
+                p = projectBuilder.build( pomFileOverride, localRepository, null );
+            }
         }
         catch ( ProjectBuildingException e )
         {
-            throw new RepositoryAssemblyException( "Error reading POM: " + artifact.getId(), e );
+            throw new RepositoryAssemblyException( "Error reading POM for: " + artifact.getId(), e );
         }
 
         // if we're dealing with a POM artifact, then we've already copied the POM itself; only process ancestry.
-        if ( "pom".equals( artifact.getType() ) )
+        // NOTE: We need to preserve the original artifact for comparison here.
+        if ( "pom".equals( type ) )
         {
             p = p.getParent();
+
+            // this automatically negates the pomFileOverride, if it exists.
+            pomFileOverride = null;
         }
 
         while( p != null )
@@ -349,7 +372,20 @@
 
             setAlignment( artifact, groupVersionAlignments );
 
-            File sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
+            File sourceFile;
+
+            // if we have an override for the current POM, use it.
+            if ( pomFileOverride != null )
+            {
+                sourceFile = pomFileOverride;
+
+                // use it at most once.
+                pomFileOverride = null;
+            }
+            else
+            {
+                sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
+            }
 
             if ( !sourceFile.exists() )
             {
@@ -485,11 +521,14 @@
     {
         Map groupVersionAlignments = new HashMap();
 
-        for ( Iterator i = versionAlignments.iterator(); i.hasNext(); )
+        if ( versionAlignments != null )
         {
-            GroupVersionAlignment alignment = (GroupVersionAlignment) i.next();
+            for ( Iterator i = versionAlignments.iterator(); i.hasNext(); )
+            {
+                GroupVersionAlignment alignment = (GroupVersionAlignment) i.next();
 
-            groupVersionAlignments.put( alignment.getId(), alignment );
+                groupVersionAlignments.put( alignment.getId(), alignment );
+            }
         }
 
         return groupVersionAlignments;

Modified: maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java?view=diff&rev=553960&r1=553959&r2=553960
==============================================================================
--- maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java (original)
+++ maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java Fri Jul  6 10:10:55 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.maven.shared.repository.model;
 
+import org.apache.maven.artifact.Artifact;
+
 import java.util.List;
 
 public class DefaultRepositoryInfo
@@ -26,7 +28,7 @@
 
     private boolean includeMetadata;
 
-    private String scope;
+    private String scope = Artifact.SCOPE_COMPILE;
 
     private List includes;
 

Modified: maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java?view=diff&rev=553960&r1=553959&r2=553960
==============================================================================
--- maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java (original)
+++ maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java Fri Jul  6 10:10:55 2007
@@ -1,5 +1,6 @@
 package org.apache.maven.shared.repository;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -14,15 +15,14 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.apache.maven.shared.repository.model.DefaultRepositoryInfo;
 import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
-import java.util.ArrayList;
+import java.util.Collections;
 
 public class DefaultRepositoryBuilderTest
     extends PlexusTestCase
@@ -51,41 +51,43 @@
 
         projectBuilder = (MavenProjectBuilder) lookup( MavenProjectBuilder.class.getName() );
 
-        File localRepo = new File( getBasedir(), "target/local-repository" );
-
         defaultLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.class.getName(), "default" );
         repoFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.class.getName() );
         artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.class.getName() );
         artifactResolver = (ArtifactResolver) lookup( ArtifactResolver.class.getName() );
         metadataSource = (ArtifactMetadataSource) lookup( ArtifactMetadataSource.class.getName() );
 
+        File localRepo = new File( getBasedir(), "target/local-repository" );
+
         localRepository = repoFactory.createArtifactRepository( "local", localRepo.getAbsolutePath(), defaultLayout,
                                                                 null, null );
 
     }
 
-    private MavenProject getProject( String projectResource )
-        throws ProjectBuildingException, IOException
+    private MavenProject getProject( String projectResource, String parentGroupId, String parentArtifactId, String parentVersion )
+        throws ProjectBuildingException, IOException, InvalidDependencyVersionException
     {
         ClassLoader cloader = Thread.currentThread().getContextClassLoader();
-        URL res = cloader.getResource( projectResource );
+        URL res = cloader.getResource( "projects/" + projectResource );
 
         File projectFile = new File( res.getPath() );
 
-        return projectBuilder.build( projectFile, localRepository, getProfileManager() );
+        // pre-load the parent model...this is a hack!
+        Artifact parentArtifact = artifactFactory.createParentArtifact( parentGroupId, parentArtifactId, parentVersion );
+        projectBuilder.buildFromRepository( parentArtifact, Collections.EMPTY_LIST, localRepository );
+
+        MavenProject project = projectBuilder.build( projectFile, localRepository, getProfileManager() );
+
+        project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) );
+
+        return project;
     }
 
     private ProfileManager getProfileManager() throws IOException
     {
         if ( profileManager == null )
         {
-            ClassLoader cloader = Thread.currentThread().getContextClassLoader();
-            URL res = cloader.getResource( "marker.txt" );
-
-            File markerFile = new File( res.getPath() );
-            markerFile = markerFile.getCanonicalFile();
-
-            File repoDir = new File( markerFile.getParentFile(), "remote-repository" );
+            File repoDir = getTestRemoteRepositoryBasedir();
 
             Profile profile = new Profile();
             Repository repo = new Repository();
@@ -95,6 +97,8 @@
             repo.setReleases( new RepositoryPolicy() );
             repo.setSnapshots( new RepositoryPolicy() );
 
+            profile.addRepository( repo );
+
             profileManager = new DefaultProfileManager( getContainer() );
             profileManager.addProfile( profile );
             profileManager.explicitlyActivate( "test.repo" );
@@ -103,12 +107,32 @@
         return profileManager;
     }
 
+    private File getTestRemoteRepositoryBasedir()
+        throws IOException
+    {
+        ClassLoader cloader = Thread.currentThread().getContextClassLoader();
+        URL res = cloader.getResource( "marker.txt" );
+
+        File markerFile = new File( res.getPath() );
+        markerFile = markerFile.getCanonicalFile();
+
+        File repoDir = new File( markerFile.getParentFile(), "remote-repository" );
+
+        return repoDir;
+    }
+
     public void test_MASSEMBLY_210_projectParentIsIncludedInRepository()
-        throws ProjectBuildingException, RepositoryAssemblyException, IOException
+        throws ProjectBuildingException, RepositoryAssemblyException, IOException, InvalidDependencyVersionException
     {
-        MavenProject project = getProject( "projects/massembly-210-direct-parent/pom.xml" );
-        // TODO: jdcasey, the project loaded that way as no initialized Artifact objects
-        // TODO: with this non resolved content the repository assembler does not run!
+        File repoDir = getTestRemoteRepositoryBasedir();
+
+        ArtifactRepository localRepository = repoFactory.createArtifactRepository(
+                                                                                   "local",
+                                                                                   repoDir.getAbsoluteFile().toURL().toExternalForm(),
+                                                                                   defaultLayout, null, null );
+
+
+        MavenProject project = getProject( "massembly-210-direct-parent/pom.xml", "massembly.210", "parent", "1.0-SNAPSHOT" );
 
         TestRepositoryBuilderConfigSource cs = new TestRepositoryBuilderConfigSource();
         cs.setProject( project );
@@ -117,14 +141,10 @@
         DefaultRepositoryAssembler assembler = new DefaultRepositoryAssembler( artifactFactory, artifactResolver,
                                                                                defaultLayout, repoFactory,
                                                                                metadataSource, projectBuilder );
-        // TODO: NPE thrown if logger not set
-        assembler.enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG, "console"));
 
         File repositoryDirectory = new File( getBasedir(), "target/test-repositories/massembly-210-direct-parent" );
 
         DefaultRepositoryInfo repoInfo = new DefaultRepositoryInfo();
-        // TODO: NPE if we don't call this - no clue what it's supposed to represent
-        repoInfo.setGroupVersionAlignments( new ArrayList());
 
         assembler.buildRemoteRepository( repositoryDirectory, repoInfo, cs );