You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by st...@apache.org on 2014/01/05 20:17:38 UTC
git commit: [MNG-5075] MavenProject.getParent throws undocumented ISE
Updated Branches:
refs/heads/master 93d07bdf9 -> 2eb419ed9
[MNG-5075] MavenProject.getParent throws undocumented ISE
Submitted by Jesse Glick
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/2eb419ed
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/2eb419ed
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/2eb419ed
Branch: refs/heads/master
Commit: 2eb419ed95ccfdd80c5755890e649a49274cceca
Parents: 93d07bd
Author: Jesse Glick <jg...@cloudbees.com>
Authored: Mon Apr 29 11:55:46 2013 -0400
Committer: Stephen Connolly <st...@gmail.com>
Committed: Sun Jan 5 19:17:03 2014 +0000
----------------------------------------------------------------------
.../org/apache/maven/project/MavenProject.java | 20 +++++++++++---
.../apache/maven/project/MavenProjectTest.java | 28 ++++++++++++++++++++
2 files changed, 45 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/2eb419ed/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
index d6f308f..91038b3 100644
--- a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
+++ b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
@@ -102,6 +102,8 @@ public class MavenProject
public static final String EMPTY_PROJECT_VERSION = "0";
+ private static final MavenProject ERROR_BUILDING_PARENT = new MavenProject();
+
private Model model;
private MavenProject parent;
@@ -343,6 +345,10 @@ public class MavenProject
return model;
}
+ /**
+ * Returns the project corresponding to a declared parent.
+ * @return the parent, or null if no parent is declared or there was an error building it
+ */
public MavenProject getParent()
{
if ( parent == null )
@@ -363,7 +369,11 @@ public class MavenProject
}
catch ( ProjectBuildingException e )
{
- throw new IllegalStateException( "Failed to build parent project for " + getId(), e );
+ if ( logger != null )
+ {
+ logger.error( "Failed to build parent project for " + getId(), e );
+ }
+ parent = ERROR_BUILDING_PARENT;
}
}
else if ( model.getParent() != null )
@@ -378,11 +388,15 @@ public class MavenProject
}
catch ( ProjectBuildingException e )
{
- throw new IllegalStateException( "Failed to build parent project for " + getId(), e );
+ if ( logger != null )
+ {
+ logger.error( "Failed to build parent project for " + getId(), e );
+ }
+ parent = ERROR_BUILDING_PARENT;
}
}
}
- return parent;
+ return parent == ERROR_BUILDING_PARENT ? null : parent;
}
public void setParent( MavenProject parent )
http://git-wip-us.apache.org/repos/asf/maven/blob/2eb419ed/maven-core/src/test/java/org/apache/maven/project/MavenProjectTest.java
----------------------------------------------------------------------
diff --git a/maven-core/src/test/java/org/apache/maven/project/MavenProjectTest.java b/maven-core/src/test/java/org/apache/maven/project/MavenProjectTest.java
index 60736a3..430093f 100644
--- a/maven-core/src/test/java/org/apache/maven/project/MavenProjectTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/MavenProjectTest.java
@@ -23,7 +23,9 @@ import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.maven.lifecycle.internal.stub.LoggerStub;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
@@ -177,6 +179,32 @@ public class MavenProjectTest
activeProfilesClone );
}
+ public void testInvalidParent() throws Exception
+ {
+ Parent parent = new Parent();
+ parent.setGroupId( "test-group" );
+ parent.setArtifactId( "parent-artifact" );
+ parent.setVersion( "1.0" );
+ Model model = new Model();
+ model.setParent( parent );
+ model.setArtifactId( "child-artifact" );
+ final AtomicInteger logged = new AtomicInteger();
+ class L extends LoggerStub
+ {
+ @Override
+ public void error( String s, Throwable throwable )
+ {
+ logged.incrementAndGet();
+ }
+ }
+ MavenProject project = new MavenProject( repositorySystem, projectBuilder, newBuildingRequest(), new L() );
+ project.setModel( model );
+ assertNull( project.getParent() );
+ assertEquals( 1, logged.get() );
+ assertNull( project.getParent() );
+ assertEquals( 1, logged.get() );
+ }
+
public void testUndefinedOutputDirectory()
throws Exception
{