Author: jdcasey
Date: Tue Nov 27 20:28:28 2007
New Revision: 598864

URL: http://svn.apache.org/viewvc?rev=598864&view=rev
Log:
Adding the rest of the project errors to the aspect-bound ProjectErrorReporter.

Added:
    
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectArtifactErrorReporterAspect.aj
    
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectErrorReporterAspect.aj
    
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectIOErrorReporterAspect.aj
    
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterManagerAspect.aj
Modified:
    
maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
    
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj
    
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorTips.java

Modified: 
maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj?rev=598864&r1=598863&r2=598864&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj
 Tue Nov 27 20:28:28 2007
@@ -8,7 +8,7 @@
 import org.apache.maven.cli.CLIReportingUtils;
 import org.apache.maven.embedder.MavenEmbedder;
 import org.apache.maven.execution.MavenExecutionResult;
-import org.apache.maven.project.aspect.PBEDerivativeReporterAspect;
+import org.apache.maven.project.aspect.ProjectReporterManagerAspect;
 import org.apache.maven.project.error.DefaultProjectErrorReporter;
 import org.apache.maven.project.error.ProjectErrorReporter;
 import org.apache.maven.project.ProjectBuildingException;
@@ -26,8 +26,8 @@
     {
         projectErrorReporter = new DefaultProjectErrorReporter();
 
-        PBEDerivativeReporterAspect pbeDerivativeReporterAspect = 
(PBEDerivativeReporterAspect) Aspects.aspectOf( 
PBEDerivativeReporterAspect.class );
-        pbeDerivativeReporterAspect.setProjectErrorReporter( 
projectErrorReporter );
+        ProjectReporterManagerAspect prma = (ProjectReporterManagerAspect) 
Aspects.aspectOf( ProjectReporterManagerAspect.class );
+        prma.setReporter( projectErrorReporter );
     }
 
     private pointcut cliReportingUtilsCalls():
@@ -40,8 +40,8 @@
     {
         projectErrorReporter = new DefaultProjectErrorReporter();
 
-        PBEDerivativeReporterAspect pbeDerivativeReporterAspect = 
(PBEDerivativeReporterAspect) Aspects.aspectOf( 
PBEDerivativeReporterAspect.class );
-        pbeDerivativeReporterAspect.setProjectErrorReporter( 
projectErrorReporter );
+        ProjectReporterManagerAspect prma = (ProjectReporterManagerAspect) 
Aspects.aspectOf( ProjectReporterManagerAspect.class );
+        prma.setReporter( projectErrorReporter );
     }
 
     boolean around( ProjectBuildingException e, boolean showStackTraces, 
StringWriter writer ):

Modified: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java?rev=598864&r1=598863&r2=598864&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
 Tue Nov 27 20:28:28 2007
@@ -27,7 +27,6 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.reactor.MavenExecutionException;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
 import java.io.IOException;
@@ -599,10 +598,6 @@
         // InvalidProjectVersionException(all)
         // InvalidDependencyVersionException(all)
 
-        boolean result = false;
-
-        Throwable cause = e.getCause();
-
         // Start by looking at whether we can handle the PBE as a specific 
sub-class of ProjectBuildingException...
 //        if ( e instanceof InvalidProjectModelException )
 //        {
@@ -627,9 +622,6 @@
 //
 //            result = true;
 //        }
-        if ( false )
-        {
-        }
 //        else if ( e instanceof InvalidDependencyVersionException )
 //        {
 //            writer.write( NEWLINE );
@@ -676,19 +668,19 @@
 //        }
         // now that we've sorted through all the sub-classes of 
ProjectBuildingException,
         // let's look at causes of a basic PBE instance.
-        else if ( ( cause instanceof ArtifactNotFoundException )
-                  || ( cause instanceof ArtifactResolutionException ) )
-        {
-            writer.write( NEWLINE );
-            writer.write( e.getMessage() );
-            writer.write( NEWLINE );
-            writer.write( NEWLINE );
-            writer.write( "Reason: " );
-            writer.write( cause.getMessage() );
-            writer.write( NEWLINE );
-
-            result = true;
-        }
+//        else if ( ( cause instanceof ArtifactNotFoundException )
+//                  || ( cause instanceof ArtifactResolutionException ) )
+//        {
+//            writer.write( NEWLINE );
+//            writer.write( e.getMessage() );
+//            writer.write( NEWLINE );
+//            writer.write( NEWLINE );
+//            writer.write( "Reason: " );
+//            writer.write( cause.getMessage() );
+//            writer.write( NEWLINE );
+//
+//            result = true;
+//        }
         // handled by aspect binding to ProjectErrorReporter now.
 //        else if ( cause instanceof ProfileActivationException )
 //        {
@@ -702,47 +694,47 @@
 //
 //            result = true;
 //        }
-        else if ( cause instanceof IOException )
-        {
-            writer.write( NEWLINE );
-            if ( e.getPomFile() == null )
-            {
-                writer.write( "Error reading built-in super POM!" );
-            }
-            else
-            {
-                writer.write( "Error reading POM." );
-            }
-            writer.write( NEWLINE );
-            writer.write( NEWLINE );
-            writer.write( cause.getMessage() );
-            writer.write( NEWLINE );
-        }
-        else if ( cause instanceof XmlPullParserException )
-        {
-            writer.write( NEWLINE );
-            if ( e.getPomFile() == null )
-            {
-                writer.write( "Error parsing built-in super POM!" );
-            }
-            else
-            {
-                writer.write( "Error parsing POM." );
-            }
-            writer.write( NEWLINE );
-            writer.write( NEWLINE );
-            writer.write( cause.getMessage() );
-            writer.write( NEWLINE );
-            writer.write( NEWLINE );
-            writer.write( "Line: " );
-            writer.write( "" + ( (XmlPullParserException) cause 
).getLineNumber() );
-            writer.write( NEWLINE );
-            writer.write( "Column: " );
-            writer.write( "" + ( (XmlPullParserException) cause 
).getColumnNumber() );
-            writer.write( NEWLINE );
-
-            result = true;
-        }
+//        else if ( cause instanceof IOException )
+//        {
+//            writer.write( NEWLINE );
+//            if ( e.getPomFile() == null )
+//            {
+//                writer.write( "Error reading built-in super POM!" );
+//            }
+//            else
+//            {
+//                writer.write( "Error reading POM." );
+//            }
+//            writer.write( NEWLINE );
+//            writer.write( NEWLINE );
+//            writer.write( cause.getMessage() );
+//            writer.write( NEWLINE );
+//        }
+//        else if ( cause instanceof XmlPullParserException )
+//        {
+//            writer.write( NEWLINE );
+//            if ( e.getPomFile() == null )
+//            {
+//                writer.write( "Error parsing built-in super POM!" );
+//            }
+//            else
+//            {
+//                writer.write( "Error parsing POM." );
+//            }
+//            writer.write( NEWLINE );
+//            writer.write( NEWLINE );
+//            writer.write( cause.getMessage() );
+//            writer.write( NEWLINE );
+//            writer.write( NEWLINE );
+//            writer.write( "Line: " );
+//            writer.write( "" + ( (XmlPullParserException) cause 
).getLineNumber() );
+//            writer.write( NEWLINE );
+//            writer.write( "Column: " );
+//            writer.write( "" + ( (XmlPullParserException) cause 
).getColumnNumber() );
+//            writer.write( NEWLINE );
+//
+//            result = true;
+//        }
 //        else if ( cause instanceof InvalidRepositoryException )
 //        {
 //            writer.write( NEWLINE );
@@ -760,6 +752,8 @@
 //            result = true;
 //        }
 
+        handleGenericException( e, showStackTraces, writer );
+
         writer.write( NEWLINE );
         writer.write( "Failing project's id: " );
         writer.write( e.getProjectId() );
@@ -775,7 +769,7 @@
         }
         writer.write( NEWLINE );
 
-        return result;
+        return true;
     }
 
     private static boolean handleBuildFailureException( BuildFailureException 
e,

Modified: 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj?rev=598864&r1=598863&r2=598864&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj
 (original)
+++ 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/PBEDerivativeReporterAspect.aj
 Tue Nov 27 20:28:28 2007
@@ -15,31 +15,13 @@
 import org.apache.maven.project.DefaultMavenProjectBuilder;
 import org.apache.maven.project.InvalidProjectModelException;
 import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.error.DefaultProjectErrorReporter;
-import org.apache.maven.project.error.ProjectErrorReporter;
 
 import java.io.File;
 import java.util.Set;
 
 public privileged aspect PBEDerivativeReporterAspect
+    extends ProjectErrorReporterAspect
 {
-
-    private ProjectErrorReporter reporter;
-
-    public void setProjectErrorReporter( ProjectErrorReporter reporter )
-    {
-        this.reporter = reporter;
-    }
-
-    private ProjectErrorReporter getReporter()
-    {
-        if ( reporter == null )
-        {
-            reporter = new DefaultProjectErrorReporter();
-        }
-
-        return reporter;
-    }
 
     // UnknownRepositoryLayoutException
 

Modified: 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj?rev=598864&r1=598863&r2=598864&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj
 (original)
+++ 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj
 Tue Nov 27 20:28:28 2007
@@ -31,23 +31,8 @@
  * coming from [EMAIL PROTECTED] DefaultProfileAdvisor}.
  */
 public privileged aspect ProfileErrorReporterAspect
+    extends ProjectErrorReporterAspect
 {
-    private ProjectErrorReporter reporter;
-
-    public void setProjectErrorReporter( ProjectErrorReporter reporter )
-    {
-        this.reporter = reporter;
-    }
-
-    private ProjectErrorReporter getReporter()
-    {
-        if ( reporter == null )
-        {
-            reporter = new DefaultProjectErrorReporter();
-        }
-
-        return reporter;
-    }
 
     protected pointcut componentLookupException( ComponentLookupException 
cause ):
         handler( ComponentLookupException )

Added: 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectArtifactErrorReporterAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectArtifactErrorReporterAspect.aj?rev=598864&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectArtifactErrorReporterAspect.aj
 (added)
+++ 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectArtifactErrorReporterAspect.aj
 Tue Nov 27 20:28:28 2007
@@ -0,0 +1,62 @@
+package org.apache.maven.project.aspect;
+
+import org.apache.maven.project.build.model.DefaultModelLineageBuilder;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.model.Parent;
+
+import java.io.File;
+import java.util.List;
+
+public privileged aspect ProjectArtifactErrorReporterAspect
+    extends ProjectErrorReporterAspect
+{
+
+    private pointcut mlbldr_resolveParentFromRepositories( Parent parentRef, 
ArtifactRepository localRepo,
+                                                           List remoteRepos, 
String childId, File childPomFile ):
+        execution( File 
DefaultModelLineageBuilder.resolveParentFromRepository( Parent, 
ArtifactRepository, List, String, File ) )
+        && args( parentRef, localRepo, remoteRepos, childId, childPomFile );
+
+    private pointcut anfe_handler( ArtifactNotFoundException cause ):
+        handler( ArtifactNotFoundException )
+        && args( cause );
+
+    private pointcut are_handler( ArtifactResolutionException cause ):
+        handler( ArtifactResolutionException )
+        && args( cause );
+
+    // 
=========================================================================
+    // Call Stack:
+    // 
=========================================================================
+    // ...
+    // --> DefaultModelLineageBuilder.buildModelLineage(..)
+    //     --> DefaultModelLineageBuilder.resolveParentPom(..) (private)
+    //         --> DefaultModelLineageBuilder.resolveParentFromRepository(..) 
(private)
+    //             --> thrown ArtifactNotFoundException
+    // <---------- ProjectBuildingException
+    // 
=========================================================================
+    before( Parent parentRef, ArtifactRepository localRepo, List remoteRepos, 
String childId, File childPomFile, ArtifactNotFoundException cause ):
+        cflow( mlbldr_resolveParentFromRepositories( parentRef, localRepo, 
remoteRepos, childId, childPomFile ) )
+        && anfe_handler( cause )
+    {
+        getReporter().reportParentPomArtifactNotFound( parentRef, localRepo, 
remoteRepos, childId, childPomFile, cause );
+    }
+
+    // 
=========================================================================
+    // Call Stack:
+    // 
=========================================================================
+    // ...
+    // --> DefaultModelLineageBuilder.buildModelLineage(..)
+    //     --> DefaultModelLineageBuilder.resolveParentPom(..) (private)
+    //         --> DefaultModelLineageBuilder.resolveParentFromRepository(..) 
(private)
+    //             --> thrown ArtifactResolutionException
+    // <---------- ProjectBuildingException
+    // 
=========================================================================
+    before( Parent parentRef, ArtifactRepository localRepo, List remoteRepos, 
String childId, File childPomFile, ArtifactResolutionException cause ):
+        cflow( mlbldr_resolveParentFromRepositories( parentRef, localRepo, 
remoteRepos, childId, childPomFile ) )
+        && are_handler( cause )
+    {
+        getReporter().reportParentPomArtifactUnresolvable( parentRef, 
localRepo, remoteRepos, childId, childPomFile, cause );
+    }
+}

Added: 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectErrorReporterAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectErrorReporterAspect.aj?rev=598864&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectErrorReporterAspect.aj
 (added)
+++ 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectErrorReporterAspect.aj
 Tue Nov 27 20:28:28 2007
@@ -0,0 +1,26 @@
+package org.apache.maven.project.aspect;
+
+import org.apache.maven.project.error.DefaultProjectErrorReporter;
+import org.apache.maven.project.error.ProjectErrorReporter;
+
+public abstract aspect ProjectErrorReporterAspect
+{
+
+    private ProjectErrorReporter reporter;
+
+    public void setProjectErrorReporter( ProjectErrorReporter reporter )
+    {
+        this.reporter = reporter;
+    }
+
+    protected ProjectErrorReporter getReporter()
+    {
+        if ( reporter == null )
+        {
+            reporter = new DefaultProjectErrorReporter();
+        }
+
+        return reporter;
+    }
+
+}

Added: 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectIOErrorReporterAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectIOErrorReporterAspect.aj?rev=598864&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectIOErrorReporterAspect.aj
 (added)
+++ 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectIOErrorReporterAspect.aj
 Tue Nov 27 20:28:28 2007
@@ -0,0 +1,151 @@
+package org.apache.maven.project.aspect;
+
+import org.apache.maven.project.DefaultMavenProjectBuilder;
+import org.apache.maven.project.build.model.ModelAndFile;
+import org.apache.maven.project.build.model.DefaultModelLineageBuilder;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.File;
+import java.io.IOException;
+
+public privileged aspect ProjectIOErrorReporterAspect
+    extends ProjectErrorReporterAspect
+{
+
+    private pointcut pbldr_readProject( String projectId, File pomFile ):
+        execution( * DefaultMavenProjectBuilder.readModel( String, File, .. ) )
+        && args( projectId, pomFile, .. );
+
+    private pointcut xppEx_handler( XmlPullParserException cause ):
+        handler( XmlPullParserException )
+        && args( cause );
+
+    private pointcut ioEx_handler( IOException cause ):
+        handler( IOException )
+        && args( cause );
+
+    // 
=========================================================================
+    // Call Stack:
+    // 
=========================================================================
+    // ...
+    // --> DefaultMavenProjectBuilder.buildFromRepository(..)
+    //     --> DefaultMavenProjectBuilder.findModelFromRepository(..) (private)
+    // DefaultMavenProjectBuilder.build(..)
+    // --> DefaultMavenProjectBuilder.buildFromSourceFileInternal(..) (private)
+    //     --> DefaultMavenProjectBuilder.readModel(..) (private)
+    //         --> thrown XmlPullParserException
+    // <------ InvalidProjectModelException
+    // 
=========================================================================
+    before( String projectId, File pomFile, XmlPullParserException cause ):
+        cflow( pbldr_readProject( projectId, pomFile ) )
+        && xppEx_handler( cause )
+    {
+        getReporter().reportErrorParsingProjectModel( projectId, pomFile, 
cause );
+    }
+
+    // 
=========================================================================
+    // Call Stack:
+    // 
=========================================================================
+    // ...
+    // --> DefaultMavenProjectBuilder.buildFromRepository(..)
+    //     --> DefaultMavenProjectBuilder.findModelFromRepository(..) (private)
+    // DefaultMavenProjectBuilder.build(..)
+    // --> DefaultMavenProjectBuilder.buildFromSourceFileInternal(..) (private)
+    //     --> DefaultMavenProjectBuilder.readModel(..) (private)
+    //         --> thrown IOException
+    // <------ InvalidProjectModelException
+    // 
=========================================================================
+    before( String projectId, File pomFile, IOException cause ):
+        cflow( pbldr_readProject( projectId, pomFile ) )
+        && ioEx_handler( cause )
+    {
+        getReporter().reportErrorParsingProjectModel( projectId, pomFile, 
cause );
+    }
+
+    private pointcut mlbldr_resolveParentPom( ModelAndFile childInfo ):
+        execution( ModelAndFile DefaultModelLineageBuilder.resolveParentPom( 
ModelAndFile, .. ) )
+        && args( childInfo, .. );
+
+    private pointcut mlbldr_readModel( File pomFile ):
+        execution( * DefaultModelLineageBuilder.readModel( File ) )
+        && args( pomFile );
+
+    // 
=========================================================================
+    // Call Stack:
+    // 
=========================================================================
+    // ...
+    // --> DefaultModelLineageBuilder.buildModelLineage(..)
+    // --> DefaultModelLineageBuilder.resumeBuildingModelLineage(..)
+    //     --> DefaultModelLineageBuilder.resolveParentPom(..) (private)
+    //         [--> 
DefaultModelLineageBuilder.resolveParentWithRelativePath(..) (private)
+    //         --> DefaultModelLineageBuilder.readModel(..) (private)
+    //             --> thrown XmlPullParserException
+    // <---------- ProjectBuildingException
+    // 
=========================================================================
+    before( ModelAndFile childInfo, File parentPomFile, XmlPullParserException 
cause ):
+        cflow( mlbldr_resolveParentPom( childInfo ) )
+        && cflow( mlbldr_readModel( parentPomFile ) )
+        && xppEx_handler( cause )
+    {
+        getReporter().reportErrorParsingParentProjectModel( childInfo, 
parentPomFile, cause );
+    }
+
+    // 
=========================================================================
+    // Call Stack:
+    // 
=========================================================================
+    // ...
+    // --> DefaultModelLineageBuilder.buildModelLineage(..)
+    // --> DefaultModelLineageBuilder.resumeBuildingModelLineage(..)
+    //     --> DefaultModelLineageBuilder.resolveParentPom(..) (private)
+    //         [--> 
DefaultModelLineageBuilder.resolveParentWithRelativePath(..) (private)
+    //         --> DefaultModelLineageBuilder.readModel(..) (private)
+    //             --> thrown XmlPullParserException
+    // <---------- ProjectBuildingException
+    // 
=========================================================================
+    before( ModelAndFile childInfo, File parentPomFile, IOException cause ):
+        cflow( mlbldr_resolveParentPom( childInfo ) )
+        && cflow( mlbldr_readModel( parentPomFile ) )
+        && ioEx_handler( cause )
+    {
+        getReporter().reportErrorParsingParentProjectModel( childInfo, 
parentPomFile, cause );
+    }
+
+    private pointcut mlbldr_buildModelLineage():
+        execution( * DefaultModelLineageBuilder.buildModelLineage( .. ) );
+
+    // 
=========================================================================
+    // Call Stack:
+    // 
=========================================================================
+    // ...
+    // --> DefaultModelLineageBuilder.buildModelLineage(..)
+    //     --> DefaultModelLineageBuilder.readModel(..) (private)
+    //         --> thrown XmlPullParserException
+    // <------ ProjectBuildingException
+    // 
=========================================================================
+    before( File pomFile, XmlPullParserException cause ):
+        cflow( mlbldr_buildModelLineage() )
+        && !cflowbelow( mlbldr_buildModelLineage() )
+        && cflow( mlbldr_readModel( pomFile ) )
+        && xppEx_handler( cause )
+    {
+        getReporter().reportErrorParsingProjectModel( "unknown", pomFile, 
cause );
+    }
+
+    // 
=========================================================================
+    // Call Stack:
+    // 
=========================================================================
+    // ...
+    // --> DefaultModelLineageBuilder.buildModelLineage(..)
+    //     --> DefaultModelLineageBuilder.readModel(..) (private)
+    //         --> thrown XmlPullParserException
+    // <------ ProjectBuildingException
+    // 
=========================================================================
+    before( File pomFile, IOException cause ):
+        cflow( mlbldr_buildModelLineage() )
+        && !cflowbelow( mlbldr_buildModelLineage() )
+        && cflow( mlbldr_readModel( pomFile ) )
+        && ioEx_handler( cause )
+    {
+        getReporter().reportErrorParsingProjectModel( "unknown", pomFile, 
cause );
+    }
+}

Added: 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterManagerAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterManagerAspect.aj?rev=598864&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterManagerAspect.aj
 (added)
+++ 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterManagerAspect.aj
 Tue Nov 27 20:28:28 2007
@@ -0,0 +1,25 @@
+package org.apache.maven.project.aspect;
+
+import org.aspectj.lang.Aspects;
+
+import org.apache.maven.project.error.ProjectErrorReporter;
+
+public aspect ProjectReporterManagerAspect
+{
+
+    public void setReporter( ProjectErrorReporter reporter )
+    {
+        PBEDerivativeReporterAspect pbeDerivativeReporterAspect = 
(PBEDerivativeReporterAspect) Aspects.aspectOf( 
PBEDerivativeReporterAspect.class );
+        pbeDerivativeReporterAspect.setProjectErrorReporter( reporter );
+
+        ProfileErrorReporterAspect profileErrorReporterAspect = 
(ProfileErrorReporterAspect) Aspects.aspectOf( ProfileErrorReporterAspect.class 
);
+        profileErrorReporterAspect.setProjectErrorReporter( reporter );
+
+        ProjectIOErrorReporterAspect projectIOErrorReporterAspect = 
(ProjectIOErrorReporterAspect) Aspects.aspectOf( 
ProjectIOErrorReporterAspect.class );
+        projectIOErrorReporterAspect.setProjectErrorReporter( reporter );
+
+        ProjectArtifactErrorReporterAspect projectArtifactErrorReporterAspect 
= (ProjectArtifactErrorReporterAspect) Aspects.aspectOf( 
ProjectArtifactErrorReporterAspect.class );
+        projectArtifactErrorReporterAspect.setProjectErrorReporter( reporter );
+    }
+
+}

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java?rev=598864&r1=598863&r2=598864&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
 Tue Nov 27 20:28:28 2007
@@ -2,9 +2,14 @@
 
 import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.UnknownRepositoryLayoutException;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.AbstractArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DeploymentRepository;
 import org.apache.maven.model.Model;
+import org.apache.maven.model.Parent;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.Repository;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
@@ -14,6 +19,7 @@
 import org.apache.maven.project.InvalidProjectVersionException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+import org.apache.maven.project.build.model.ModelAndFile;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -338,7 +344,7 @@
     {
         writer.write( NEWLINE );
         writer.write( NEWLINE );
-        writer.write( "While applying profile to: " );
+        writer.write( "Project Id: " );
         writer.write( projectId );
         writer.write( NEWLINE );
         writer.write( "From file: " );
@@ -555,6 +561,232 @@
 
         addStandardInfo( project.getId(), pomFile, writer );
         addTips( ProjectErrorTips.getTipsForBadDependencySpec( project, 
pomFile, dep ),
+                 writer );
+
+        registerProjectBuildError( cause, writer.toString() );
+    }
+
+    public void reportErrorParsingProjectModel( String projectId,
+                                                File pomFile,
+                                                XmlPullParserException cause )
+    {
+        StringWriter writer = new StringWriter();
+
+        writer.write( NEWLINE );
+        if ( pomFile == null )
+        {
+            writer.write( "Error parsing built-in super POM!" );
+        }
+        else
+        {
+            writer.write( "Error parsing POM." );
+        }
+
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( cause.getMessage() );
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "Line: " );
+        writer.write( "" + ( cause ).getLineNumber() );
+        writer.write( NEWLINE );
+        writer.write( "Column: " );
+        writer.write( "" + ( cause ).getColumnNumber() );
+        writer.write( NEWLINE );
+
+        addStandardInfo( projectId, pomFile, writer );
+        addTips( ProjectErrorTips.getTipsForPomParsingError( projectId, 
pomFile, cause ),
+                 writer );
+
+        registerProjectBuildError( cause, writer.toString() );
+    }
+
+    public void reportErrorParsingParentProjectModel( ModelAndFile childInfo,
+                                                      File parentPomFile,
+                                                      XmlPullParserException 
cause )
+    {
+        StringWriter writer = new StringWriter();
+
+        writer.write( NEWLINE );
+        if ( parentPomFile == null )
+        {
+            writer.write( "Error parsing built-in super POM!" );
+        }
+        else
+        {
+            writer.write( "Error parsing parent-POM." );
+        }
+
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( cause.getMessage() );
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "Line: " );
+        writer.write( "" + cause.getLineNumber() );
+        writer.write( NEWLINE );
+        writer.write( "Column: " );
+        writer.write( "" + cause.getColumnNumber() );
+        writer.write( NEWLINE );
+
+        String projectId = childInfo.getModel().getParent().getId();
+        String childId = childInfo.getModel().getId();
+
+        addStandardInfo( projectId, parentPomFile, writer );
+
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "Child-Project Id: " );
+        writer.write( childId );
+
+        addTips( ProjectErrorTips.getTipsForPomParsingError( projectId, 
parentPomFile, cause ),
+                 writer );
+
+        registerProjectBuildError( cause, writer.toString() );
+    }
+
+    public void reportErrorParsingProjectModel( String projectId,
+                                                File pomFile,
+                                                IOException cause )
+    {
+        StringWriter writer = new StringWriter();
+
+        writer.write( NEWLINE );
+        if ( pomFile == null )
+        {
+            writer.write( "Error parsing built-in super POM!" );
+        }
+        else
+        {
+            writer.write( "Error parsing POM." );
+        }
+
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( cause.getMessage() );
+        writer.write( NEWLINE );
+
+        addStandardInfo( projectId, pomFile, writer );
+        addTips( ProjectErrorTips.getTipsForPomParsingError( projectId, 
pomFile, cause ),
+                 writer );
+
+        registerProjectBuildError( cause, writer.toString() );
+    }
+
+    public void reportErrorParsingParentProjectModel( ModelAndFile childInfo,
+                                                      File parentPomFile,
+                                                      IOException cause )
+    {
+        StringWriter writer = new StringWriter();
+
+        writer.write( NEWLINE );
+        if ( parentPomFile == null )
+        {
+            writer.write( "Error parsing built-in super POM!" );
+        }
+        else
+        {
+            writer.write( "Error parsing parent-POM." );
+        }
+
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( cause.getMessage() );
+        writer.write( NEWLINE );
+
+        String projectId = childInfo.getModel().getParent().getId();
+        String childId = childInfo.getModel().getId();
+
+        addStandardInfo( projectId, parentPomFile, writer );
+
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "Child-Project Id: " );
+        writer.write( childId );
+
+        addTips( ProjectErrorTips.getTipsForPomParsingError( projectId, 
parentPomFile, cause ),
+                 writer );
+
+        registerProjectBuildError( cause, writer.toString() );
+    }
+
+    public void reportParentPomArtifactNotFound( Parent parentRef,
+                                                 ArtifactRepository localRepo,
+                                                 List remoteRepos,
+                                                 String childId,
+                                                 File childPomFile,
+                                                 ArtifactNotFoundException 
cause )
+    {
+        reportArtifactError( parentRef, localRepo, remoteRepos, childId, 
childPomFile, cause );
+    }
+
+    public void reportParentPomArtifactUnresolvable( Parent parentRef,
+                                                     ArtifactRepository 
localRepo,
+                                                     List remoteRepos,
+                                                     String childId,
+                                                     File childPomFile,
+                                                     
ArtifactResolutionException cause )
+    {
+        reportArtifactError( parentRef, localRepo, remoteRepos, childId, 
childPomFile, cause );
+    }
+
+    private void reportArtifactError( Parent parentRef,
+                                      ArtifactRepository localRepo,
+                                      List remoteRepos,
+                                      String childId,
+                                      File childPomFile,
+                                      AbstractArtifactResolutionException 
cause )
+    {
+        StringWriter writer = new StringWriter();
+
+        writer.write( NEWLINE );
+        writer.write( "Failed to resolve parent-POM from repository." );
+
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "Parent POM Information: " );
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "Group-Id: " );
+        writer.write( parentRef.getGroupId() );
+        writer.write( NEWLINE );
+        writer.write( "Artifact-Id: " );
+        writer.write( parentRef.getArtifactId() );
+        writer.write( NEWLINE );
+        writer.write( "Version: " );
+        writer.write( parentRef.getVersion() );
+
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "Local Repository: " );
+        writer.write( localRepo.getBasedir() );
+
+        if ( ( remoteRepos != null ) && !remoteRepos.isEmpty() )
+        {
+            writer.write( NEWLINE );
+            writer.write( NEWLINE );
+            writer.write( "Remote Repositories: " );
+
+            for ( Iterator it = remoteRepos.iterator(); it.hasNext(); )
+            {
+                ArtifactRepository remoteRepo = (ArtifactRepository) it.next();
+                writer.write( NEWLINE );
+                writer.write( remoteRepo.getId() );
+                writer.write( " -> " );
+                writer.write( remoteRepo.getUrl() );
+                // TODO: Get mirrors!!
+            }
+        }
+
+
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "Reason: " );
+        writer.write( cause.getMessage() );
+        writer.write( NEWLINE );
+
+        addStandardInfo( childId, childPomFile, writer );
+        addTips( ProjectErrorTips.getTipsForPomParsingError( childId, 
childPomFile, cause ),
                  writer );
 
         registerProjectBuildError( cause, writer.toString() );

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java?rev=598864&r1=598863&r2=598864&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
 Tue Nov 27 20:28:28 2007
@@ -2,8 +2,12 @@
 
 import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.UnknownRepositoryLayoutException;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.model.DeploymentRepository;
 import org.apache.maven.model.Model;
+import org.apache.maven.model.Parent;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.Repository;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
@@ -13,12 +17,14 @@
 import org.apache.maven.project.InvalidProjectVersionException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+import org.apache.maven.project.build.model.ModelAndFile;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.List;
 
 public interface ProjectErrorReporter
 {
@@ -286,8 +292,8 @@
      * </pre>
      */
     void reportBadManagedDependencyVersion( MavenProject projectBeingBuilt,
-                                     File pomFile,
-                                     InvalidDependencyVersionException cause );
+                                            File pomFile,
+                                            InvalidDependencyVersionException 
cause );
 
     /**
      * <b>Call Stack:</b>
@@ -304,4 +310,107 @@
                                      File pomFile,
                                      InvalidDependencyVersionException cause );
 
+    /**
+     * <b>Call Stack:</b>
+     * <br/>
+     * <pre>
+     * ...
+     * --&gt; DefaultMavenProjectBuilder.buildFromRepository(..)
+     *     --&gt; DefaultMavenProjectBuilder.findModelFromRepository(..) 
(private)
+     * DefaultMavenProjectBuilder.build(..)
+     * --&gt; DefaultMavenProjectBuilder.buildFromSourceFileInternal(..) 
(private)
+     *     --&gt; DefaultMavenProjectBuilder.readModel(..) (private)
+     *         --&gt; thrown XmlPullParserException
+     * &lt;------ InvalidProjectModelException
+     * </pre>
+     */
+    void reportErrorParsingProjectModel( String projectId,
+                                         File pomFile,
+                                         XmlPullParserException cause );
+
+    /**
+     * <b>Call Stack:</b>
+     * <br/>
+     * <pre>
+     * ...
+     * --&gt; DefaultModelLineageBuilder.buildModelLineage(..)
+     *     --&gt; DefaultModelLineageBuilder.readModel(..) (private)
+     *         --&gt; thrown XmlPullParserException
+     * &lt;------ ProjectBuildingException
+     * </pre>
+     */
+    void reportErrorParsingParentProjectModel( ModelAndFile childInfo,
+                                               File parentPomFile,
+                                               XmlPullParserException cause );
+
+    /**
+     * <b>Call Stack:</b>
+     * <br/>
+     * <pre>
+     * ...
+     * --&gt; DefaultMavenProjectBuilder.buildFromRepository(..)
+     *     --&gt; DefaultMavenProjectBuilder.findModelFromRepository(..) 
(private)
+     * DefaultMavenProjectBuilder.build(..)
+     * --&gt; DefaultMavenProjectBuilder.buildFromSourceFileInternal(..) 
(private)
+     *     --&gt; DefaultMavenProjectBuilder.readModel(..) (private)
+     *         --&gt; thrown IOException
+     * &lt;------ InvalidProjectModelException
+     * </pre>
+     */
+    void reportErrorParsingProjectModel( String projectId,
+                                         File pomFile,
+                                         IOException cause );
+
+    /**
+     * <b>Call Stack:</b>
+     * <br/>
+     * <pre>
+     * ...
+     * --&gt; DefaultModelLineageBuilder.buildModelLineage(..)
+     *     --&gt; DefaultModelLineageBuilder.readModel(..) (private)
+     *         --&gt; thrown IOException
+     * &lt;------ ProjectBuildingException
+     * </pre>
+     */
+    void reportErrorParsingParentProjectModel( ModelAndFile childInfo,
+                                               File parentPomFile,
+                                               IOException cause );
+
+    /**
+     * <b>Call Stack:</b>
+     * <br/>
+     * <pre>
+     * ...
+     * --&gt; DefaultModelLineageBuilder.buildModelLineage(..)
+     *     --&gt; DefaultModelLineageBuilder.resolveParentPom(..) (private)
+     *         --&gt; 
DefaultModelLineageBuilder.resolveParentFromRepository(..) (private)
+     *             --&gt; thrown ArtifactNotFoundException
+     * &lt;---------- ProjectBuildingException
+     * </pre>
+     */
+    void reportParentPomArtifactNotFound( Parent parentRef,
+                                          ArtifactRepository localRepo,
+                                          List remoteRepos,
+                                          String childId,
+                                          File childPomFile,
+                                          ArtifactNotFoundException cause );
+
+    /**
+     * <b>Call Stack:</b>
+     * <br/>
+     * <pre>
+     * ...
+     * --&gt; DefaultModelLineageBuilder.buildModelLineage(..)
+     *     --&gt; DefaultModelLineageBuilder.resolveParentPom(..) (private)
+     *         --&gt; 
DefaultModelLineageBuilder.resolveParentFromRepository(..) (private)
+     *             --&gt; thrown ArtifactResolutionException
+     * &lt;---------- ProjectBuildingException
+     * </pre>
+     */
+    void reportParentPomArtifactUnresolvable( Parent parentRef,
+                                              ArtifactRepository localRepo,
+                                              List remoteRepos,
+                                              String childId,
+                                              File childPomFile,
+                                              ArtifactResolutionException 
cause );
 }

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorTips.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorTips.java?rev=598864&r1=598863&r2=598864&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorTips.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorTips.java
 Tue Nov 27 20:28:28 2007
@@ -159,4 +159,13 @@
         // TODO Auto-generated method stub
         return null;
     }
+
+    public static List getTipsForPomParsingError( String projectId,
+                                                  File pomFile,
+                                                  Exception cause )
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
 }


Reply via email to