Author: jdcasey
Date: Wed Mar 11 21:15:51 2009
New Revision: 752622

URL: http://svn.apache.org/viewvc?rev=752622&view=rev
Log:
[MNG-4074] Fixing cyclic reference problem with a parent pom declaring one of 
its modules as a plugin-level dependency in a plugin it uses. Also, fixing a 
problem where the version-expression transformation chokes on invalid POMs from 
the repository during invoker:install.

Added:
    
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml
   (with props)
Modified:
    
maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
    
maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java
    
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
    
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java

Modified: 
maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java?rev=752622&r1=752621&r2=752622&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
 (original)
+++ 
maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
 Wed Mar 11 21:15:51 2009
@@ -158,7 +158,14 @@
                           {
                               project.addProjectReference( (MavenProject) 
projectMap.get( dependencyId ) );
 
-                              dag.addEdge( id, dependencyId );
+                              addEdgeWithParentCheck( projectMap, 
dependencyId, project, id );
+                              
+                              // TODO: Shouldn't we add an edge between the 
plugin and its dependency?
+                              // Note that doing this may result in 
cycles...run 
+                              // 
ProjectSorterTest.testPluginDependenciesInfluenceSorting_DeclarationInParent() 
+                              // for more information, if you change this:
+                              
+                              // dag.addEdge( pluginId, dependencyId );
                           }
                        }
                     }

Modified: 
maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java?rev=752622&r1=752621&r2=752622&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java
 (original)
+++ 
maven/components/branches/maven-2.1.0-RC/maven-project/src/main/java/org/apache/maven/project/artifact/VersionExpressionTransformation.java
 Wed Mar 11 21:15:51 2009
@@ -108,13 +108,6 @@
         {
             throw new ArtifactDeploymentException( "Failed to read or write 
POM for version transformation.", e );
         }
-        catch ( XmlPullParserException e )
-        {
-            throw new ArtifactDeploymentException(
-                                                   "Failed to parse POM for 
version transformation. Error was in file: "
-                                                       + pomFile + ", at line: 
" + e.getLineNumber() + ", column: "
-                                                       + e.getColumnNumber(), 
e );
-        }
         catch ( ModelInterpolationException e )
         {
             throw new ArtifactDeploymentException( "Failed to interpolate POM 
versions.", e );
@@ -170,13 +163,6 @@
         {
             throw new ArtifactInstallationException( "Failed to read or write 
POM for version transformation.", e );
         }
-        catch ( XmlPullParserException e )
-        {
-            throw new ArtifactInstallationException(
-                                                     "Failed to parse POM for 
version transformation. Error was in file: "
-                                                         + pomFile + ", at 
line: " + e.getLineNumber() + ", column: "
-                                                         + 
e.getColumnNumber(), e );
-        }
         catch ( ModelInterpolationException e )
         {
             throw new ArtifactInstallationException( "Failed to interpolate 
POM versions.", e );
@@ -190,7 +176,7 @@
     }
 
     protected File transformVersions( File pomFile, Artifact artifact, 
ArtifactRepository localRepository )
-        throws IOException, XmlPullParserException, ModelInterpolationException
+        throws IOException, ModelInterpolationException
     {
         ProjectBuilderConfiguration pbConfig;
         File projectDir;
@@ -224,14 +210,33 @@
         {
             reader = ReaderFactory.newXmlReader( pomFile );
             model = new MavenXpp3Reader().read( reader );
+            
+            interpolateVersions( pomFile, outputFile, model, projectDir, 
pbConfig );
+        }
+        catch ( XmlPullParserException e )
+        {
+            String message =
+                "Failed to parse POM for version transformation. Proceeding 
with original (non-interpolated) POM file.";
+            
+            String detail = "\n\nNOTE: Error was in file: " + pomFile + ", at 
line: "
+                    + e.getLineNumber() + ", column: " + e.getColumnNumber();
+            
+            if ( getLogger().isDebugEnabled() )
+            {
+                getLogger().debug( message + detail, e );
+            }
+            else
+            {
+                getLogger().warn( message + " See debug output for details." );
+            }
+            
+            outputFile = pomFile;
         }
         finally
         {
             IOUtil.close( reader );
         }
         
-        interpolateVersions( pomFile, outputFile, model, projectDir, pbConfig 
);
-        
         return outputFile;
     }
 

Modified: 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java?rev=752622&r1=752621&r2=752622&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
 (original)
+++ 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
 Wed Mar 11 21:15:51 2009
@@ -279,46 +279,98 @@
     }
 
     public void testPluginDependenciesInfluenceSorting()
-        throws Exception {
-      List projects = new ArrayList();
-
-      MavenProject parentProject = createProject( "groupId", "parent", "1.0" );
-
-      MavenProject project1 = createProject( "groupId", "artifactId1", "1.0" );
-      project1.setParent(parentProject);
-      projects.add( project1 );
-
-      MavenProject project2 = createProject( "groupId", "artifactId2", "1.0" );
-      project2.setParent(parentProject);
-      projects.add( project2 );
-
-      MavenProject pluginProject = createProject( "groupId", "pluginArtifact", 
"1.0" );
-      pluginProject.setParent(parentProject);
-      projects.add( pluginProject );
-
-      Plugin plugin = new Plugin();
-      plugin.setGroupId(pluginProject.getGroupId());
-      plugin.setArtifactId(pluginProject.getArtifactId());
-      plugin.setVersion(pluginProject.getVersion());
-
-      plugin.addDependency( createDependency( project2 ) );
+        throws Exception
+    {
+        List projects = new ArrayList();
 
-      Model model = project1.getModel();
-      Build build = model.getBuild();
+        MavenProject parentProject = createProject( "groupId", "parent", "1.0" 
);
+        projects.add( parentProject );
 
-      if ( build == null )
-      {
-          build = new Build();
-          model.setBuild( build );
-      }
+        MavenProject declaringProject = createProject( "groupId", "declarer", 
"1.0" );
+        declaringProject.setParent( parentProject );
+        projects.add( declaringProject );
+
+        MavenProject pluginLevelDepProject = createProject( "groupId", 
"plugin-level-dep", "1.0" );
+        pluginLevelDepProject.setParent( parentProject );
+        projects.add( pluginLevelDepProject );
+
+        MavenProject pluginProject = createProject( "groupId", "plugin", "1.0" 
);
+        pluginProject.setParent( parentProject );
+        projects.add( pluginProject );
+
+        Plugin plugin = new Plugin();
+        plugin.setGroupId( pluginProject.getGroupId() );
+        plugin.setArtifactId( pluginProject.getArtifactId() );
+        plugin.setVersion( pluginProject.getVersion() );
+
+        plugin.addDependency( createDependency( pluginLevelDepProject ) );
+
+        Model model = declaringProject.getModel();
+        Build build = model.getBuild();
+
+        if ( build == null )
+        {
+            build = new Build();
+            model.setBuild( build );
+        }
+
+        build.addPlugin( plugin );
+
+        projects = new ProjectSorter( projects ).getSortedProjects();
+        
+        assertEquals( parentProject, projects.get( 0 ) );
+        
+        // the order of these two is non-deterministic, based on when they're 
added to the reactor.
+        assertTrue( projects.contains( pluginProject ) );
+        assertTrue( projects.contains( pluginLevelDepProject ) );
+        
+        // the declaring project MUST be listed after the plugin and its 
plugin-level dep, though.
+        assertEquals( declaringProject, projects.get( 3 ) );
+    }
 
-      build.addPlugin( plugin );
+    public void testPluginDependenciesInfluenceSorting_DeclarationInParent()
+        throws Exception
+    {
+        List projects = new ArrayList();
 
-      projects = new ProjectSorter( projects ).getSortedProjects();
+        MavenProject parentProject = createProject( "groupId", 
"parent-declarer", "1.0" );
+        projects.add( parentProject );
 
-      assertEquals( project1, projects.get( 2 ) );
-      assertTrue( projects.contains( project2 ) );
-      assertTrue( projects.contains( pluginProject ) );
+        MavenProject pluginProject = createProject( "groupId", "plugin", "1.0" 
);
+        pluginProject.setParent( parentProject );
+        projects.add( pluginProject );
+
+        MavenProject pluginLevelDepProject = createProject( "groupId", 
"plugin-level-dep", "1.0" );
+        pluginLevelDepProject.setParent( parentProject );
+        projects.add( pluginLevelDepProject );
+
+        Plugin plugin = new Plugin();
+        plugin.setGroupId( pluginProject.getGroupId() );
+        plugin.setArtifactId( pluginProject.getArtifactId() );
+        plugin.setVersion( pluginProject.getVersion() );
+
+        plugin.addDependency( createDependency( pluginLevelDepProject ) );
+
+        Model model = parentProject.getModel();
+        Build build = model.getBuild();
+
+        if ( build == null )
+        {
+            build = new Build();
+            model.setBuild( build );
+        }
+
+        build.addPlugin( plugin );
+
+        projects = new ProjectSorter( projects ).getSortedProjects();
+        
+        System.out.println( projects );
+
+        assertEquals( parentProject, projects.get( 0 ) );
+        
+        // the order of these two is non-deterministic, based on when they're 
added to the reactor.
+        assertTrue( projects.contains( pluginProject ) );
+        assertTrue( projects.contains( pluginLevelDepProject ) );
     }
 
     private Dependency createDependency( MavenProject project )

Modified: 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java?rev=752622&r1=752621&r2=752622&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java
 (original)
+++ 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/artifact/VersionExpressionTransformationTest.java
 Wed Mar 11 21:15:51 2009
@@ -74,7 +74,7 @@
     private static final String VERSION = "blah";
 
     private VersionExpressionTransformation transformation;
-    
+
     private Set toDelete = new HashSet();
 
     public void setUp()
@@ -85,18 +85,18 @@
         transformation =
             (VersionExpressionTransformation) lookup( 
ArtifactTransformation.class.getName(), "version-expression" );
     }
-    
+
     public void tearDown()
         throws Exception
-        {
+    {
         super.tearDown();
-        
+
         if ( toDelete != null && !toDelete.isEmpty() )
         {
             for ( Iterator it = toDelete.iterator(); it.hasNext(); )
             {
                 File f = (File) it.next();
-                
+
                 try
                 {
                     FileUtils.forceDelete( f );
@@ -108,14 +108,60 @@
                 }
             }
         }
+    }
+
+    public void testTransformForInstall_AbortOnInvalidPOM()
+        throws URISyntaxException, IOException, XmlPullParserException, 
ModelInterpolationException
+    {
+        String pomResource = "version-expressions/invalid-pom.xml";
+        File pomFile = getPom( pomResource );
+        
+        File projectDir;
+        if ( pomFile != null )
+        {
+            projectDir = pomFile.getParentFile();
         }
-    
+        else
+        {
+            projectDir = File.createTempFile( 
"VersionExpressionTransformationTest.project.", ".tmp.dir" );
+            projectDir.delete();
+            projectDir.mkdirs();
+
+            toDelete.add( projectDir );
+
+            File newPomFile = new File( projectDir, "pom.xml" );
+            FileUtils.copyFile( pomFile, newPomFile );
+            
+            pomFile = newPomFile;
+        }
+
+        File repoDir = File.createTempFile( 
"VersionExpressionTransformationTest.repo.", ".tmp.dir" );
+        repoDir.delete();
+        repoDir.mkdirs();
+
+        toDelete.add( repoDir );
+
+        Artifact a =
+            new DefaultArtifact( "groupId", "artifactId", 
VersionRange.createFromVersion( "1" ),
+                                 null, "jar", null, new 
DefaultArtifactHandler( "jar" ) );
+
+        ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile 
);
+        a.addMetadata( pam );
+
+        ArtifactRepository localRepository =
+            new DefaultArtifactRepository( "local", repoDir.getAbsolutePath(), 
new DefaultRepositoryLayout() );
+
+        transformation.transformVersions( pomFile, a, localRepository );
+        
+        assertEquals( pomFile, pam.getFile() );
+    }
+
     public void testTransformForInstall_PreserveComments()
         throws URISyntaxException, IOException, XmlPullParserException, 
ModelInterpolationException
     {
         String pomResource = "version-expressions/pom-with-comments.xml";
         File pomFile = getPom( pomResource );
-        
+
         Model model;
         Reader reader = null;
         try
@@ -128,9 +174,9 @@
         {
             IOUtil.close( reader );
         }
-        
+
         File newPom = runTransformVersion_VanillaArtifact( model, pomFile );
-        
+
         StringWriter writer = new StringWriter();
         reader = null;
         try
@@ -142,9 +188,9 @@
         {
             IOUtil.close( reader );
         }
-        
+
         assertTrue( "XML comment not found.", writer.toString().indexOf( "This 
is a comment." ) > -1 );
-        
+
         reader = new StringReader( writer.toString() );
         try
         {
@@ -156,17 +202,17 @@
         }
 
         assertEquals( "1.0", model.getVersion() );
-        
+
         assertNotNull( model.getProperties() );
-        
+
         assertNotNull( model.getProperties().getProperty( "other.version" ) );
         assertEquals( "${testVersion}", model.getProperties().getProperty( 
"other.version" ) );
-        
+
         assertNotNull( model.getScm() );
-        
+
         assertNotNull( model.getScm().getConnection() );
         assertEquals( "${testVersion}", model.getScm().getConnection() );
-        
+
         assertNotNull( model.getScm().getUrl() );
         assertEquals( "${testVersion}", model.getScm().getUrl() );
     }
@@ -176,21 +222,21 @@
     {
         ClassLoader cloader = Thread.currentThread().getContextClassLoader();
         URL resource = cloader.getResource( pom );
-        
+
         if ( resource == null )
         {
             fail( "POM classpath resource not found: '" + pom + "'." );
         }
-        
+
         File tempDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".dir.tmp" );
         tempDir.delete();
         tempDir.mkdirs();
-        
+
         toDelete.add( tempDir );
-        
+
         File pomFile = new File( tempDir, "pom.xml" );
         FileUtils.copyFile( new File( new URI( resource.toExternalForm() 
).normalize() ), pomFile );
-        
+
         return pomFile;
     }
 
@@ -202,9 +248,9 @@
         File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
         pomDir.delete();
         pomDir.mkdirs();
-        
+
         toDelete.add( pomDir );
-        
+
         File pomFile = new File( pomDir, "pom.xml" );
 
         FileWriter writer = null;
@@ -254,9 +300,9 @@
         File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
         pomDir.delete();
         pomDir.mkdirs();
-        
+
         toDelete.add( pomDir );
-        
+
         File pomFile = new File( pomDir, "pom.xml" );
 
         FileWriter writer = null;
@@ -291,10 +337,10 @@
             reader = new FileReader( pam.getFile() );
             StringWriter swriter = new StringWriter();
             IOUtil.copy( reader, swriter );
-            
-            System.out.println( "Transformed POM:\n\n\n" + swriter.toString() 
);
-            System.out.flush();
-            
+
+//            System.out.println( "Transformed POM:\n\n\n" + 
swriter.toString() );
+//            System.out.flush();
+
             model = new MavenXpp3Reader().read( new StringReader( 
swriter.toString() ) );
         }
         finally
@@ -313,9 +359,9 @@
         File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
         pomDir.delete();
         pomDir.mkdirs();
-        
+
         toDelete.add( pomDir );
-        
+
         File pomFile = new File( pomDir, "pom.xml" );
 
         FileWriter writer = null;
@@ -358,123 +404,123 @@
         assertTransformedVersions( model );
     }
 
-    // FIXME: We can't be this smart (yet) since the deployment step 
transforms from the 
+    // FIXME: We can't be this smart (yet) since the deployment step 
transforms from the
     // original POM once again and re-installs over the top of the install 
step.
-//    public void 
testTransformForInstall_SkipIfProjectArtifactMetadataResolvedFlagIsSet()
-//        throws IOException, ArtifactInstallationException, 
XmlPullParserException
-//    {
-//        Model model = buildTestModel();
-//
-//        File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
-//        pomDir.delete();
-//        pomDir.mkdirs();
-//        try
-//        {
-//            File pomFile = new File( pomDir, "pom.xml" );
-//            pomFile.deleteOnExit();
-//
-//            FileWriter writer = null;
-//            try
-//            {
-//                writer = new FileWriter( pomFile );
-//                new MavenXpp3Writer().write( writer, model );
-//            }
-//            finally
-//            {
-//                IOUtil.close( writer );
-//            }
-//
-//            Artifact a =
-//                new DefaultArtifact( "group", "artifact", 
VersionRange.createFromVersion( "1" ), null, "jar", null,
-//                                     new DefaultArtifactHandler( "jar" ), 
false );
-//            ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, 
pomFile );
-//            pam.setVersionExpressionsResolved( true );
-//
-//            a.addMetadata( pam );
-//
-//            transformation.transformForInstall( a, null );
-//
-//            assertEquals( pomFile, pam.getFile() );
-//
-//            assertFalse( new File( pomDir, "target/pom-transformed.xml" 
).exists() );
-//
-//            FileReader reader = null;
-//            try
-//            {
-//                reader = new FileReader( pomFile );
-//                model = new MavenXpp3Reader().read( reader );
-//            }
-//            finally
-//            {
-//                IOUtil.close( reader );
-//            }
-//
-//            assertEquals( "${testVersion}", model.getVersion() );
-//        }
-//        finally
-//        {
-//            FileUtils.forceDelete( pomDir );
-//        }
-//    }
+    // public void 
testTransformForInstall_SkipIfProjectArtifactMetadataResolvedFlagIsSet()
+    // throws IOException, ArtifactInstallationException, 
XmlPullParserException
+    // {
+    // Model model = buildTestModel();
+    //
+    // File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
+    // pomDir.delete();
+    // pomDir.mkdirs();
+    // try
+    // {
+    // File pomFile = new File( pomDir, "pom.xml" );
+    // pomFile.deleteOnExit();
+    //
+    // FileWriter writer = null;
+    // try
+    // {
+    // writer = new FileWriter( pomFile );
+    // new MavenXpp3Writer().write( writer, model );
+    // }
+    // finally
+    // {
+    // IOUtil.close( writer );
+    // }
+    //
+    // Artifact a =
+    // new DefaultArtifact( "group", "artifact", 
VersionRange.createFromVersion( "1" ), null, "jar", null,
+    // new DefaultArtifactHandler( "jar" ), false );
+    // ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile );
+    // pam.setVersionExpressionsResolved( true );
+    //
+    // a.addMetadata( pam );
+    //
+    // transformation.transformForInstall( a, null );
+    //
+    // assertEquals( pomFile, pam.getFile() );
+    //
+    // assertFalse( new File( pomDir, "target/pom-transformed.xml" ).exists() 
);
+    //
+    // FileReader reader = null;
+    // try
+    // {
+    // reader = new FileReader( pomFile );
+    // model = new MavenXpp3Reader().read( reader );
+    // }
+    // finally
+    // {
+    // IOUtil.close( reader );
+    // }
+    //
+    // assertEquals( "${testVersion}", model.getVersion() );
+    // }
+    // finally
+    // {
+    // FileUtils.forceDelete( pomDir );
+    // }
+    // }
 
-    // FIXME: We can't be this smart (yet) since the deployment step 
transforms from the 
+    // FIXME: We can't be this smart (yet) since the deployment step 
transforms from the
     // original POM once again and re-installs over the top of the install 
step.
-//    public void 
testTransformForDeploy_SkipIfProjectArtifactMetadataResolvedFlagIsSet()
-//        throws IOException, XmlPullParserException, 
ArtifactDeploymentException
-//    {
-//        Model model = buildTestModel();
-//
-//        File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
-//        pomDir.delete();
-//        pomDir.mkdirs();
-//        try
-//        {
-//            File pomFile = new File( pomDir, "pom.xml" );
-//            pomFile.deleteOnExit();
-//
-//            FileWriter writer = null;
-//            try
-//            {
-//                writer = new FileWriter( pomFile );
-//                new MavenXpp3Writer().write( writer, model );
-//            }
-//            finally
-//            {
-//                IOUtil.close( writer );
-//            }
-//
-//            Artifact a =
-//                new DefaultArtifact( "group", "artifact", 
VersionRange.createFromVersion( "1" ), null, "jar", null,
-//                                     new DefaultArtifactHandler( "jar" ), 
false );
-//            ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, 
pomFile );
-//            pam.setVersionExpressionsResolved( true );
-//
-//            a.addMetadata( pam );
-//
-//            transformation.transformForDeployment( a, null, null );
-//
-//            assertEquals( pomFile, pam.getFile() );
-//
-//            assertFalse( new File( pomDir, "target/pom-transformed.xml" 
).exists() );
-//
-//            FileReader reader = null;
-//            try
-//            {
-//                reader = new FileReader( pomFile );
-//                model = new MavenXpp3Reader().read( reader );
-//            }
-//            finally
-//            {
-//                IOUtil.close( reader );
-//            }
-//
-//            assertEquals( "${testVersion}", model.getVersion() );
-//        }
-//        finally
-//        {
-//            FileUtils.forceDelete( pomDir );
-//        }
-//    }
+    // public void 
testTransformForDeploy_SkipIfProjectArtifactMetadataResolvedFlagIsSet()
+    // throws IOException, XmlPullParserException, ArtifactDeploymentException
+    // {
+    // Model model = buildTestModel();
+    //
+    // File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
+    // pomDir.delete();
+    // pomDir.mkdirs();
+    // try
+    // {
+    // File pomFile = new File( pomDir, "pom.xml" );
+    // pomFile.deleteOnExit();
+    //
+    // FileWriter writer = null;
+    // try
+    // {
+    // writer = new FileWriter( pomFile );
+    // new MavenXpp3Writer().write( writer, model );
+    // }
+    // finally
+    // {
+    // IOUtil.close( writer );
+    // }
+    //
+    // Artifact a =
+    // new DefaultArtifact( "group", "artifact", 
VersionRange.createFromVersion( "1" ), null, "jar", null,
+    // new DefaultArtifactHandler( "jar" ), false );
+    // ProjectArtifactMetadata pam = new ProjectArtifactMetadata( a, pomFile );
+    // pam.setVersionExpressionsResolved( true );
+    //
+    // a.addMetadata( pam );
+    //
+    // transformation.transformForDeployment( a, null, null );
+    //
+    // assertEquals( pomFile, pam.getFile() );
+    //
+    // assertFalse( new File( pomDir, "target/pom-transformed.xml" ).exists() 
);
+    //
+    // FileReader reader = null;
+    // try
+    // {
+    // reader = new FileReader( pomFile );
+    // model = new MavenXpp3Reader().read( reader );
+    // }
+    // finally
+    // {
+    // IOUtil.close( reader );
+    // }
+    //
+    // assertEquals( "${testVersion}", model.getVersion() );
+    // }
+    // finally
+    // {
+    // FileUtils.forceDelete( pomDir );
+    // }
+    // }
 
     public void 
testTransformVersion_ShouldInterpolate_VanillaArtifact_ModelProperties()
         throws IOException, XmlPullParserException, ModelInterpolationException
@@ -482,7 +528,7 @@
         Model model = buildTestModel();
 
         File newPom = runTransformVersion_VanillaArtifact( model, null );
-        
+
         FileReader reader = null;
         try
         {
@@ -504,7 +550,7 @@
         Model model = buildTestModel();
 
         File newPom = runTransformVersion_ArtifactWithProject( model, new 
DefaultProjectBuilderConfiguration(), null );
-        
+
         FileReader reader = null;
         try
         {
@@ -528,10 +574,12 @@
         Properties props = model.getProperties();
         model.setProperties( new Properties() );
 
-        File newPom = runTransformVersion_ArtifactWithProject(
+        File newPom =
+            runTransformVersion_ArtifactWithProject(
                                                      model,
-                                                     new 
DefaultProjectBuilderConfiguration().setExecutionProperties( props ), null );
-        
+                                                     new 
DefaultProjectBuilderConfiguration().setExecutionProperties( props ),
+                                                     null );
+
         FileReader reader = null;
         try
         {
@@ -560,11 +608,11 @@
             projectDir = File.createTempFile( 
"VersionExpressionTransformationTest.project.", ".tmp.dir" );
             projectDir.delete();
             projectDir.mkdirs();
-            
+
             toDelete.add( projectDir );
-            
+
             pomFile = new File( projectDir, "pom.xml" );
-            
+
             FileWriter writer = null;
             try
             {
@@ -580,23 +628,23 @@
         File repoDir = File.createTempFile( 
"VersionExpressionTransformationTest.repo.", ".tmp.dir" );
         repoDir.delete();
         repoDir.mkdirs();
-        
+
         toDelete.add( repoDir );
 
         File dir = new File( projectDir, "target" );
         dir.mkdirs();
-        
+
         if ( model.getBuild() == null )
         {
             model.setBuild( new Build() );
         }
-        
+
         model.getBuild().setDirectory( dir.getAbsolutePath() );
 
         Artifact a =
             new DefaultArtifact( model.getGroupId(), model.getArtifactId(), 
VersionRange.createFromVersion( "1" ),
                                  null, "jar", null, new 
DefaultArtifactHandler( "jar" ) );
-        
+
         a.addMetadata( new ProjectArtifactMetadata( a, pomFile ) );
 
         ArtifactRepository localRepository =
@@ -607,7 +655,8 @@
         return new File( projectDir, "target/pom-transformed.xml" );
     }
 
-    private File runTransformVersion_ArtifactWithProject( Model model, 
ProjectBuilderConfiguration pbConfig, File pomFile )
+    private File runTransformVersion_ArtifactWithProject( Model model, 
ProjectBuilderConfiguration pbConfig,
+                                                          File pomFile )
         throws IOException, XmlPullParserException, ModelInterpolationException
     {
         File projectDir;
@@ -620,11 +669,11 @@
             projectDir = File.createTempFile( 
"VersionExpressionTransformationTest.project.", ".tmp.dir" );
             projectDir.delete();
             projectDir.mkdirs();
-            
+
             toDelete.add( projectDir );
-            
+
             pomFile = new File( projectDir, "pom.xml" );
-            
+
             FileWriter writer = null;
             try
             {
@@ -640,17 +689,17 @@
         File repoDir = File.createTempFile( 
"VersionExpressionTransformationTest.repo.", ".tmp.dir" );
         repoDir.delete();
         repoDir.mkdirs();
-        
+
         toDelete.add( repoDir );
 
         File dir = new File( projectDir, "target" );
         dir.mkdirs();
-        
+
         if ( model.getBuild() == null )
         {
             model.setBuild( new Build() );
         }
-        
+
         model.getBuild().setDirectory( dir.getAbsolutePath() );
 
         MavenProject project = new MavenProject( model );
@@ -662,7 +711,7 @@
             new ArtifactWithProject( project, "jar", null, new 
DefaultArtifactHandler( "jar" ), false );
 
         a.addMetadata( new ProjectArtifactMetadata( a, pomFile ) );
-        
+
         ArtifactRepository localRepository =
             new DefaultArtifactRepository( "local", repoDir.getAbsolutePath(), 
new DefaultRepositoryLayout() );
 
@@ -684,10 +733,10 @@
         File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
         pomDir.delete();
         pomDir.mkdirs();
-        
+
         toDelete.add( pomDir );
         File pomFile = new File( pomDir, "pom.xml" );
-        
+
         FileWriter writer = null;
         try
         {
@@ -700,9 +749,9 @@
         }
 
         File output = new File( pomDir, "output.xml" );
-        
+
         transformation.interpolateVersions( pomFile, output, model, pomDir, 
new DefaultProjectBuilderConfiguration() );
-        
+
         FileReader reader = null;
         try
         {
@@ -725,10 +774,10 @@
         File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
         pomDir.delete();
         pomDir.mkdirs();
-        
+
         toDelete.add( pomDir );
         File pomFile = new File( pomDir, "pom.xml" );
-        
+
         FileWriter writer = null;
         try
         {
@@ -741,9 +790,9 @@
         }
 
         File output = new File( pomDir, "output.xml" );
-        
+
         transformation.interpolateVersions( pomFile, output, model, pomDir, 
new DefaultProjectBuilderConfiguration() );
-        
+
         FileReader reader = null;
         try
         {
@@ -799,11 +848,11 @@
         File pomDir = File.createTempFile( 
"VersionExpressionTransformationTest.", ".tmp.dir" );
         pomDir.delete();
         pomDir.mkdirs();
-        
+
         toDelete.add( pomDir );
-        
+
         File pomFile = new File( pomDir, "pom.xml" );
-        
+
         FileWriter writer = null;
         try
         {
@@ -819,10 +868,10 @@
         model.setProperties( new Properties() );
 
         File output = new File( pomDir, "output.xml" );
-        
+
         transformation.interpolateVersions( pomFile, output, model, pomDir,
                                             new 
DefaultProjectBuilderConfiguration().setExecutionProperties( props ) );
-        
+
         FileReader reader = null;
         try
         {

Added: 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml?rev=752622&view=auto
==============================================================================
--- 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml
 (added)
+++ 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml
 Wed Mar 11 21:15:51 2009
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is a comment. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.test</groupId>
+  <artifactId>invalid-pom</artifactId>
+  <version>${testVersion}</version>
+  <packaging>pom</packaging>
+  
+  <scm>
+    <connection>${testVersion}</connection>
+    <url>${testVersion}</url>
+  </scm>
+  
+  <dependencies>
+    <groupId>junit</groupId>
+    <artifactId>junit</artifactId>
+    <version>3.8.1</version>
+  </dependencies>
+  
+  <properties>
+    <testVersion>1.0</testVersion>
+    <other.version>${testVersion}</other.version>
+  </properties>
+
+</project>

Propchange: 
maven/components/branches/maven-2.1.0-RC/maven-project/src/test/resources/version-expressions/invalid-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to