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=603779&r1=603778&r2=603779&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
 Wed Dec 12 15:40:49 2007
@@ -11,7 +11,9 @@
 import org.apache.maven.lifecycle.LifecycleExecutionException;
 import org.apache.maven.project.error.ProjectReporterManager;
 import org.apache.maven.project.error.ProjectErrorReporter;
+import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.reactor.MavenExecutionException;
 
 public privileged aspect ErrorReportingAspect
 {
@@ -79,6 +81,51 @@
         }
     }
 
+    boolean around( DuplicateProjectException e, boolean showStackTraces, 
StringWriter writer ):
+        execution( private static boolean 
CLIReportingUtils.handleDuplicateProjectException( DuplicateProjectException, 
boolean, StringWriter ) )
+        && args( e, showStackTraces, writer )
+    {
+        ProjectErrorReporter projectErrorReporter = 
ProjectReporterManager.getReporter();
+
+        if ( projectErrorReporter == null )
+        {
+            return proceed( e, showStackTraces, writer );
+        }
+        else
+        {
+            Throwable reportingError = 
projectErrorReporter.findReportedException( e );
+
+            boolean result = false;
+
+            if ( reportingError != null )
+            {
+                writer.write( projectErrorReporter.getFormattedMessage( 
reportingError ) );
+
+                if ( showStackTraces )
+                {
+                    writer.write( CLIReportingUtils.NEWLINE );
+                    writer.write( CLIReportingUtils.NEWLINE );
+                    Throwable cause = projectErrorReporter.getRealCause( 
reportingError );
+                    if ( cause != null )
+                    {
+                        cause.printStackTrace( new PrintWriter( writer ) );
+                    }
+                }
+
+                writer.write( CLIReportingUtils.NEWLINE );
+                writer.write( CLIReportingUtils.NEWLINE );
+
+                result = true;
+            }
+            else
+            {
+                result = proceed( e, showStackTraces, writer );
+            }
+
+            return result;
+        }
+    }
+
     boolean around( BuildFailureException e, boolean showStackTraces, 
StringWriter writer ):
         execution( private static boolean 
CLIReportingUtils.handleBuildFailureException( BuildFailureException, boolean, 
StringWriter ) )
         && args( e, showStackTraces, writer )
@@ -169,4 +216,48 @@
         }
     }
 
+    boolean around( MavenExecutionException e, boolean showStackTraces, 
StringWriter writer ):
+        execution( private static boolean 
CLIReportingUtils.handleMavenExecutionException( MavenExecutionException, 
boolean, StringWriter ) )
+        && args( e, showStackTraces, writer )
+    {
+        CoreErrorReporter coreErrorReporter = 
CoreReporterManager.getReporter();
+
+        if ( coreErrorReporter == null )
+        {
+            return proceed( e, showStackTraces, writer );
+        }
+        else
+        {
+            Throwable reportingError = 
coreErrorReporter.findReportedException( e );
+
+            boolean result = false;
+
+            if ( reportingError != null )
+            {
+                writer.write( coreErrorReporter.getFormattedMessage( 
reportingError ) );
+
+                if ( showStackTraces )
+                {
+                    writer.write( CLIReportingUtils.NEWLINE );
+                    writer.write( CLIReportingUtils.NEWLINE );
+                    Throwable cause = coreErrorReporter.getRealCause( 
reportingError );
+                    if ( cause != null )
+                    {
+                        cause.printStackTrace( new PrintWriter( writer ) );
+                    }
+                }
+
+                writer.write( CLIReportingUtils.NEWLINE );
+                writer.write( CLIReportingUtils.NEWLINE );
+
+                result = true;
+            }
+            else
+            {
+                result = proceed( e, showStackTraces, writer );
+            }
+
+            return result;
+        }
+    }
 }

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=603779&r1=603778&r2=603779&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
 Wed Dec 12 15:40:49 2007
@@ -1,21 +1,18 @@
 package org.apache.maven.cli;
 
 import org.apache.maven.BuildFailureException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.embedder.MavenEmbedderConsoleLogger;
 import org.apache.maven.embedder.MavenEmbedderLogger;
 import org.apache.maven.execution.BuildFailure;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.execution.ReactorManager;
-import org.apache.maven.extension.ExtensionScanningException;
 import org.apache.maven.lifecycle.LifecycleExecutionException;
 import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.reactor.MavenExecutionException;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
@@ -279,69 +276,7 @@
                                                           boolean 
showStackTraces,
                                                           StringWriter writer )
     {
-
-        // 
=====================================================================
-        // Cases covered:
-        // 
=====================================================================
-        //
-        // MavenExecutionException(String, File, ProjectBuildingException)
-        // MavenExecutionException(String, ExtensionScanningException)
-        // MavenExecutionException(String, IOException)
-        //
-        // 
=====================================================================
-        // Cases left to cover:
-        // 
=====================================================================
-        //
-        // MavenExecutionException(String, ArtifactResolutionException)
-        // MavenExecutionException(String, File)
-
-        Throwable cause = e.getCause();
-        if ( cause != null )
-        {
-            if ( cause instanceof IOException )
-            {
-                writer.write( e.getMessage() );
-                writer.write( NEWLINE );
-
-                handleGenericException( cause, showStackTraces, writer );
-
-                return true;
-            }
-            else if ( cause instanceof ExtensionScanningException )
-            {
-                writer.write( "While scanning for build extensions:" );
-                writer.write( NEWLINE );
-                writer.write( NEWLINE );
-
-                Throwable nestedCause = cause.getCause();
-                if ( ( nestedCause != null ) && ( nestedCause instanceof 
ProjectBuildingException ) )
-                {
-                    return handleProjectBuildingException( 
(ProjectBuildingException) nestedCause,
-                                                           showStackTraces,
-                                                           writer );
-                }
-                else
-                {
-                    handleGenericException( cause, showStackTraces, writer );
-
-                    return true;
-                }
-            }
-            else if ( cause instanceof ProjectBuildingException )
-            {
-                return handleProjectBuildingException( 
(ProjectBuildingException) cause,
-                                                       showStackTraces,
-                                                       writer );
-            }
-            else if ( cause instanceof ArtifactResolutionException )
-            {
-
-            }
-        }
-        else
-        {
-
-        }
+        handleGenericException( e, showStackTraces, writer );
 
         if ( e.getPomFile() != null )
         {
@@ -360,26 +295,7 @@
                                                             boolean 
showStackTraces,
                                                             StringWriter 
writer )
     {
-        // 
=====================================================================
-        // Cases covered:
-        // 
=====================================================================
-        //
-        // DuplicateProjectException(String, File, File, String)
-
-        File existing = e.getExistingProjectFile();
-        File conflicting = e.getConflictingProjectFile();
-        String projectId = e.getProjectId();
-
-        writer.write( "Duplicated project detected." );
-        writer.write( NEWLINE );
-        writer.write( NEWLINE );
-        writer.write( "Project: " + projectId );
-        writer.write( NEWLINE );
-        writer.write( "File: " );
-        writer.write( existing.getAbsolutePath() );
-        writer.write( NEWLINE );
-        writer.write( "File: " );
-        writer.write( conflicting.getAbsolutePath() );
+        handleGenericException( e, showStackTraces, writer );
 
         return true;
     }
@@ -445,6 +361,7 @@
                                                         StringWriter writer )
     {
         handleGenericException( e, showStackTraces, writer );
+
         return true;
     }
 

Added: 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectCollisionReporterAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectCollisionReporterAspect.aj?rev=603779&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectCollisionReporterAspect.aj
 (added)
+++ 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectCollisionReporterAspect.aj
 Wed Dec 12 15:40:49 2007
@@ -0,0 +1,32 @@
+package org.apache.maven.project.aspect;
+
+import org.apache.maven.project.DuplicateProjectException;
+import org.apache.maven.project.ProjectSorter;
+
+import java.util.List;
+
+public aspect ProjectCollisionReporterAspect
+    extends AbstractProjectErrorReporterAspect
+{
+
+    /**
+     * <b>Call Stack:</b>
+     * <br/>
+     * <pre>
+     * MavenEmbedder.execute(MavenExecutionRequest)
+     * MavenEmbedder.readProjectWithDependencies(MavenExecutionRequest)
+     * --&gt; DefaultMaven.execute(MavenExecutionRequest)
+     *        --&gt; DefaultMaven.createReactorManager(MavenExecutionRequest, 
MavenExecutionResult)
+     *               --&gt; new ReactorManager(List, String)
+     *                      --&gt; new ProjectSorter(List)
+     * &lt;----------------------- DuplicateProjectException
+     * </pre>
+     */
+    after( List allProjectInstances ) throwing( DuplicateProjectException err 
):
+        execution( ProjectSorter.new( List ) )
+        && args( allProjectInstances )
+    {
+        getReporter().reportProjectCollision( allProjectInstances, err );
+    }
+
+}

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=603779&r1=603778&r2=603779&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
 Wed Dec 12 15:40:49 2007
@@ -15,6 +15,7 @@
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.profiles.activation.ProfileActivator;
+import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.InvalidProjectModelException;
 import org.apache.maven.project.InvalidProjectVersionException;
 import org.apache.maven.project.MavenProject;
@@ -790,5 +791,35 @@
                  writer );
 
         registerProjectBuildError( cause, writer.toString() );
+    }
+
+    public void reportProjectCollision( List allProjectInstances,
+                                        DuplicateProjectException err )
+    {
+
+        File existing = err.getExistingProjectFile();
+        File conflicting = err.getConflictingProjectFile();
+        String projectId = err.getProjectId();
+
+        StringWriter writer = new StringWriter();
+
+        writer.write( "Duplicated project detected." );
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "Project: " + projectId );
+        writer.write( NEWLINE );
+        writer.write( "File: " );
+        writer.write( String.valueOf( existing ) );
+        writer.write( NEWLINE );
+        writer.write( "File: " );
+        writer.write( String.valueOf( conflicting ) );
+        writer.write( NEWLINE );
+        writer.write( NEWLINE );
+        writer.write( "NOTE: Each project in a Maven build must have a unique 
combination of groupId and artifactId." );
+
+        addTips( ProjectErrorTips.getTipsForDuplicateProjectError( 
allProjectInstances, err ),
+                 writer );
+
+        registerProjectBuildError( err, 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=603779&r1=603778&r2=603779&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
 Wed Dec 12 15:40:49 2007
@@ -13,6 +13,7 @@
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.profiles.activation.ProfileActivator;
+import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.InvalidProjectModelException;
 import org.apache.maven.project.InvalidProjectVersionException;
 import org.apache.maven.project.MavenProject;
@@ -413,4 +414,20 @@
                                               String childId,
                                               File childPomFile,
                                               ArtifactResolutionException 
cause );
+
+    /**
+     * <b>Call Stack:</b>
+     * <br/>
+     * <pre>
+     * MavenEmbedder.execute(MavenExecutionRequest)
+     * MavenEmbedder.readProjectWithDependencies(MavenExecutionRequest)
+     * --&gt; DefaultMaven.execute(MavenExecutionRequest)
+     *        --&gt; DefaultMaven.createReactorManager(MavenExecutionRequest, 
MavenExecutionResult)
+     *               --&gt; new ReactorManager(List, String)
+     *                      --&gt; new ProjectSorter(List)
+     * &lt;----------------------- DuplicateProjectException
+     * </pre>
+     */
+    void reportProjectCollision( List allProjectInstances,
+                                 DuplicateProjectException err );
 }

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=603779&r1=603778&r2=603779&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
 Wed Dec 12 15:40:49 2007
@@ -8,6 +8,7 @@
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.profiles.activation.ProfileActivator;
+import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.InvalidProjectVersionException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
@@ -163,6 +164,13 @@
     public static List getTipsForPomParsingError( String projectId,
                                                   File pomFile,
                                                   Exception cause )
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public static List getTipsForDuplicateProjectError( List 
allProjectInstances,
+                                                        
DuplicateProjectException err )
     {
         // TODO Auto-generated method stub
         return null;


Reply via email to